Computer >> 컴퓨터 >  >> 시스템 >> Linux

tcpdump로 패킷 캡처하는 방법: 네트워크 엔지니어를 위한 완벽 가이드

tcpdump로 패킷 캡처하는 방법: 네트워크 엔지니어를 위한 완벽 가이드

패킷 캡처는 네트워크의 내부 동작을 분석할 수 있는 매우 유용한 방법입니다. 이러한 목적을 위해 개발된 다양한 도구들이 있으며, 그중 대표적인 것이 바로 tcpdump입니다. 이 글에서는 네트워크 엔지니어와 침투 테스터 모두에게 유용한 tcpdump를 최대한 활용하는 방법을 소개합니다.

tcpdump란 무엇인가?

tcpdump는 1988년 로렌스 버클리 연구소(Lawrence Berkeley Laboratory)의 네트워크 연구 그룹에 소속된 컴퓨터 과학자 팀이 개발하여 공개한 네트워크 패킷 분석 도구입니다. 컴퓨터가 주고받는 패킷의 내용을 화면에 표시해 주며, 다양한 옵션을 통해 특정 프로토콜이나 네트워크 인터페이스 등 원하는 조건에 맞춰 보다 정밀하게 패킷을 캡처할 수 있습니다.

설치 방법

많은 리눅스 배포판에는 tcpdump가 기본적으로 설치되어 있습니다. 하지만 사용 중인 배포판에 없더라도 걱정하지 마세요. 설치 과정은 매우 간단합니다.

Ubuntu나 Debian을 사용한다면 apt로 설치할 수 있습니다:

sudo apt install tcpdump

CentOS에서는 yum을 사용합니다:

sudo yum install tcpdump

Arch Linux에서는 pacman으로 설치합니다:

sudo pacman -S tcpdump

기본 사용법

tcpdump가 설치되었다면 -h 플래그를 사용해 간단한 도움말을 확인할 수 있습니다:

tcpdump -h

이 명령은 도구 사용 시 활용할 수 있는 플래그 목록을 보여줍니다.

tcpdump로 패킷 캡처하는 방법: 네트워크 엔지니어를 위한 완벽 가이드

보다 자세하고 포괄적인 설명서를 확인하고 싶다면 man 명령으로 매뉴얼 페이지를 열어볼 수 있습니다:

man tcpdump
tcpdump로 패킷 캡처하는 방법: 네트워크 엔지니어를 위한 완벽 가이드

기본적인 패킷 캡처는 다음 명령 하나면 충분합니다:

tcpdump

명령만 단독으로 실행하고 네트워크 인터페이스를 지정하지 않으면, tcpdump는 시스템에서 사용 가능한 인터페이스 중 하나를 자동으로 선택합니다.

호스트명을 해석하지 않고 IP 주소만 출력하고 싶다면 -n 플래그를 사용하세요:

tcpdump -n

캡처할 패킷의 개수를 지정하려면 -c 플래그를 사용합니다:

tcpdump -c [패킷 수]

네트워크 인터페이스 지정하기

-i 플래그를 사용하면 원하는 네트워크 인터페이스를 직접 지정할 수 있습니다:

tcpdump -i [인터페이스]

대부분의 시스템에서 가장 흔히 볼 수 있는 인터페이스 이름은 eth0과 wlan0입니다:

tcpdump -i eth0
tcpdump -i wlan0

모든 인터페이스에서 데이터를 캡처하려면 any 옵션을 사용하세요:

tcpdump -i any
tcpdump로 패킷 캡처하는 방법: 네트워크 엔지니어를 위한 완벽 가이드

포트/포트 범위 지정하기

특정 포트 번호를 사용하는 데이터만 캡처하고 싶다면 다음 명령을 사용합니다:

tcpdump -i [인터페이스] port [포트 번호]

예를 들어, eth0 인터페이스에서 443번 포트(HTTPS) 트래픽을 캡처하려면 아래와 같이 입력합니다:

tcpdump -i eth0 port 443

또한 tcpdump는 포트 범위 지정도 지원합니다:

tcpdump -i [인터페이스] portrange [포트 범위]

호스트 또는 서브넷 지정하기

특정 호스트나 서브넷에서 주고받는 패킷만 캡처하고 싶은 경우가 종종 있습니다. 다행히 tcpdump는 이러한 필터링 기능을 제공합니다.

호스트는 다음 형식으로 지정할 수 있습니다:

tcpdump -i [인터페이스] host [호스트]

예를 들어, eth0 인터페이스에서 호스트를 127.0.0.1(자신의 루프백 IP 주소)로 지정해 트래픽을 캡처하려면 다음과 같습니다:

tcpdump -i eth0 host 127.0.0.1
tcpdump로 패킷 캡처하는 방법: 네트워크 엔지니어를 위한 완벽 가이드

CIDR 표기법으로 네트워크 서브넷을 지정하려면 다음 형식을 사용합니다:

tcpdump -i [인터페이스] net [서브넷]

예시는 다음과 같습니다:

tcpdump -i eth0 net 10.0.0.0/8

출발지 호스트(src)도 직접 지정할 수 있습니다:

tcpdump -i [인터페이스] src [호스트]

마찬가지로 목적지 호스트(dst)도 지정 가능합니다:

tcpdump -i [인터페이스] dst [호스트]

상세 출력 수준 지정하기

tcpdump는 패킷 캡처 시 출력되는 정보의 상세 수준(verbosity)을 조절할 수 있습니다. 캡처 중에 과도한 양의 정보에 압도되고 싶지 않을 때 특히 유용합니다.

상세 수준은 세 단계로 나뉘며, -v, -vv, -vvv 플래그로 설정합니다:

tcpdump -i [인터페이스] -v
tcpdump -i [인터페이스] -vv
tcpdump -i [인터페이스] -vvv
tcpdump로 패킷 캡처하는 방법: 네트워크 엔지니어를 위한 완벽 가이드

첫 번째 옵션이 가장 낮은 상세 수준을, 세 번째 옵션이 가장 높은 상세 수준을 의미합니다.

캡처 결과 파일로 저장하기

캡처한 데이터를 파일로 저장해 두면 이후에 더 깊이 있는 분석과 해석이 가능하므로 실무에서 매우 유용합니다.

파일 저장은 -w 플래그를 통해 수행합니다:

tcpdump -i [인터페이스] -w [파일명]

예를 들어, 캡처한 데이터를 "capture.txt"라는 파일로 저장하려면 다음과 같이 입력합니다:

tcpdump -i eth0 -w capture.txt

자주 묻는 질문(FAQ)

1. "Operation not permitted" 오류가 발생했습니다. 어떻게 해결하나요?

tcpdump를 처음 사용할 때 다음과 같은 오류 메시지를 접하는 경우가 흔합니다:

tcpdump로 패킷 캡처하는 방법: 네트워크 엔지니어를 위한 완벽 가이드

이 오류는 패킷 캡처를 수행할 권한이 없을 때 발생합니다. 대부분의 경우 sudo를 붙여 관리자 권한으로 실행하면 해결됩니다. 예시는 다음과 같습니다:

sudo tcpdump -i eth0

2. 사용 가능한 네트워크 인터페이스는 어떻게 확인하나요?

tcpdump에는 시스템에서 사용 가능한 네트워크 인터페이스를 확인할 수 있는 내장 기능이 있습니다.

인터페이스 목록을 확인하려면 -D 플래그를 사용하세요:

tcpdump -D