본문 바로가기

Study records/Linux server hacking

안전한 DNS 서버 구축

 DNS(Domain Name System)는 www.naver.com과  같은 도메인을 네트워크 IP 주소로 변환해주는 프로토콜이다. DNS를 통해 복잡한 숫자로 된 주소 대신 사람이 이해하기 쉬운 도메인 형태의 주소로 통신이 가능하다. DNS는 DNS 서버를 통해 서비스되고, 내부에서만 사용하는 내부 DNS(Internal DNS)와 외부에서 접근이 가능한 외부 DNS(External DNS) 서버로 나뉜다. 

https://www.netmanias.com/

DNS 해킹은 DNS 서버 자체의 보안 취약점보다 DNS 프로토콜이 갖는 구조적 문제 때문에 네트워크상에서 주로 발생된다. DNS 해킹은 도메인 질의 과정에서 공격자가 질의 내용을 변조해 응답을 대신하여 정상 사이트가 아닌 악의적인 사이트로 리다이렉트 연결을 할 수 있다. 메일 서버의 경우에는 공격자의 메일 서버로 메일을 보낼 수 있다. 특히나 내부 DNS를 운영하는 경우라면 DNS 운영 시 주의가 필요하고, 인터넷 공유기를 사용하고 있는 경우라면 공유기 취약점을 이용해 DNS 주소 변경 등 공격할 수 있으므로 인터넷 공유기의 펌웨어를 업데이트하는 등의 보안조치가 필요하다. 

 

 

DNS 스푸핑 공격

DNS 스푸핑(spoofing) 공격은 DNS 프로토콜의 근본적인 취약점으로 인해 발생하는 문제로, DNS 스푸핑 공격을 하면 특정 질의에 대한 응답을 원하는 곳으로 연결하거나 또는 사이트에 접속하지 못하게 할 수도 있다. 정상적으로 구축된 DNS 서버가 있는 상태라도 DNS 스푸핑 공격으로 네트워크 사용자 PC의 DNS 캐시에 임의의 정보를 삽입하면 특정 사이트에 접속했을 때 공격자의 사이트로 접속하게 유도할 수 있다.

https://www.okta.com/kr/identity-101/dns-poisoning/

 

DNS 스푸핑은 DNS 서버의 문제라기보다는 ARP 스푸핑을 유발하는 악성 코드 등으로 인해 네트워크에 발생하는 경우가 많다. DNS 스푸핑 공격을 방어하려면 DNS 쿼리를 제한하거나 열린 포트로 DNS 요청이 되는 것은 거부해야 한다.

 

 

DNS 하이재킹

DNS 하이재킹은 도메인에 연결된 IP 주소를 무단으로 공격자의 IP 주소로 변경하는 것으로, 대표적으로 2017년에 일어난 아시아나항공 DNS 하이재킹 사건이 있다. DNS로 설정된 사회공학적 방법으로 도메인 관리자의 계정을 해킹하여 도메인에 설정된 DNS 정보를 변경할 수 있다.

 

 

안전한 DNS 서버 구축 

vi /etc/bind/named.conf #마지막줄 입력

 

모든 호스트에서 응답을 받을 수 있도록 allow-query 부분에 any를 추가하고, Slave DNS 서버 등을 만들 때 Slave 쪽에 zone 정보 등을 조회, 제공할 수 있도록 allow-transfer와 recursion 옵션도 추가한다.

vi /etc/bind/named.conf.options # 입력

 

DNS를 등록하기 위해 zone 파일을 추가한다. 정방향(도메인 -> IP 주소)와 역방향(IP 주소 -> 도메인)을 모두 지원하기 위해서 정방향  zone과 역방향 zone을 추가해야 한다.

vi /etc/bind/named.conf.external-zones

 

 

DNSSEC 설정

DNSSEC(DNS SECurity extension)은 DNS 캐시 포이즈닝(DNS Cache Poisoning) 공격을 대비하기 위해 상위 도메인에서 설정한 도메인이 위변조되었는지 확인해주는 보안 확장 표준 프로토콜이다. 적용 도메인에 대해 전자 서명을 하고, DNS 서버에서는 응답하는  DNS 데이터에 대해 전자 서명에 대한 검증을 실시하여 위변조를 확인할 수 있다.

DNSSEC을  사용하기 위해서는 각 zone별로 공개 키 방식의 서명 키가 필요하고, 이 키는 ZSH(Zone Signing Key)와 KSK(Key Signing Key)로 나눠진다. 

 

dnssec-keygen -3 -a [암호화 방식] -b [키 길이] -f [키 방식] [도메인]

KISA에서 권고하는 보안 정안 정책으로 ZSK는 키 길이 1024bit 이상, KSK는 2048bit 이상이고, 부재 인증 방식과 전자 서명 알고리즘은 NSEC3(-3 옵션), RSA/SHA-256이다.

 

vi /etc/bind/named.conf.external-zones

 

# r를 rw로 수정

vi /etc/apparmor.d/usr.sbin.named

 

apparmor 보안 정책 적용

 

 

DNS 해킹은 주로 직접적으로 DNS 서버를 해킹하기보다 네트워크 영역에서 주로 발생하기 때문에 DNS 서버를 운영하면서 내부 네트워크 사용자의 PC 웹 사이트 접속에 문제가 있다면 해당 단말기를 점검해야 한다. DNS 서버의 보안을 위해 KISA에서 제공하는 DNS 자가 점검 서비스 및 DNSSEC을 구축하여 운영하는 것을 권장하고, 간간히 DNS 서비스 데몬 관련 보안 취약점도 나타나고 있어 정기적으로 DNS 서버의 보안 패치도 병행해야 한다.