DNS 서버 취약점 보안 조치
ㅁ 공격 유형
DNS(UDP 53 Port) 서버 대상 도메인 무한 질의(query) 네트워크 공격
ㅁ 피해 범위
질의에 대한 응답 트래픽으로 추가 요금 발생
ㅁ 조치 방법
- 직접 조치 요령
1. DNS 서버로 운영하지 않는 경우
네임서버 데몬 중지
[리눅스]
# /etc/init.d/named stop
# chkconfig --level 12345 named off
[윈도우즈]
[시작] - [관리도구] - [서비스] 에서 'DNS Server' 우클릭 > 속성 > 서비스 상태를 '중지' 시킨 뒤,
시작 유형을 '사용 안함'으로 변경 > 확인
2. DNS 서버로 운영하는 경우
PC나 특정 서버의 네임서버로 사용되지 않을 때 recusion 설정 중지
[리눅스]
/etc/named.conf 파일의 options 에 recursion no; 설정후, 아래 명령으로 named 재시작
# /etc/init.d/named restart
[윈도우즈]
[시작] - [관리도구] - [DNS] 에서
좌측 트리구조 'DNS서버' 우클릭 > 속성 > [고급]탭에서 '재귀를 사용 안함' 체크 > 확인
1.
내 도메인 설정을 위한 DNS와 내부에서 사용할 caching name server가 따로 존재할 경우
외부에서의 query를 허가하고, recursion을 off 시킵니다. /var/named/etc/named.conf의 options block에서 다음의 설정을 변경 또는 추가 하십시오. 별도로 있는 caching name server는 3번째 case를 참조 하십시오.
options {
...
recursion no;
allow-query { any; };
...
};
2.
caching name server가 따로 존재하지 않을 경우
외부에서의 query를 허가하고, recursion을 할 수 있는 대역을 allow-recursion 옵션을 이용하여 설정 합니다.
먼저 allow-recursion에 사용할 RecursionAllow ACL group을 /var/named/etc/named.acl.conf에 생성 합니다.
acl LocalAllow {
127.0.0.1;
localhost;
};
acl RecursionAllow {
192.168.0.0/16;
111.112.113.128/25;
};
다음, named.conf의 options block에서 다음의 설정을 변경 또는 추가 합니다.
options {
...
recursion yes;
allow-query { any; };
allow-recursion { LocalAllow; RecursionAllow; };
...
};
3.
내부 전용 caching name server로 사용할 경우
내부에서의 query만 허가하고, recursion을 public 하게 설정 합니다.
먼저 /var/named/etc/named.acl.conf의 LocalAllow acl group에 query를 할 내부 대역을 추가해 줍니다.
acl LocalAllow {
127.0.0.1;
localhost;
192.168.0.0/16;
};
다음, named.conf의 options block에서 다음의 설정을 변경 또는 추가 합니다.
options {
...
recursion yes;
allow-query { LocalAllow; };
...
};
4.
public caching name server로 사용할 경우
외부에서의 query와 recursion을 모두 허가합니다. 이 경우에는 DNS 공격을 위하여 RPZ(Response Policy Zone)과 같이 공격을 방어하기 위한 기법들이 필요 합니다. 여기서는 따로 public caching name server 구성에 대해서는 따로 다루지는 않겠습니다.
named.conf의 options block에서 다음의 설정을 변경 또는 추가 합니다.
options {
...
recursion yes;
allow-query { any; };
...
};
recursion 정책 설정이 완료가 되면, 이제 bind는 기본적으로 정책에 따라 응답을 할 수 있는 상황이 됩니다.