웹사이트 검색

Ubuntu에서 Tcpdump로 패킷 캡처 및 Wireshark로 패킷 분석


이 가이드에서는 Linux에서 네트워크 패킷을 분석하는 방법을 보여 드리겠습니다. 도구 Tcpdump 및 Wireshark를 사용합니다. 이 튜토리얼은 Ubuntu를 OS로 사용하지만 다른 Linux 배포판에도 적용할 수 있습니다.

왜 Tcpdump가 필요한가요?

Wireshark로 거의 모든 것을 할 수 있는데 왜 Tcpdump에 신경을 써야 하는지에 대한 분명한 질문이 떠오를 수 있습니다. 이에 대한 대답은 다음과 같습니다. 때때로 Wireshark와 비교할 때 패킷 캡처에 Tcpdump를 사용하는 것이 더 편리합니다. 예를 들어, 패킷을 캡처하는 대상 시스템이 Wireshark가 설치되지 않은 원격 시스템이거나 원격 헤드리스 시스템인 경우 두 경우 모두 Tcpdump가 매우 편리합니다. Tcpdump와 함께 사용할 수 있는 다양한 옵션을 보려면 매뉴얼 페이지를 검색하십시오.

Tcpdump란 무엇입니까?

Tcpdump는 Wireshark에 대한 명령줄 대안입니다. 트래픽을 캡처하고 분석하는 Wireshark와 동일한 목적을 수행합니다. Tcpdump는 별도의 애플리케이션이며 Wireshark 명령줄 인터페이스로 생각하면 안 됩니다. 명령줄 인터페이스를 기반으로 하기 때문에 Wireshark만큼 다루기가 간단하지 않습니다. 새로운 사용자는 사용을 시작할 때 처음에는 어려울 수 있으며 기억하기 어려운 많은 명령과 구문을 찾을 수 있습니다.

이 튜토리얼의 개요

이제 이 가이드의 주요 목적을 살펴보겠습니다. 이 가이드에서는 Tcpdump와 Wireshark를 상호 작용하는 방법을 살펴봅니다. 여기서 우리는 이 가이드에서 수행할 작업을 지적합니다.

<올 스타일=텍스트-정렬:왼쪽>

  • SSH로 원격 머신(호스트 2)과 연결.
  • Tcpdump로 트래픽을 캡처하고 캡처를 저장합니다.
  • Capture 파일을 Wireshark가 설치된 현장 컴퓨터(호스트 1)로 보냅니다.
  • Wireshark를 사용하여 캡처된 Tcpdump 세션을 분석합니다.

    비행 전 확인

    이 튜토리얼에서는 두 대의 Ubuntu 20.04 머신을 사용하고 있습니다. 직접 구성해야 합니다. 우리의 IP 구성은 다음과 같습니다.

    호스트 1(현장 시스템): 192.168.186.150

    호스트 2(원격 머신): 192.168.186.201

    이 가이드에 언급된 단계는 다음 요구 사항이 충족되는 모든 Linux 시스템에서 작동한다고 가정합니다.

    <올 스타일=텍스트-정렬:왼쪽>

  • Wireshark가 설치되고 SSH가 구성된 온사이트 호스트(호스트 1).
  • 온사이트 호스트(Host 1)에서 원격 호스트(Host 2)로 SSH 액세스.
  • 원격 호스트(호스트 2)에 구성된 Tcpdump 및 SSH.
  • Tcpdump를 실행하기 위한 호스트 2와 호스트 1의 'sudo' 사용자 계정(Wireshark 구성 방식에 따라 다름).

    의 시작하자…

    계속 진행하려면 SSH 액세스 프로토콜을 사용하여 온사이트 시스템(호스트 1)에서 원격 시스템(호스트 2)으로 연결하십시오. 우리는 이미 두 컴퓨터 사이에 SSH 연결을 설정했습니다. 따라서 호스트 1 터미널에서 아래 명령을 사용하여 호스트 2에 연결합니다.

    $ ssh ‘user_name’@’IP_of_Host2’

    여기에서 'user_name'을 연결하려는 호스트 2의 사용자 이름으로 바꾸고 'IP_of_Host2'는 호스트 2의 IP 주소입니다. 참조용으로 아래 그림을 참조하세요.

    $ tcpdump --list-interfaces

    샘플 출력:

    1.enp0s3 [Up, Running]
    2.lo [Up, Running, Loopback]
    3.any (모든 인터페이스에서 캡처하는 의사 장치) [Up, Running]
    4.eno1 [Up ]
    5.bluetooth-monitor(Bluetooth Linux 모니터) [없음]
    6.nflog(Linux 넷필터 로그(NFLOG) 인터페이스) [없음]
    7.nfqueue(Linux 넷필터 대기열(NFQUEUE) 인터페이스) [없음]
    8.bluetooth0(Bluetooth 어댑터 번호 0) [없음]

    $ sudo tcpdump -s 65535 -i enp0s3 -w my_remote_capture.pcap

    <올 스타일=텍스트-정렬:왼쪽>

  • -s: 이전 버전의 Tcpdump는 패킷을 68바이트 또는 96바이트로 차단합니다. '-s' 옵션은 전체 길이의 패킷을 캡처하는 데 사용됩니다.
  • -i: 수신할 인터페이스를 선택합니다.
  • -w: 캡처된 원시 패킷을 터미널에 표시하는 대신 파일에 저장합니다.

    캡처된 트래픽은 my_remote_capture.pcap이라는 파일에 저장됩니다. 이제 Wireshark로 분석하기 위해 이 파일을 호스트 1로 전송합니다. 파일 전송을 위해 scp 명령을 사용하고 있습니다. 다시 말하지만, 우리는 이미 scp가 두 머신 사이에서 작동하도록 구성했습니다. 명령 구문은 다음과 같습니다.

    $ scp my_remote_capture.pcap 'username'@'IP_of_remote_machine':

    여기서 username은 호스트 1의 사용자 이름이고 IP_of_remote_machine은 호스트 1의 IP이기도 합니다.

    캡처 파일 분석

    위의 파일에 표시 필터를 적용해 보겠습니다. SSH를 사용하여 호스트 2에 연결했으므로 SSH 프로토콜의 흔적이 있어야 합니다. 표시 필터에 해당하는 텍스트 필드에 'ssh'를 입력합니다.

    마무리…

    축하합니다. 마침내 컴퓨터에서 원격 캡처를 수행하는 방법을 시연했습니다. Tcpdump와 Wireshark를 결합하는 방법을 살펴보았습니다.