1. 라이브러리 준비
libcap 라이브러리가 미리 설치되어있는지 확인 (기본적으로 centos 개발tool에 포함)
rpm -qa |grep libcap
2.설치
http://pkgs.repoforge.org/dnstop/
맞는 버전 확인후 wget으로 떙겨서 rpm설치
wget http://pkgs.repoforge.org/dnstop/dnstop-0.0.20080502-1.el5.rf.i386.rpm
rpm -Uvh dnstop-0.0.20080502-1.el5.rf.i386.rpm
3. 사용방법
실행하기
# dnstop -4 -l 3 eth0 Queries: 2 new, 17 total
Sources Count % -------------- --------- ------ 208.94.20.62 2 11.8 121.138.224.2 1 5.9 220.73.29.3 1 5.9 210.113.99.5 1 5.9 211.195.237.3 1 5.9 210.113.99.6 1 5.9 210.94.0.77 1 5.9 . . |
-4 : Ipv4 packet 만 보이기
-l : 도메인 레벨 3까지 보이기
eth0 : NIC eth0으로부터 오는 패킷만 캡쳐.
위 화면은 기본으로 IP와 count 만 보인다. 아래와 같이 레벨을 변경하면 좀 더 자세히 출력된다.
3) 레벨변경 및 기타옵션
1> 레벨변경 type 1
위와 같이 실행한 뒤 숫자 1에서 ~ 3까지 누르면 Query Name 부분이 바뀌면서 출력된다.
위에서 실행한 -l 3 옵션의 숫자 범위까지 적용된다. 만약 4를 줬으면 레벨 4까지 캡쳐가 되므로 4까지 적용이 된다.
2> 레벨변경 type 2
위와 같이 실행한 뒤 숫자 Shift + 1에서 ~ 3까지 누르면 Source IP가 보이고 Query Name 부분이 바뀌면서 출력된다.
위에서 실행한 -l 3 옵션의 숫자 범위까지 적용된다. 만약 4를 줬으면 레벨 4까지 캡쳐가 되므로 4까지 적용이 된다.
3> 필터옵션
dnstop은 3가지 필터 옵션을 제공한다.
① unknown-tlds
- kr, jp, com, net 등 등록되지 않은 최상위 코드에 대한 질의를 필터링한다.
명령어 : /usr/sbin/dnstop -4 -l 3 -f unknown-tlds eth0
위 와 같이 필터링 했을 때 출력되는 값은 메일 주소를 잘못 입력했거나 네트워크 설정의 오류로 인한것이므로
해당 서버의 네트워크 설정 등을 점검해야된다.
② A-for-A
- 도메인이 아닌 IP 주소에 대한 A record를 질의하는 것을 필터링
명령어 : /usr/sbin/dnstop -4 -l 3 -f A-for-A eth0
이 역시 잘못된 DNS 질의이므로 원인을 찾는다.
③ rfc1918-ptr
- rfc 1918에 정의된 사설 ip에 대한 PTR 질의를 필터링한다.
명령어 : /usr/sbin/dnstop -4 -l 3 -f rfc1918-ptr eth0
사설 IP에 대한 질의는 내부 네트워크 사이의 트래픽이므로 DNS와 같은 외부 네트워크에서 보이지 않아야 한다.
만약 출력값으로 보인다면 해당 소스 IP를 tcpdump로 패킷캡쳐를 하여 원인을 찾아본다.
예) tcpdump host 215.44.53.22
해결 방법으로는 각각의 서버에서 /etc/hosts 파일에 내부 IP를 등록해 두는 방법이 있다.
4> 기타옵션
ctrl + r : 출력 초기화
ctrl + x : 프로그램 종료
4) 질의 점검 하기
1> 과도한 질의
만약 접속이 많지 않은데도 특정 도메인에 대한 질의가 많다면 DNS에서 TTL 설정값이 너무 낮지는 않은지 확인
2> 비정상적인 특정 도메인 질의
sample.com.sample.com 또는 sample.com.localdomain 등의 경우
zone 파일에서 .을 입력하지 않았다거나 설정파일의 오류로 인해 발생하는 경우가 대부분이므로
tcpdump로 해당 질의의 소스 IP를 확인해햐 된다.
예) tcpdump host 215.44.53.22
n 맺음말 :
DNS 쿼리에 대한 패킷을 tcpdump를 이용하여 패킷 캡쳐하여 볼 수도 있다. 하지만 DNS 쿼리만 따로 뽑아서 직관적으로 보기엔 쉽지않다. DNSTOP은 이러한 점을 해소해 줄 수 있는 유틸리티로서 잘 활용한다면 실시간 DNS쿼리 상황, 비정상적인 트래픽 등을 쉽게 모니텅링을 할 수 있다.