OS/Linux

[linux] tcpdump

노루아부지 2019. 7. 27. 00:54

Tcpdump?

명령 줄에서 실행하는 일반적인 패킷 가로채기 소프트웨어. 사용자가 TCP/IP뿐 아니라,  컴퓨터에 부착된 네트워크를 통해 송수신되는 기타 패킷을 가로채고 표시할 수 있게 도와준다.

 

사용법

tcpdump [options] [expression] [host]

 

매개변수 ( option )

옵션 설명
-nn 출력 결과의 포트를 변환 없이 그대로 출력한다. 옵션을 적용하지 않으면 가장 대중적인 프로토콜로 보여준다. ex) 80 -> http, 443 -> https
-vvv 패킷의 모든 정보 (TTL 등을 보여준다. 단, 데이터는 볼 수 없다. Request Body, Response Body 등)
-A 패킷의 내용을 ASCII 형태로 출력한다. 데이터가 암호화 되지 않았다면, 데이터도 보여준다. (Request Body, Response Body 등)
-B 운영 체제가 캡처하는 버퍼 크기를 buffer_size로 바꾼다.
-c 주어진 수의 패킷을 받은 후 종료한다.
-C 패킷 정보를 저장하는 파일을 일정 크기로 갱신한다. 기본 단위는 MB
-d
컴파일된 packet-matching code를 사람이 읽을 수 있는 표준형으로 바꾼후 멈춘다.
-dd
packet-matching 코드를 C 프로그램의 일부로 표현한다.
-ddd
packet-matching 코드를 십진수로 표현한다.
-D
tcpdump가 패킷을 잡을 수 있는 시스템 상에 가능한 네트워크 인터페이스 목록을 출력한다. 각각의 네트워크 인터페이스에는 번호와 인터페이스 이름이 매겨져 있어야 하고 그에 해당하는 설명이 덧붙여져 있어야 한다. 이 기능은 tcpdump가 오래된 버전일 경우에 지원되지 않을 수 있다.
-e
링크 레벨 헤더를 각각 덤프라인에 출력한다.
-f
외부 IPv4 주소를 되도록 심볼(상징적)이 아닌 숫자로서 표현한다.
-F
파일을 필터식(filter expression)으로 입력한다. 추가적으로 명령창에 입력된 식은 무시된다.
-G 패킷 정보를 저장하는 파일을 일정 주기로 갱신한다. 기본 단위는 s (초)
-i 인터페이스를 정한다. 정해지지 않았으면 tcpdump는 시스템 인터페이스 목록에서 가장 낮은 숫자를 고른다.
-I 인터페이스를 "monitor mode"로 놓는다. 이는 IEEE 802.11 와이파이 인터페이스에서만 작동되고 몇몇 운영 체제에서만 지원된다.
-w 패킷 정보를 저장할 파일 (.pcap)을 지정한다. 와이어샤크 등으로 해당 파일을 분석할 수 있다.
-Z tcpdump를 실행시킬 권한을 설정해준다. 만약 패킷 저장을 위한 파일의 권한을 다른 사용자로 주고 싶다면 사용한다.
host 출발지, 목적지 관계 없이 해당 호스트 정보를 가진 패킷만 수집한다.
port 출발지, 목적지 관계 없이 해당 포트 정보를 가진 패킷만 수집한다.

 

Example

# tcpdump -i eth0 => 인터페이스 eth0 을 보여줌
# tcpdump -w tcpdump.log => 결과를 파일로 저장, txt 가 아닌 bin 형식으로 저장됨
# tcpdump -r tcpdump.log => 저장한 파일을 읽음
# tcpdump -i eth0 -c 10 => 카운터 10개만 보여줌
# tcpdump -i eth0 tcp port 80 => tcp 80 포트로 통신하는 패킷 보여줌
# tcpdump -i eth0 src 192.168.0.1 => source ip 가 192.168.0.1인 패킷 보여줌
# tcpdump -i eth0 dst 192.168.0.1 => destination ip 가 192.168.0.1인 패킷 보여줌

* and 옵션으로 여러가지 조건의 조합 가능
# tcpdump -i eth0 src 192.168.0.1 and tcp port 80 => source ip 가 192.168.0.1이면서 tcp port 80 인 패킷 보여줌

# tcpdump -i eth0 dst 192.168.0.1 => dest ip 가 192.168.0.1인 패킷 보여줌
# tcpdump host 192.168.0.1 => host 를 지정하면, 이 ip 로 들어오거가 나가는 양방향 패킷 모두 보여줌
# tcpdump src 192.168.0.1 => host 중에서 src 가 192.168.0.1인것 만 지정
# tcpdump dst 192.168.0.1 => host 중에서 dst 가 192.168.0.1인것 만 지정
# tcpdump net 192.168.0.1/24 => CIDR 포맷으로 지정할 수 있다.
# tcpdump tcp => TCP 인것만
# tcpdump udp => UDP 인것만
# tcpdump port 3389 => 포트 양뱡항으로 3389인 것.
# tcpdump src port 3389 => src 포트가 3389인 것.
# tcpdump dst port 3389 => dst 포트가 3389인 것.

* combine : and ( && ) , or ( || ) , not ( ! ) 으로 여러가지를 조합해서 사용 가능
# tcpdump udp and src port 53 => UDP 이고 src 포트가 53 인 것
# tcpdump src x.x.x.x and not dst port 22 => src ip 가 x.x.x.x 이고 dst 포트가 22 가 아닌 것

 

 

 

 

 

[참고]

https://ko.wikipedia.org/wiki/Tcpdump

https://jojoldu.tistory.com/316

http://www.loelab.com/tcpdump-%EC%82%AC%EC%9A%A9%EB%B2%95/

728x90

'OS > Linux' 카테고리의 다른 글

bin sh if  (0) 2019.07.27
libconfig comfile and install  (0) 2019.07.27
linux 사용자, 사용자 그룹  (0) 2019.07.26
[linux] rsync 원격백업 설정  (0) 2019.07.26
debian ip config  (0) 2019.07.26
loading