작은숲:위키노트/Bind 설정
DNS 서버에 대한 DoS 공격에 대한 조치
악의적으로 DNS 서버에 무한 질의를 보내 DDoS 공격을 하는 사례가 많다. 이렇게 질의를 받게 되면 DNS 서버는 이에 응답해 지속적으로 결과값을 전송하게 된다. 이로 인해 급격한 트래픽이 발생하고 서버에 부하를 주게 되므로 이에 대한 조치가 필요하다.
DNS 서버를 사용하지 않는 경우
만약 DNS 서버를 사용하지 않을 때는 데몬을 중지시키고 부팅할 때도 가동되지 않도록 한다.
# /etc/init.d/named stop
# chkconfig -level 12345 named off
DNS 서버를 사용하는 경우
DNS 서버를 사용하는 경우에는 bind의 설정 파일인 /etc/named.conf를 수정해서 문제가 발생할 소지를 제거한다.
options {
...
allow-query { 127.0.0.1; ... };
//recursion yes;
recursion no;
...
};
만약 DNS 서버가 다른 PC나 호스트의 네임서버로 사용되지 않는다면, 현재 호스팅 중인 도메인에 대해서만 응답하도록 recursion 설정을 꺼둔다. DNS 서버가 로컬 호스트의 네임서버로 사용된다면 recursion 설정은 yes로 두고 allow-query 설정에 질의를 허용할 외부 DNS 서버와 로컬 호스트의 IP 주소를 등록한다.
이 정도까지만 해도 상당한 효과를 볼 수 있다. 조금 더 조치를 하자면 [[작은숲:위키노트/Iptables|Iptables]의 recent 모듈을 이용해 DNS 서버에 무리한 질의를 하는 IP를 차단하도록 한다. iptables 설정을 통해 DNS 서버에 대한 DoS 공격을 효과적으로 차단할 수 있다.
CentOS에서 bind IPv6 설정 제거하기
IPv4 환경의 서버에서 bind를 구동하게 되면 다음과 같은 오류 메시지가 /var/log/messages 파일에 쌓인다.
Jun 27 12:40:55 red named-sdb[1403]: error (network unreachable) resolving './NS/IN': 2001:503:c27::2:30#53
위의 오류는 IPv6 기반의 통신을 하지 못해서 루트 서버로의 접근을 못해서 발생하는 것으로 IPv4로만 동작하도록 설정하면 문제가 해결된다. /etc/named.conf 파일(chroot 설정이 되어있다면 /var/named/chroot/etc/named.conf)의 다음의 설정을 주석 처리한다.
// listen-on-v6 port 53 { ::1; };
이후에 /etc/sysconfig/named 의 마지막 줄에 다음을 추가한다.
OPTIONS="-4"
위의 설정은 IPv4 환경으로만 동작하게 하는 옵션이다. 반대로 -6로 설정할 경우 IPv6로만 동작한다. 서버를 재구동하고 로그를 확인해 보면 스팸 같이 쌓이던 로그가 더이상 쌓이지 않는 것을 확인할 수 있다.
# service named restart
같이 보기
참고
- http://idchowto.com/?p=1827 <archiveis>qDa8M</archiveis>
- http://blog.pages.kr/195 <archiveis>yvQq6</archiveis>
- http://ttend.tistory.com/203
- http://moyaria.tistory.com/entry/DNS-%EA%B3%B5%EA%B2%A9-%EB%A7%89%EA%B8%B0-error-sending-response-unexpected-eror
- https://kldp.org/node/134328
| 배포판 | |
|---|---|
| 서버 프로그램 | |
| 시스템 도구 | |
| 시스템 보안 | |
| 시스템 설정 | |
| HOWTO 문서 | |
| 사용자 설정 | |
| 활용 | |
| 명령어 | |