tcpdump란?
tcpdump
는 네트워크 인 터페이스를 통과하는 패킷들을 캡처하고 그 내용을 상세하게 출력해줍니다. tcpdump
를 사용하면 네트워크 문제를 진단하고, 트래픽 패턴을 분석하고, 보안 감사를 수행할 수 있습니다.
- 패킷 캡처 데이터는 종종 대용량일 수 있으므로, 적절한 필터링을 사용하여 관심 있는 트래픽만 캡처하는 것이 중요합니다. 또한, 패킷 분석을 위해
wireshark
와 같은 그래픽 인터페이스를 가진 도구로 tcpdump
가 생성한 .pcap
파일을 가져와 사용할 수도 있습니다.
주요 기능
- 네트워크 인터페이스 모니터링: 하나 이상의 네트워크 인터페이스를 지정하여 그 인터페이스를 통과하는 패킷을 캡처합니다.
- 필터링:
tcpdump
는 BPF(Berkeley Packet Filter) 식을 사용하여 캡처할 패킷을 세밀하게 필터링할 수 있습니다. 예를 들어, 특정 호스트, 포트, 프로토콜 등에 대한 트래픽만 캡처할 수 있습니다.
- 패킷 콘텐츠 분석: 캡처된 패킷의 내용을 콘솔에 출력하거나 파일로 저장하여 나중에 분석할 수 있습니다.
- 오프라인 분석: 이전에 저장된 패킷 덤프 파일을 읽어서 분석할 수 있습니다.
사용 방법
tcpdump # 모든 인터페이스에서 패킷 캡처 시작
tcpdump -i eth0 # 특정 인터페이스(예: eth0)에서 패킷 캡처
tcpdump host 192.168.1.1 # 특정 호스트의 트래픽만 캡처
tcpdump port 80 # 특정 포트(예: HTTP 포트 80) 관련 패킷 캡처
tcpdump icmp # 특정 프로토콜(예: ICMP) 관련 패킷 캡처
tcpdump -w filename.pcap # 패킷을 파일로 저장
tcpdump -r filename.pcap # 파일에서 패킷 읽기
tcpdump -vvv # 패킷 내용을 상세하게 출력
tcpdump -X # 패킷의 원시 내용을 포함하여 출력
주요 옵션
-i <interface>
: 특정 네트워크 인터페이스를 지정하여 그 인터페이스를 통과하는 패킷을 캡처합니다. <interface>
에는 네트워크 인터페이스의 이름이 들어갑니다 (예: eth0
, wlan0
). 인터페이스를 지정하지 않으면 tcpdump
는 시스템에서 활성화된 첫 번째 인터페이스를 선택합니다.
-w <file>
: 캡처한 패킷 데이터를 <file>
에 지정된 파일명으로 저장합니다. 이 파일은 .pcap
포맷으로 저장되며, 후에 tcpdump
나 Wireshark 같은 다른 패킷 분석 도구를 사용하여 분석할 수 있습니다.
-r <file>
: 이전에 tcpdump
를 사용하여 캡처하고 저장한 패킷 덤프 파일을 읽어들입니다.
-v
, -vv
, -vvv
: 각각 캡처한 패킷에 대한 정보의 상세도를 증가시킵니다. -v
는 보다 자세한 정보를, -vv
는 더 자세한 정보를, -vvv
는 가능한 가장 상세한 정보를 출력합니다.
-X
: 각 패킷의 페이로드를 16진수와 ASCII로 출력합니다. 이 옵션은 패킷의 내용을 자세히 살펴보고 싶을 때 유용합니다.
-c <count>
: <count>
에 지정된 숫자만큼 패킷을 캡처하고 그 후 tcpdump
를 종료합니다.
-s <size>
: 패킷 캡처 시에 각 패킷의 <size>
만큼의 데이터를 저장합니다. 기본적으로 tcpdump
는 패킷의 첫 68바이트만 캡처합니다. -s 0
옵션을 사용하면 모든 패킷 내용을 캡처합니다.
-A
: 각 패킷의 페이로드를 ASCII 문자로 출력합니다. 이는 주로 텍스트 기반 프로토콜의 분석에 유용합니다.