Tshark 출력 파이핑 활용

WiresharkBeginner
지금 연습하기

소개

이 랩에서는 Tshark 의 출력을 다른 유틸리티로 파이핑하여 명령줄 도구를 사용하여 네트워크 트래픽을 캡처하고 분석하는 방법을 배우게 됩니다. tcpdump를 사용하여 eth1 인터페이스에서 패킷을 캡처하고, grep을 사용하여 오류 메시지를 필터링하고, wc -l을 사용하여 일치하는 항목을 계산하는 연습을 할 것입니다.

이 랩은 나중에 분석할 수 있도록 캡처를 pcap 형식으로 저장하는 것을 포함하여 네트워크 문제 해결을 위한 실용적인 기술에 중점을 둡니다. 인터페이스를 확인하고, 필터를 적용하며, Unix 파이프와 파일 작업을 통해 패킷 분석 워크플로우를 간소화하는 방법을 배우게 됩니다.

-i eth1 으로 트래픽 캡처

이 단계에서는 기본적인 Linux 명령을 사용하여 eth1 인터페이스에서 네트워크 트래픽을 캡처하는 방법을 배우게 됩니다. eth1 인터페이스는 일반적으로 Linux 시스템에서 기본 네트워크 인터페이스이며, 머신의 첫 번째 이더넷 연결을 나타냅니다.

트래픽을 캡처하기 전에 인터페이스가 존재하고 활성 상태인지 확인하는 것이 중요합니다. 네트워크 인터페이스는 물리적 (이더넷 포트와 같은) 또는 가상 (VPN 연결과 같은) 일 수 있습니다. eth1 인터페이스 상태를 확인하려면 다음 명령을 실행하십시오.

ip link show eth1

다음과 유사한 출력이 표시되어야 합니다.

2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 00:16:3e:5e:6c:00 brd ff:ff:ff:ff:ff:ff

UP 상태는 인터페이스가 활성 상태임을 나타냅니다. 이제 실시간으로 트래픽을 볼 수 있게 해주는 네트워크 분석을 위한 기본 도구인 tcpdump를 사용합니다. 이 기본 캡처 명령은 네트워크에서 무슨 일이 일어나고 있는지 이해하는 데 도움이 됩니다.

sudo tcpdump -i eth1 -c 5

이 명령이 수행하는 작업을 자세히 살펴보겠습니다.

  • -i eth1: 모니터링할 네트워크 인터페이스를 지정합니다 (이 경우 eth1).
  • -c 5: 캡처를 5 개의 패킷으로 제한합니다. 이는 터미널을 넘치게 하지 않으면서 데모에 충분합니다.

출력에는 타임스탬프, 소스/대상 IP 및 프로토콜 정보를 포함한 패킷 세부 정보가 표시됩니다.

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes
12:34:56.789012 IP 192.168.1.100.22 > 192.168.1.1.12345: Flags [P.], seq 1:21, ack 1, win 501, length 20
12:34:56.789123 IP 192.168.1.1.12345 > 192.168.1.100.22: Flags [.], ack 21, win 1024, length 0
...
5 packets captured
5 packets received by filter
0 packets dropped by kernel

더 자세한 분석을 위해 패킷을 파일에 저장하려고 합니다. PCAP 파일은 모든 패킷 데이터를 보존하며 Wireshark 와 같은 그래픽 도구에서 열 수 있습니다. 이 명령은 캡처 파일을 만듭니다.

sudo tcpdump -i eth1 -c 5 -w ~/project/eth1_capture.pcap

-w 플래그는 패킷을 프로젝트 디렉토리의 eth1_capture.pcap에 씁니다. 이 바이너리 형식은 캡처된 모든 원본 패킷 정보를 정확하게 유지합니다.

| grep "ERROR"로 오류 필터링

이 단계에서는 grep 명령을 사용하여 오류 메시지에 대한 네트워크 트래픽을 필터링하는 방법을 배우게 됩니다. 이는 오류가 포함된 패킷만 보려는 대규모 패킷 캡처를 분석할 때 특히 유용합니다. Linux 의 파이프 (|) 연산자를 사용하면 한 명령의 출력을 다른 명령의 입력으로 사용하여 강력한 분석 워크플로우를 만들 수 있습니다.

먼저, 이전 단계에서 생성한 캡처 파일을 살펴보겠습니다. pcap 파일의 내용을 텍스트 형식으로 보려면 다음 명령을 실행하십시오. 이렇게 하면 바이너리 패킷 데이터가 사람이 읽을 수 있는 형식으로 변환됩니다.

tcpdump -r ~/project/eth1_capture.pcap

이제 데모 목적으로 정상 메시지와 오류 메시지가 모두 포함된 샘플 로그 파일을 만들어 보겠습니다. 이렇게 하면 실제 네트워크 트래픽에 적용하기 전에 grep이 어떻게 작동하는지 이해하는 데 도움이 됩니다.

echo -e "INFO: Connection established\nERROR: Authentication failed\nINFO: Data transfer complete\nERROR: Connection timeout" > ~/project/network.log

이 로그 파일에서 오류 메시지만 필터링하려면 "ERROR" 패턴과 함께 grep을 사용합니다. grep은 텍스트를 줄 단위로 검색하고 패턴과 일치하는 줄만 인쇄합니다.

grep "ERROR" ~/project/network.log

오류 줄만 포함하는 출력이 표시되어야 합니다.

ERROR: Authentication failed
ERROR: Connection timeout

이제 실제 패킷 캡처에 적용해 보겠습니다. 먼저 grep이 텍스트 파일로 작동하므로 pcap 을 읽을 수 있는 텍스트 형식으로 변환해야 합니다. 이렇게 하면 패킷 캡처의 텍스트 버전이 생성됩니다.

tcpdump -r ~/project/eth1_capture.pcap > ~/project/packets.txt

그런 다음 변환된 패킷 데이터에서 오류 메시지를 필터링합니다. -i 플래그를 사용하여 대소문자를 구분하지 않고 검색합니다. 즉, "error", "ERROR" 또는 기타 대소문자와 일치합니다.

grep -i "error" ~/project/packets.txt

-i 플래그는 검색을 대소문자를 구분하지 않도록 합니다. "error"(어떤 경우든) 가 포함된 패킷이 있으면 표시됩니다. 이렇게 하면 네트워크 프로토콜에서 대소문자가 다르기 때문에 오류 메시지를 놓치지 않도록 할 수 있습니다.

| wc -l 로 일치 항목 수 계산

이 단계에서는 wc -l 명령을 사용하여 일치하는 줄을 계산하여 네트워크 오류를 정량화하는 방법을 배우겠습니다. 이 기술은 네트워크 관리자가 캡처된 트래픽에서 오류의 빈도를 이해하는 데 도움이 됩니다.

계산하기 전에 먼저 앞에서 식별한 오류 메시지를 검토해 보겠습니다. 다음 명령은 패킷 캡처 파일에서 "error"(대소문자 구분 안 함) 를 포함하는 모든 줄을 표시합니다.

grep -i "error" ~/project/packets.txt

이러한 오류 발생 횟수를 표시하는 대신 계산하려면 파이프 (|) 를 사용하여 grep 출력을 wc -l로 보냅니다. wc 명령은 단어, 줄 또는 문자를 계산하며, -l 옵션은 특히 줄을 계산합니다.

grep -i "error" ~/project/packets.txt | wc -l

이 명령은 발견된 오류 메시지의 수를 나타내는 간단한 숫자를 출력합니다.

2

맥락을 위해 캡처 파일의 총 패킷 수도 계산해 보겠습니다. 이렇게 하면 트래픽의 어떤 비율에 오류가 포함되어 있는지 이해하는 데 도움이 됩니다.

wc -l ~/project/packets.txt

출력에는 개수와 파일 이름이 모두 표시됩니다.

50 packets.txt

오류율을 백분율로 계산하기 위해 기본 셸 산술 연산을 사용합니다. 먼저 오류 수와 총 패킷 수를 변수에 저장한 다음 bc(기본 계산기 프로그램) 를 사용하여 계산을 수행합니다.

errors=$(grep -i "error" ~/project/packets.txt | wc -l)
total=$(wc -l < ~/project/packets.txt)
echo "scale=2; ($errors/$total)*100" | bc

scale=2 설정은 bc 가 결과에 소수점 두 자리를 표시하도록 지시합니다.

4.00

> output.txt 로 파일에 저장

이 단계에서는 네트워크 분석 결과를 문서화 및 추가 검사를 위해 파일에 저장하는 방법을 살펴보겠습니다. Tshark 출력을 사용할 때 필터링된 데이터를 터미널에서 보는 것보다 별도로 저장하는 것이 유용한 경우가 많습니다.

먼저, 패킷 캡처에서 오류 발생 횟수를 계산하기 위해 이전에 사용했던 명령을 다시 불러오겠습니다.

grep -i "error" ~/project/packets.txt | wc -l

Linux 의 > 연산자를 사용하면 명령 출력을 화면에 표시하는 대신 파일로 리디렉션할 수 있습니다. 오류의 숫자 개수만 error_count.txt라는 새 파일에 저장하려면 명령을 다음과 같이 수정합니다.

grep -i "error" ~/project/packets.txt | wc -l > ~/project/error_count.txt

이 명령을 실행한 후 파일에 예상대로 오류 개수 숫자만 포함되어 있는지 확인할 수 있습니다.

cat ~/project/error_count.txt

때로는 단순히 개수 이상이 필요합니다. 분석을 위해 실제 오류 메시지가 필요한 경우도 있습니다. 일치하는 모든 오류 줄을 파일에 저장하려면 단어 개수 부분을 제거합니다.

grep -i "error" ~/project/packets.txt > ~/project/error_messages.txt

모든 오류 메시지가 캡처되었는지 확인하려면 내용을 확인하십시오.

cat ~/project/error_messages.txt

지속적인 모니터링을 위해 기존 파일을 덮어쓰는 대신 추가할 수 있습니다. >> 연산자는 파일에 추가합니다. 타임스탬프가 있는 오류 보고서를 만드는 방법은 다음과 같습니다.

echo "Error count at $(date):" >> ~/project/error_report.txt
grep -i "error" ~/project/packets.txt | wc -l >> ~/project/error_report.txt

누적된 데이터를 보려면 증가하는 보고서 파일을 확인하십시오.

cat ~/project/error_report.txt

요약

이 랩에서는 명령줄 도구를 사용하여 네트워크 트래픽을 캡처하고 분석하는 실용적인 기술을 배웠습니다. 연습에서는 tcpdump를 사용한 패킷 캡처, ip link show를 사용한 인터페이스 확인, 오프라인 분석을 위한 PCAP 파일 생성을 다루었습니다.

또한 grep을 사용한 오류 필터링, wc -l을 통한 일치 항목 계산, 텍스트 파일로의 출력 리디렉션을 포함한 파이핑 작업을 통해 효율적인 데이터 처리 방법을 탐구했습니다. 이러한 기술을 통해 효과적인 문제 해결을 위해 네트워크 정보를 대상으로 추출할 수 있습니다.