tcpdump 기본 사용법

agnusdei·2024년 7월 20일

tcpdump는 네트워크 패킷을 캡처하고 분석하는 데 사용되는 강력한 도구입니다. 다양한 옵션을 사용하여 세부적인 네트워크 트래픽을 분석할 수 있습니다. 아래에서 tcpdump의 기본 사용법과 다양한 옵션에 대해 자세히 설명하겠습니다.

기본 사용법

  1. 기본 패킷 캡처

    tcpdump

    기본적으로 tcpdump는 시스템의 첫 번째 네트워크 인터페이스에서 패킷을 캡처하고 출력합니다.

  2. 특정 인터페이스에서 패킷 캡처

    tcpdump -i <인터페이스>

    예를 들어, eth0 인터페이스에서 패킷을 캡처하려면:

    tcpdump -i eth0

    인터페이스 목록을 확인하려면 -D 옵션을 사용할 수 있습니다:

    tcpdump -D
  3. 패킷 출력 제한

    기본적으로 tcpdump는 화면에 출력합니다. 출력의 양을 제한하려면 -c 옵션을 사용합니다:

    tcpdump -c 10

    위 명령은 10개의 패킷만 캡처하고 종료합니다.

  4. 패킷 출력 포맷 변경

    패킷의 출력을 더 읽기 쉬운 형식으로 변경하려면 -v, -vv, -vvv 옵션을 사용할 수 있습니다:

    tcpdump -v
    tcpdump -vv
    tcpdump -vvv
  5. 패킷 필터링

    패킷을 필터링하여 특정 트래픽만 캡처할 수 있습니다. 예를 들어, 특정 포트에서의 트래픽만 캡처하려면:

    tcpdump port 80

    특정 IP 주소와 포트를 필터링하려면:

    tcpdump src 192.168.1.1 and port 80
    tcpdump dst 192.168.1.1 and port 80

    src는 소스 IP 주소, dst는 목적지 IP 주소를 의미합니다. and, or, not 연산자를 사용하여 복잡한 필터링도 가능합니다.

  6. 패킷 내용 출력

    패킷의 상세한 내용을 출력하려면 -X 또는 -XX 옵션을 사용합니다:

    tcpdump -X
    tcpdump -XX

    -X는 패킷의 데이터 부분을 16진수와 ASCII 형식으로 출력하고, -XX는 패킷의 전체 데이터 부분을 16진수로 출력합니다.

  7. 패킷 저장

    패킷을 파일에 저장하려면 -w 옵션을 사용합니다:

    tcpdump -w capture.pcap

    저장된 파일은 tcpdump 외에도 Wireshark와 같은 패킷 분석 도구에서 열 수 있습니다.

  8. 파일에서 패킷 읽기

    저장된 패킷 파일을 읽으려면 -r 옵션을 사용합니다:

    tcpdump -r capture.pcap

고급 사용법

  1. 특정 프로토콜 필터링

    특정 프로토콜을 필터링할 수 있습니다:

    • TCP 패킷만 캡처:

      tcpdump tcp
    • UDP 패킷만 캡처:

      tcpdump udp
    • ICMP 패킷만 캡처:

      tcpdump icmp
  2. 특정 네트워크 범위 필터링

    특정 서브넷의 패킷만 캡처하려면:

    tcpdump net 192.168.1.0/24
  3. 출력 포맷 변경

    -n 옵션을 사용하면 호스트 이름을 IP 주소로 출력할 수 있습니다 (DNS 조회를 방지합니다):

    tcpdump -n

    -nn 옵션은 포트 번호와 프로토콜 이름을 숫자 형식으로 출력합니다.

  4. 특정 패킷 길이 필터링

    패킷 길이에 따라 필터링할 수 있습니다:

    tcpdump less 100
    tcpdump greater 1000

    less는 지정된 길이보다 짧은 패킷을, greater는 지정된 길이보다 긴 패킷을 캡처합니다.

  5. 패킷 헤더 필터링

    패킷의 헤더를 필터링하려면 -e 옵션을 사용하여 패킷의 링크 계층 헤더를 출력할 수 있습니다:

    tcpdump -e

    -e는 이더넷 헤더를 출력합니다.

예제 명령어 모음

  1. HTTP 트래픽 캡처

    tcpdump -i eth0 port 80
  2. 192.168.1.0/24 네트워크의 모든 트래픽 캡처

    tcpdump -i eth0 net 192.168.1.0/24
  3. 특정 IP 주소로부터의 모든 트래픽 캡처

    tcpdump -i eth0 src 10.0.0.1
  4. 포트 22(SSH)에서의 트래픽 저장

    tcpdump -i eth0 port 22 -w ssh_traffic.pcap
  5. 파일에서 패킷 읽기 및 표시

    tcpdump -r ssh_traffic.pcap

tcpdump-nn 옵션은 패킷 출력 시 호스트 이름과 서비스 이름을 숫자 형태로만 출력하게 만드는 옵션입니다. 이 옵션을 사용하면 다음과 같은 효과를 얻을 수 있습니다:

  1. 호스트 이름 대신 IP 주소 출력: -nn 옵션을 사용하면 패킷의 출발지와 목적지 IP 주소를 DNS 조회 없이 숫자로만 표시합니다. 기본적으로 tcpdump는 IP 주소를 호스트 이름으로 변환하여 출력할 수 있습니다. -nn 옵션을 사용하면 이 변환 과정을 건너뛰고 원래 IP 주소 그대로 출력합니다.

  2. 포트 번호 대신 서비스 이름 출력: -nn 옵션을 사용하면 포트 번호를 서비스 이름으로 변환하지 않고, 원래의 포트 번호를 그대로 표시합니다. 예를 들어, 포트 80은 기본적으로 "http"로 표시되지만, -nn 옵션을 사용하면 "80"으로 표시됩니다.

예제

  • -nn 사용 전:

    tcpdump -i eth0

    출력 예시:

    14:20:59.978527 IP myserver.local.ftp > 192.168.1.2.56789: Flags [P.], seq 1234:5678, ack 5678, win 1024, length 123

    여기서 myserver.localftp는 호스트 이름과 서비스 이름으로 변환된 것입니다.

  • -nn 사용 후:

    tcpdump -nn -i eth0

    출력 예시:

    14:20:59.978527 IP 192.168.1.1.21 > 192.168.1.2.56789: Flags [P.], seq 1234:5678, ack 5678, win 1024, length 123

    여기서 IP 주소와 포트 번호가 숫자 형태로 그대로 표시됩니다.

이 옵션은 네트워크 문제를 디버깅할 때, IP 주소와 포트 번호를 정확히 확인해야 할 때 유용합니다.

0개의 댓글