(1) tcpdump
데이터 패킷을 캡쳐 할 수 있고 모니터링 할 수 있음.

  - 특정 이더넷을 거쳐가는 모든 패킷의 헤더를 캡쳐
  - 특정 이더넷을 거쳐가는 모든 패킷 전체를 캡쳐
  - 이 시스템과 원격지의 대상 호스트 사이에 송수신 되는 패킷 헤더 혹은 전체 캡쳐
  - 이 시스템과 원격지 대상 호스트 간의 모든 패킷들가운데 특정 포트번호로 송수신되는 패킷 캡쳐
  - 패킷을 캡쳐 하여 특정 파일에 지정할수 있으며 저장(확장자 cap로 저장하여 wireshark로도 분석 가능)


(2) 명령어 및 사용방법

  tcpdump [option] [target]

  ex) tcpdump -X -i eth0 udp port 9968

※ 파일로 저장하기
  - tcpdump -s -i eth0 -w 파일명.cap
  - 캡쳐후 wireshark로 확인


(3) 옵션


 -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 : 각각의 패킷을 헥사코드로 출력한다.
 


(ex) 사용 예

1) tcpdump -i eth0 : 특정 랜포트에 대한 정보를 보여줌

... 생략

 

10:28:54.632573 IP 192.168.217.1.poweroncontact > 192.168.217.100.ssh: . ack 4239864 win 32532
10:28:54.632797 IP 192.168.217.100.ssh > 192.168.217.1.poweroncontact: P 4240356:4240616(260) ack 40041 win 1290
10:28:54.632856 IP 192.168.217.1.poweroncontact > 192.168.217.100.ssh: . ack 4240192 win 32450
10:28:54.633066 IP 192.168.217.100.ssh > 192.168.217.1.poweroncontact: P 4240616:4240876(260) ack 40041 win 1290
10:28:54.633184 IP 192.168.217.100.ssh > 192.168.217.1.poweroncontact: P 4240876:4241040(164) ack 40041 win 1290
10:28:54.633472 IP 192.168.217.100.ssh > 192.168.217.1.poweroncontact: P 4241040:4241204(164) ack 40041 win 1290
10:28:54.633597 IP 192.168.217.100.ssh > 192.168.217.1.poweroncontact: P 4241204:4241368(164) ack 40041 win 1290
10:28:54.634192 IP 192.168.217.100.ssh > 192.168.217.1.poweroncontact: P 4241368:4241532(164) ack 40041 win 1290
10:28:54.634743 IP 192.168.217.1.poweroncontact > 192.168.217.100.ssh: . ack 4240616 win 32768
10:28:54.634746 IP 192.168.217.1.poweroncontact > 192.168.217.100.ssh: . ack 4241040 win 32662
10:28:54.634748 IP 192.168.217.1.poweroncontact > 192.168.217.100.ssh: . ack 4241368 win 32580
10:28:54.635006 IP 192.168.217.100.ssh > 192.168.217.1.poweroncontact: P 4241532:4241696(164) ack 40041 win 1290
10:28:54.635595 IP 192.168.217.1.poweroncontact > 192.168.217.100.ssh: . ack 4241696 win 32498
10:28:54.635792 IP 192.168.217.100.ssh > 192.168.217.1.poweroncontact: P 4241696:4242036(340) ack 40041 win 1290
10:28:54.635907 IP 192.168.217.100.ssh > 192.168.217.1.poweroncontact: P 4242036:4242296(260) ack 40041 win 1290
10:28:54.636166 IP 192.168.217.100.ssh > 192.168.217.1.poweroncontact: P 4242296:4242460(164) ack 40041 win 1290
10:28:54.636280 IP 192.168.217.100.ssh > 192.168.217.1.poweroncontact: P 4242460:4242624(164) ack 40041 win 1290
10:28:54.636373 IP 192.168.217.100.ssh > 192.168.217.1.poweroncontact: P 4242624:4242740(116) ack 40041 win 1290
10:28:54.636792 IP 192.168.217.1.poweroncontact > 192.168.217.100.ssh: . ack 4242296 win 32768
10:28:54.637222 IP 192.168.217.1.poweroncontact > 192.168.217.100.ssh: . ack 4242624 win 32686
10:28:54.734627 IP 192.168.217.1.poweroncontact > 192.168.217.100.ssh: P 40041:40093(52) ack 4242740 win 32657
10:28:54.734875 IP 192.168.217.1.poweroncontact > 192.168.217.100.ssh: P 40093:40145(52) ack 4242740 win 32657
10:28:54.734991 IP 192.168.217.100.ssh > 192.168.217.1.poweroncontact: . ack 40145 win 1290
10:28:54.735082 IP 192.168.217.100.ssh > 192.168.217.1.poweroncontact: P 4242740:4242824(84) ack 40145 win 1290
10:28:54.735818 IP 192.168.217.100.ssh > 192.168.217.1.poweroncontact: P 4242824:4243292(468) ack 40145 win 1290
10:28:54.736559 IP 192.168.217.1.poweroncontact > 192.168.217.100.ssh: . ack 4243292 win 32519
10:28:54.7369310:28:54.995068 IP 192.168.217.100.ssh > 192.168.217.1.poweroncontact: P 4266872:4267148(276) ack 40405 win 1290
10:28:54.995563 IP 192.168.217.1.poweroncontact > 192.168.217.100.ssh: . ack 4267148 win 32569
10:28:54.996321 IP 192.168.217.1.poweroncontact > 192.168.217.100.ssh: P 40405:40457(52) ack 4267148 win 32569
10:28:54.996324 IP 192.168.217.1.poweroncontact > 192.168.217.100.ssh: P 40457:40509(52) ack 4267148 win 32569
10:28:54.996586 IP 192.168.217.100.ssh > 192.168.217.1.poweroncontact: . ack 40509 win 1290

30714 packets captured
30756 packets received by filter
37 packets dropped by kernel

 

2) tcpdump host 192.168.217.100 : 특정 ip주소에 대한 정보를 보여줌

 10:57:12.105742 IP 192.168.217.1.poweroncontact > 192.168.217.100.ssh: P 885:937(52) ack 103872 win 32679
10:57:12.105746 IP 192.168.217.1.poweroncontact > 192.168.217.100.ssh: P 937:989(52) ack 103872 win 32679
10:57:12.110355 IP 192.168.217.100.ssh > 192.168.217.1.poweroncontact: . ack 989 win 1290
10:57:12.112637 IP 192.168.217.100.ssh > 192.168.217.1.poweroncontact: P 104020:104392(372) ack 989 win 1290
10:57:12.112616 IP 192.168.217.1.poweroncontact > 192.168.217.100.ssh: P 989:1041(52) ack 104020 win 32642
10:57:12.113339 IP 192.168.217.100.ssh > 192.168.217.1.poweroncontact: P 104392:104748(356) ack 1041 win 1290

809 packets captured
814 packets received by filter
0 packets dropped by kernel

 

3) tcpdump -nn host 192.168.217.100 and port 22 : 특정 ip주소와 지정된 포트를 가지고 있는 프레임만 출력. -nn 옵션은 호스트이름과 서비스 이름을 변환하지 않고 결과값을 raw데이터로 출력. 

 10:51:05.282973 IP 192.168.217.100.22 > 192.168.217.1.3167: P 292656:292804(148) ack 2549 win 1290
10:51:05.285089 IP 192.168.217.1.3167 > 192.168.217.100.22: . ack 292804 win 32768
10:51:05.285238 IP 192.168.217.100.22 > 192.168.217.1.3167: P 292804:292952(148) ack 2549 win 1290
10:51:05.285491 IP 192.168.217.100.22 > 192.168.217.1.3167: P 292952:293180(228) ack 2549 win 1290
10:51:05.286318 IP 192.168.217.1.3167 > 192.168.217.100.22: . ack 293180 win 32674
10:51:05.288184 IP 192.168.217.100.22 > 192.168.217.1.3167: P 293180:293408(228) ack 2549 win 1290
10:51:05.290595 IP 192.168.217.100.225.571045 IP 192.168.217.1.3167 > 192.168.217.100.22: . ack 309732 win 32768
10:51:05.571402 IP 192.168.217.100.22 > 192.168.217.1.3167: P 309732:309880(148) ack 2705 win 1290
10:51:05.684723 IP 192.168.217.1.3167 > 192.168.217.100.22: . ack 309880 win 32731
10:51:05.696485 IP 192.168.217.1.3167 > 192.168.217.100.22: P 2705:2757(52) ack 309880 win 32731
10:51:05.696744 IP 192.168.217.1.3167 > 192.168.217.100.22: P 2757:2809(52) ack 309880 win 32731
10:51:05.697267 IP 192.168.217.100.22 > 192.168.217.1.3167: . ack 2809 win 1290
10:51:05.697736 IP 192.168.217.100.22 > 192.168.217.1.3167: P 309880:309996(116) ack 2809 win 1290
10:51:05.698359 IP 192.168.217.1.3167 > 192.168.217.100.22: P 2809:2913(104) ack 309996 win 32702
10:51:05.698517 IP 192.168.217.100.22 > 192.168.217.1.3167: P 309996:310496(500) ack 2913 win 1290

2499 packets captured
2503 packets received by filter
0 packets dropped by kernel

 

4) tcpdump -nnt host 192.168.217.100 and port 22 : -t 옵션은 시간에 관한 부분을 삭제 하고 출력

IP 192.168.217.100.22 > 192.168.217.1.3167: P 98980:99176(196) ack 833 win 1290
IP 192.168.217.100.22 > 192.168.217.1.3167: P 99176:99308(132) ack 833 win 1290
IP 192.168.217.1.3167 > 192.168.217.100.22: . ack 99308 win 32686
IP 192.168.217.100.22 > 192.168.217.1.3167: P 99308:99504(196) ack 833 win 1290
IP 192.168.217.100.22 > 192.168.217.1.3167: P 99504:99636(132) ack 833 win 1290
IP 192.168.217.100.22 > 192.168.217.1.3167: P 99636:99768(132) ack 833 win 1290
IP 192.168.217.1.3167 > 192.168.217.100.22: . ack 99636 win 32604
IP 192.168.217.100.22 > 192.168.217.1.3167: P 100816:100948(132) ack 833 win 1290
IP 192.168.217.1.3167 > 192.168.217.100.22: . ack 100948 win 32686
IP 192.168.217.1.3167 > 192.168.217.100.22: P 833:885(52) ack 100948 win 32686
IP 192.168.217.100.22 > 192.168.217.1.3167: P 100948:101224(276) ack 885 win 1290
IP 192.168.217.1.3167 > 192.168.217.100.22: P 885:937(52) ack 100948 win 32686
IP 192.168.217.100.22 > 192.168.217.1.3167: P 101224:101436(212) ack 937 win 1290

935 packets captured
940 packets received by filter
0 packets dropped by kernel


※ 출처 : http://cafe.naver.com/eitlinux.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=406

'L inux > Command' 카테고리의 다른 글

리눅스 계정 관리 (adduser, usermod, userdel)  (1) 2012.02.24
리눅스 prompt / hostname 변경  (0) 2011.11.17
리눅스에서 하드디스크 mount 하기  (0) 2011.11.17
CentOS 버전확인  (0) 2011.07.27
Linux USB 마운트  (1) 2011.07.13
by 민트앤라떼 2011. 10. 12. 18:19