이 가이드에서는 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' 파일에 저장하는 방법도 배웠습니다.