[네트워크] Tcpdump 의 사용옵션들..

Tcpdump의 옵션들

   -a : Network & Broadcast 주소들을 이름들로 바꾼다.

   -c Number : 제시된 수의 패킷을 받은 후 종료한다.

   -d : comile된 packet-matching code를 사람이 읽을 수 있도록 바꾸어 표준 출력으로

       출력하고, 종료한다.

   -dd : packet-matching code를 C program의 일부로 출력한다.

   -ddd : packet-matching code를 숫자로 출력한다.

   -e : 출력되는 각각의 행에 대해서 link-level 헤더를 출력한다.

   -f : 외부의 internet address를 가급적 심볼로 출력한다(Sun의 yp server와의 사용은

         가급적 피하자).

   -F file : filter 표현의 입력으로 파일을 받아들인다. 커맨드라인에 주어진 추가의 표현들은

     모두 무시된다.

   -i device : 어느 인터페이스를 경유하는 패킷들을 잡을지 지정한다. 지저되지 않으면

     시스템의 인터페이스 리스트를 뒤져서 가장 낮은 번호를

     가진 인터페이스를 선택한다(이 때 loopback은 제외된다).

   -l : 표준 출력으로 나가는 데이터들을 line buffering한다. 다른 프로그램에서

       tcpdump로부터 데이터를 받고자 할 때, 유용하다.

   -n : 모든 주소들을 번역하지 않는다(port,host address 등등)

   -N : 호스트 이름을 출력할 때, 도메인을 찍지 않는다.

   -O : packet-matching code optimizer를 실행하지 않는다. 이 옵션은 optimizer에

         있는 버그를 찾을 때나 쓰인다.

   -p : 인터페이스를 promiscuous mode로 두지 않는다.

   -q : 프로토콜에 대한 정보를 덜 출력한다. 따라서 출력되는 라인이 좀 더 짧아진다.

   -r file : 패킷들을 ‘-w’옵션으로 만들어진 파일로 부터 읽어 들인다. 파일에 “-” 가 사용되면

         표준 입력을 통해서 받아들인다.

   -s length: 패킷들로부터 추출하는 샘플을 default값인 68Byte외의 값으로 설정할 때

         사용한다(SunOS의 NIT에서는 최소가 96Byte이다). 68Byte는

         IP,ICMP, TCP, UDP등에 적절한 값이지만 Name Server나 NFS 패킷들의 경우에는

         프로토콜의 정보들을 Truncation할 우려가 있다. 이 옵션을 수정할

         때는 신중해야만 한다. 이유는 샘플 사이즈를 크게 잡으면 곧 패킷 하나하나를 처리하는데

         시간이 더 걸릴 뿐만아니라 패킷 버퍼의 사이즈도

         자연히 작아지게 되어 손실되는 패킷들이 발생할 수 있기 때문이다. 또, 작게 잡으면

         그만큼의 정보를 잃게되는 것이다. 따라서 가급적

         캡춰하고자 하는 프로토콜의 헤더 사이즈에 가깝게 잡아주어야 한다.

   -T type : 조건식에 의해 선택된 패킷들을 명시된 형식으로 표시한다. type에는 다음과

         같은 것들이 올 수 있다. rpc(Remote Procedure Call),

         rtp(Real-Time Applications protocol), rtcp(Real-Time Application control

         protocal), vat(Visual Audio Tool), wb(distributed White Board)

   -S : TCP sequence번호를 상대적인 번호가 아닌 절대적인 번호로 출력한다.

   -t : 출력되는 각각의 라인에 시간을 출력하지 않는다.

   -tt : 출력되는 각각의 라인에 형식이 없는 시간들을 출력한다.

   -v : 좀 더 많은 정보들을 출력한다.

   -vv : ‘-v’보다 좀 더 많은 정보들을 출력한다.

   -w : 캡춰한 패킷들을 분석해서 출력하는 대신에 그대로 파일에 저장한다.

   -x : 각각의 패킷을 헥사코드로 출력한다.

  Tcpdump의 사용 예제들

   security라는 호스트로부터 날아오고, 날아가는 패킷들을 출력

   # tcpdump host security

   security와 mazinga, getarobo 사이에 날아다니고 있는 패킷들을 출력

   # tcpdump host security and \\( mazinga or getarobo \\)

   security에서 elgaim을 제외한 모든 호스트로 날아다니는 IP 패킷들을 출력

   # tcpdump ip host security and not elgaim

   gateway amurorei를 거치는 ftp에 관련된 패킷들을 출력

   # tcpdump ‘gateway amurorei and ( port ftp or ftp-data )’

    local호스트가 아닌 호스트와 로컬호스트가 맺는 TCP 커넥션의 시작과 마지막 패 킷들을

    출력한다(SYN, FIN 패킷).

   # tcpdump ‘tcp[13] & 3 != 0 and not src and dst net non-local’

   gateway amurorei를 지나는 576Byte보다 큰 패킷들을 출력한다

   # tcpdump ‘gateway amurorei and ip[2:2] > 576’

    Ethernet boradcast 혹은 multicast를 통해서 보내진 것이 아닌, IP broadcast 혹 은

    multicast 패킷들을 출력한다.

   # tcpdump ‘ehter[0] & 1 = 0 and ip[16] >= 224’

   Echo request/reply가 아닌 ICMP 패킷들을 모두 출력한다.

   # tcpdump ‘icmp[0] != 8 and icmp[0] != 0’

Tcpdump의 평가

TCPDUMP는 여러모로 좋은 툴이다. libpcap을 거의 100% 활용한 프로그램의 예이며,

실제로 많은 툴들이 TCPDUMP와 병행하여 돌아가거나,

TCPDUMP를 기반으로 제작되었다. TCPDUMP의 막강한 packet filter는 현재 로컬

네트워크 상에서 날아다니고 있는 특정한 패킷들을 실시간으로 기록해

줄 수 있으며, 이를 이용하여 네트워크에서 벌어지는 일들을 네트워크 관리자가 원하는 대로 뽑아

볼 수 있게 해 준다. 또한, 시스템 관리자들에게는

로컬 유저의 외부로의 커넥션들을 감시하고, 또 특정 침입자가 침투 경로로 자주 이용하는 호스트,

혹은 원하지 않는 호스트로부터의 커넥션을

실시간으로 감시할 수 있게 해 준다. libpcap을 이용하여 비슷한 툴을 제작하고자 하는

사람들에게도 TCPDUMP는 가장 훌륭한 예제가 될 것이다.

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.