Tcpdump를 사용하여 예제를 통해 패킷을 캡처하고 분석하는 방법

Tcpdumpleul Sayonghayeo Yejeleul Tonghae Paekis Eul Kaebcheohago Bunseoghaneun Bangbeob



Tcpdump는 Linux 시스템 및 macOS에서 네트워크 트래픽 분석에 사용되는 강력한 네트워크 분석 도구입니다. 네트워크 관리자는 네트워크 스니핑, 캡처 및 TCP/IP 패킷 분석을 위해 tcpdump를 사용합니다. 네트워크 트래픽을 효율적으로 캡처하는 데 도움이 되는 'libpcap' 라이브러리를 사용합니다. 또한 tcpdump는 네트워크 문제를 해결하고 네트워크 활동을 주기적으로 모니터링하는 데 도움이 됩니다. 이 도구는 캡처된 데이터를 'pcap' 파일에 저장합니다. 이러한 파일은 Wireshark와 같은 TCP/IP 패킷 분석기 도구나 다른 명령줄 도구를 통해 추가로 분석됩니다.

이 가이드에서는 Linux 시스템에 tcpdump를 설치하는 방법과 tcpdump를 사용하여 TCP/IP 패킷을 캡처하고 분석하는 방법을 보여줍니다.

Tcpdump를 설치하는 방법

Tcpdump는 많은 Linux 배포판에 사전 설치되어 있습니다. 그러나 시스템에 아직 설치되어 있지 않은 경우 Linux 시스템에 tcpdump를 설치할 수 있습니다. Ubuntu 22.04 시스템에 tcpdump를 설치하려면 다음 명령을 사용하십시오.







$ sudo apt 설치 tcpdump

Fedora/CentOS에 tcpdump를 설치하려면 다음 명령을 사용하십시오.



$ sudo dnf 설치 tcpdump

Tcpdump 명령을 사용하여 패킷을 캡처하는 방법

tcpdump로 패킷을 캡처하려면 “Ctrl+Alt+t”를 사용하여 sudo 권한으로 터미널을 시작하세요. 이 도구에는 TCP/IP 패킷을 캡처하기 위한 다양한 옵션과 필터가 포함되어 있습니다. 현재 또는 기본 네트워크 인터페이스의 모든 흐름 패킷을 캡처하려면 옵션 없이 'tcpdump' 명령을 사용하십시오.



$ sudo tcpdump

주어진 명령은 시스템의 기본 네트워크 인터페이스의 패킷을 캡처합니다.





이 명령 실행이 끝나면 캡처되고 필터링된 모든 패킷 수가 터미널에 표시됩니다.



출력을 이해해 봅시다.

Tcpdump를 사용하면 TCP/IP 패킷 헤더를 분석할 수 있습니다. 각 패킷에 대해 한 줄이 표시되며 'Ctrl+C'를 눌러 중지할 때까지 명령이 계속 실행됩니다.

tcpdump가 제공하는 각 줄에는 다음 세부 정보가 포함되어 있습니다.

  • Unix 타임스탬프(예: 02:28:57.839523)
  • 프로토콜(IP)
  • 소스 호스트 이름 또는 IP 및 포트 번호
  • 대상 호스트 이름 또는 IP 및 포트 번호
  • S(SYN), F(FIN)와 같은 값으로 연결 상태를 나타내는 TCP 플래그(예: 플래그 [F.]). (ACK), P(PUSH), R(RST)
  • 패킷에 있는 데이터의 시퀀스 번호(예: seq 5829:6820)
  • 승인 번호(예: ack 1016)
  • 수신 버퍼에서 사용 가능한 바이트와 TCP 옵션을 나타내는 창 크기(예: win 65535)
  • 데이터 페이로드의 길이(예: 길이 991)

시스템의 모든 네트워크 인터페이스 목록을 나열하려면 '-D' 옵션과 함께 'tcpdump' 명령을 사용하십시오.

$ sudo tcpdump -D

또는

$ tcpdump --list-인터페이스

이 명령은 Linux 시스템에 연결되어 있거나 실행 중인 모든 네트워크 인터페이스를 나열합니다.

지정된 네트워크 인터페이스의 패킷 캡처

특정 인터페이스를 통과하는 TCP/IP 패킷을 캡처하려면 'tcpdump' 명령과 함께 '-i' 플래그를 사용하고 네트워크 인터페이스 이름을 지정합니다.

$ sudo tcpdump -i lo

주어진 명령은 'lo' 인터페이스에서 트래픽을 캡처합니다. 패킷에 대한 자세한 정보 또는 자세한 정보를 표시하려면 '-v' 플래그를 사용하십시오. 보다 포괄적인 세부 정보를 인쇄하려면 'tcpdump' 명령과 함께 '-vv' 플래그를 사용하십시오. 정기적인 사용과 분석은 강력하고 안전한 네트워크 환경을 유지하는 데 도움이 됩니다.

마찬가지로 다음 명령을 사용하여 모든 인터페이스에서 트래픽을 캡처할 수 있습니다.

$ sudo tcpdump -i 모든

특정 포트를 사용하여 패킷 캡처

인터페이스 이름과 포트 번호를 지정하여 패킷을 캡처하고 필터링할 수 있습니다. 예를 들어, 포트 22를 사용하여 'enp0s3' 인터페이스를 통과하는 네트워크 패킷을 캡처하려면 다음 명령을 사용합니다.

$ tcpdump -i enp0s3 포트 22

이전 명령은 'enp0s3' 인터페이스에서 흐르는 모든 패킷을 캡처합니다.

Tcpdump로 제한된 패킷 캡처

'tcpdump' 명령과 함께 '-c' 플래그를 사용하여 지정된 수의 패킷을 캡처할 수 있습니다. 예를 들어 'enp0s3' 인터페이스에서 4개의 패킷을 캡처하려면 다음 명령을 사용합니다.

$ tcpdump -i enp0s3 -c 4

시스템을 사용하여 인터페이스 이름을 바꾸십시오.

네트워크 트래픽을 캡처하는 데 유용한 Tcpdump 명령

다음에는 네트워크 트래픽이나 패킷을 효율적으로 캡처하고 필터링하는 데 도움이 되는 몇 가지 유용한 'tcpdump' 명령이 나열되어 있습니다.

'tcpdump' 명령을 사용하면 정의된 대상 IP 또는 소스 IP를 사용하여 인터페이스의 패킷을 캡처할 수 있습니다.

$ tcpdump -i {인터페이스 이름} dst {대상 IP}

기본 크기인 262144바이트와 다른 65535바이트의 스냅샷 크기로 패킷을 캡처할 수 있습니다. 이전 버전의 tcpdump에서는 캡처 크기가 68 또는 96바이트로 제한되었습니다.

$ tcpdump -i enp0s3 -s 65535

캡처된 패킷을 파일에 저장하는 방법

추가 분석을 위해 캡처된 데이터를 파일에 저장하려는 경우 그렇게 할 수 있습니다. 지정된 인터페이스에서 트래픽을 캡처한 다음 '.pcap' 파일에 저장합니다. 캡처된 데이터를 파일에 저장하려면 다음 명령을 사용하십시오.

$ tcpdump -i <인터페이스 이름> -s 65535 -w <파일 이름>.pcap

예를 들어 'enps03' 인터페이스가 있습니다. 캡처한 데이터를 다음 파일에 저장합니다.

$ sudo tcpdump -i enps03 -w dump.pcap

앞으로는 Wireshark 또는 기타 네트워크 분석 도구를 사용하여 캡처된 이 파일을 읽을 수 있습니다. 따라서 Wireshark를 사용하여 패킷을 분석하려면 '-w' 인수를 사용하고 이를 '.pcap' 파일에 저장하세요.

결론

이 튜토리얼에서는 다양한 예제를 통해 tcpdump를 사용하여 패킷을 캡처하고 분석하는 방법을 시연했습니다. 또한 캡처된 트래픽을 Wireshark 및 기타 네트워크 분석 도구를 사용하여 보고 분석할 수 있는 '.pcap' 파일에 저장하는 방법도 배웠습니다.