리눅스 분류
dnstop : DNS 트래픽 분석 도구
작성자 정보
- 웹관리자 작성
- 작성일
컨텐츠 정보
- 8,050 조회
- 0 추천
- 목록
본문
dnstop : DNS 트래픽 분석 도구
작성자 : 에스유
작성일 : 2014.04.25(금)
대상 OS : SULinux Server 2014 64Bit
리눅스 서버는 아주 많은 용도로 사용된다. 그중에서 DNS서버 전용으로 사용하거나, DNS서비스를 올려 사용한다면, dnstop은 필수 유틸리티 이다. dnstop은 SSH등을 이용하여 서버에 터미널로 접속하여 볼 수 있는 TUI 프로그램이다. dnstop은 실시간으로 패킷을 분석하여 DNS관련 패킷을 우리가 알아보기 편리하게 통계를 내어 준다. 본 강좌의 스크린샷을 보면 그 용도를 알 수 있을 것이다.
다음과 같은 방식으로 보여준다.
- 소스 IP, 목적지 IP주소 통계
- 쿼리유형
- 응답코드
- Opcodes
- 최상위 도메인에서 2, 3, 4번째 수준의 도메인
- IPv4, IPv6 모두 지원
- DNS필터 제공
* unknown/invalid TLD(최상위 도메인)
* 쿼리이름으로 IP를 사용하는 경우
* RFC1918 주소공간에 대한 PTR 쿼리
* REUSED 응답
- dnstop은 tcpdump로 저장된 파일 또한 분석 할수 있다.
꼭 필요한 기능을 아주 빠르게 제공한다. 필자는 주 네임서버 및 캐싱 네임서버에 dnstop을 설치하고, 아주 많은 도움을 받고 있다. dnstop 설치부터 하나 하나 살펴보도록 하자.
1. dnstop 설치
dnstop 20080502 버전은 RHEL/CentOS 6에 기본이 아닌 3rd party 저장소에서 제공한다. 조금 오래된 배포판의 경우 최신버전의 패키지를 구하기 어려우니 컴파일 하여 설치하는 방법을 알아보자.
참고로 SULinux 2014버전에는 "yum install dnstop" 을 통해 최신버전(20121017)을 설치 할 수 있다.
1.1. 소스 다운로드
이렇게 좋은 소프트웨어를 사용하려 한다면, 한번쯤 배포하는 사이트에 방문하는 예의라고 생각한다.
최신 버전의 기능 또한 확인도 하고..
배포사이트 : http://dns.measurement-factory.com/tools/dnstop/
위 사이트에서 최신버전의 소스코드를 다운로드 한다.
2014.04.25 기준 20121017이 최신이다.
1.2. 압축해제 및 일반적인 설치
tar xvfp dnstop-20121017.tar.gz
cd dnstop-20121017
./configure
make && make install
* 만약 pcap.h 관련 오류가 난다면, libpcap-devel 패키지를 설치 한 다음 실행한다.
2. dnstop 사용
위와 같이 설치하였다면 터미널 창에서 다음과 같이 입력한다.
dnstop
usage: dnstop [opts] netdevice|savefile
-4 Count IPv4 packets
-6 Count IPv6 packets
-Q Count queries
-R Count responses
-a Anonymize IP Addrs
-b expr BPF program code
-i addr Ignore this source IP address
-n name Count only messages in this domain
-p Don't put interface in promiscuous mode
-P Print "progress" messages in non-interactive mode
-r Redraw interval, in seconds
-l N Enable domain stats up to N components
-X Don't tabulate the "source + query name" stats
-f filter-name
Available filters:
unknown-tlds
A-for-A
rfc1918-ptr
refused
qtype-any
위와 같이 설명 페이지가 나타날 것이다.
여러가지 옵션들이 있으며 의미는 다음과 같다.
-4 : IPv4 패킷만 카운터 (2014년 지금까지 대부분 IPv4를 사용하니 이 옵션을 사용한다.)
-6 : IPv6 패킷만 카운터(2014년 지금은 IPv6이 거의 사용되지 않는다.)
-Q : DNS 쿼리 메시지만 카운터
-R : DNS 응답 메시지만 카운터
-a : 주소를 익명으로 한다.
-b expr : BPF 필터 표현식 (기본 : udp port 53)
-i addr : 명시한 IP addr는 제외한다.
-n name : 명시한 도메인만 카운터
-p : promiscuous mode 로 들어가지 않는다. (서버의 패킷만 보며, 다른 서버의 패킷을 관찰하지 않는다.)
-P : 비대화형 모드에서 진행상황 메시지를 보여준다.
-r : 새로 그릴 시간(초, 기본 1초)
-l N : 도메인을 보여줄 레벨을 설정한다. 1은 TLD이고 보통 3을 설정한다.)
-X : 소스IP와 쿼리를 같이 보여주는 모드를 off 한다. (메모리 절약을 위해)
-f : 입력 필터 이름
* 사용가능한 필터는 다음과 같다.
unknown-tlds : unknown/invalid TLD(최상위 도메인)
A-for-A : 쿼리이름으로 IP를 사용하는 경우
rfc1918-ptr : RFC1918 주소공간에 대한 PTR 쿼리
refused : REUSED 응답
qtype-any : 쿼리 타입이 ANY인 경우
1. dnstop 기본 화면
dnstop etho -p -l 3
라고 입력한다. 위 옵션을 가장 많이 사용하게 되며, 나머지는 쓸일이 별로 없다.
/root/.bashrc 파일에
alias dnstop='dnstop eth0 -p -l 3'
라고 명시하면 dnstop을 보다 쉽게 사용할 수있다.
어떤 IP에서 많이 들어오는지 통계를 보여준다.
위 그림에서 제공되는 여러 키들이 있다.
s : Source IP 기준 카운터를 한다.(명령어 실행시 처음 보여지는 화면이다.)
d : Destination IP 기준 카운터
t : 쿼리 타입 기준으로 카운터
r : 응답코드 기준으로 카운터
o : opcodes 기준으로 카운터
1 : TLD(Top Level Domain) 기준으로 카운터 , 소스까지 보기 위해서는 !
2 : SLD(Second Level Domain)기준으로 카운터, 소스까지 보기 위해서는 @
3 : 3번째 레벨 기준 카운터, 소스까지 보기 위해서는 #
4 : 4번째 레벨 기준 카운터, 소스까지 보기 위해서는 $
5 : 5번째 레벨 기준 카운터, 소스까지 보기 위해서는 %
6 : 6번째 레벨 기준 카운터, 소스까지 보기 위해서는 ^
7 : 7번째 레벨 기준 카운터, 소스까지 보기 위해서는 &
8 : 8번째 레벨 기준 카운터, 소스까지 보기 위해서는 *
9 : 9번째 레벨 기준 카운터, 소스까지 보기 위해서는 (
^R : 카운터 리셋
^X : 프로그램 종료
space : 다시 그리기
? : 도움말
"t"키를 누르면 쿼리타입 기준으로 카운터 한다.
"r"키를 눌러 응답코드 기준으로 카운터 한다.
"1"키를 눌러 최상위 도메인 기준으로 카운터를 한다.
"2"키를 누르면 두번째 도메인까지 기준으로 카운터 한다.
"@"키를 눌러 SLD 및 Source IP기준으로 카운터를 한다.
이상으로 dnstop에 대한 강좌를 마무리 합니다. dnstop은 DNS 서버의 쿼리를 분석하기에 아주 좋은 유틸리티입니다. 강좌의 설명에 있어 오타가 있거나, 내용이 다른 부분이 있으면 언제든지 service@linux.kr으로 신고 해 주시기 바랍니다. 오래전 부터 많이 사용해 왔지만, 아직 모르는 사람들을 위해 시간을 내어 봅니다. - doly
"무단배포금지: 클라우드포털(www.linux.co.kr)의 모든 강좌는 저작권에 의해 보호되는 콘텐츠입니다. 무단으로 복제하여 배포하는 행위는 금지되어 있습니다."
관련자료
-
이전
-
다음
댓글 0
등록된 댓글이 없습니다.