본문 바로가기
Network

[Network] tcpdump로 네트워크 패킷 파일 생성하기

by BTC_쭈콩 2023. 9. 8.

베하 -! 

BTC 콩순이 팀의 쭈콩입니다 !! 
오늘은 최근 관심이 생겼던 네트워크 공부를 하던 차에 

눈에 보이지 않는 통신을 눈으로 확인해보고 싶다는 생각이 들어서 준비했습니다. 

 

저는 요즘 AWS를 주로 다루고 있는데, Client와 ALB, ALB와 EC2 가 통신하는 방법이나 구조를 알고싶다는 생각이 들었습니다. 그래서 그 통신내역을 눈으로 확인할 수 있도록 도와주는 "tcpdump"를 사용해서 실습을 해볼 예정입니다. 

 

인프라 엔지니어에게 CSP 만큼이나 중요한게 네트워크라는 사실을 꼭꼭 인지해야겠습니다!!

그럼 오늘 내용 진행해보겠습니다 ! 


먼저 Tcpdump 파일을 생성하기 전에 도대체 tcpdump가 뭔지 알아보도록 하겠습니다. 

 


Tcpdump란 네트워크와 네트워크가 실행되는 컴퓨터 사이를 통과하는
TCP/IP 트래픽을 모니터링하고 기록하는 패킷 분석기 오픈소스 소프트웨어 유틸리티 유형입니다.



대부분의 유닉스 계열에서 네트워크 카드를 통해 송수신 되는 패킷을 가로채고 표시해주는 소프트웨어 입니다. 

tcpdump 라는 이름을 가지고 있지만 tcp 이외에도 UDP,ARP,ICMP와 같은 TCP가 아닌 트래픽도 캡처가 가능하며, 

이 캡처된 패킷들을 파일 또는 표준 출력에서 쓸 수 있습니다.

 

아! - 유닉스 계열에 tcpdump가 있다면 윈도우즈 환경에서는 Windump 와 WireShark가 있습니다. 
다음에 기회가 된다면 windump에 대해서도 포스팅을 진행해볼게요 !! 일단 오늘은 tcpdump로 !! 

 

그럼 Tcpdump를 사용하면 좋은점엔 뭐가 있을까요?

 

네트워크 문제 진단

tcpdump는 네트워크 상황을 실시간으로 캡처하므로 네트워크 문제의 원인을 찾는 데 유용합니다. 패킷의 발생, 전송, 수신, 드롭 등의 문제를 분석하여 네트워크 이슈를 식별할 수 있습니다.

 

 프로토콜 분석

tcpdump는 다양한 프로토콜의 패킷을 캡처하고 분석할 수 있습니다. 이를 통해 특정 프로토콜의 동작 및 데이터 흐름을 이해하고 문제를 해결할 수 있습니다.

 

보안 검사

네트워크에서 전송되는 데이터를 모니터링하여 악의적인 활동이나 보안 위험을 탐지할 수 있습니다. 해킹 시도, 악성 코드 전송 등의 이벤트를 감지하여 대응할 수 있습니다.

 

트래픽 분석

네트워크 트래픽을 실시간으로 분석하여 특정 패턴, 행동 또는 트래픽 트렌드를 파악할 수 있습니다. 이를 통해 네트워크 사용량 및 효율성을 평가하고 최적화할 수 있습니다.

 

디버깅

네트워크 프로그램이나 애플리케이션의 디버깅 시, tcpdump를 사용하여 네트워크 패킷의 송수신 상태를 확인하고 문제를 분석할 수 있습니다.

 

그럼 tcpdump 파일을 생성해보도록 하겠습니다 !! 

실습환경 

AWS
- EC2(Al-2) - public
- ALB 

Client 와 ALB , EC2 간의 통신이 어떻게 이루어지고 있는지 알아보기 위해 EC2에서 tcpdump를 생성해보겠습니다. 

aws amazon linunx에는 기본적으로 tcpdump가 설치 되어 있었습니다! 
만약 설치가 안되어 있다면 아래 명령어로 설치 하면 됩니다 ! 

$tcpdump --version 

#설치 안되어 있을 경우 
ubuntu : sudo apt update && sudo apt install tcpdump
centOS : sudo yum install tcpdump

 

아래 명령어는 서버가 가진 모든 네트워크 인터페이스를 나열해주는 명령어입니다.

$tcpdump --list-interfaces

저는 연결이 되어 있다고 나와있는 ! eth0 인터페이스에 tcpdump를 떠보겠습니다 !! 

 

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

해당 명령어와 옵션 값에 대한 설명을 아래에 있는 내용대로 입니다 ! 

사실 tcpdump와 관련된 옵션값은 너무나 많지만, 제가 사용한 옵션은 이정도이고, 추가적으로 많이 사용하는 

옵션 같이 설명해놓겠습니다! 

 

  • -s : 전체 길이의 패킷을 캡처하는데 사용
  • -i : 수신할 인터페이스 선택
  • -w : 캡처된 원시 패킷을 터미널에 표시하는 대신 파일에 저장
  • -c : 제시된 수의 패킷을 받은 후에 종료
  • -n : 모든 주소들을 번역하지 않는다(port,host address)
  • -v : 더 많은 정보를 출력한다.
  • -vv : 더더 많은 정보를 출력한다.

결과적으로 저는 지금부터 eth0(-i) 인터페이스로 통신되는 모든 전체길이의 패킷(-s)터미널에 표시하지 않고 파일(-w)에 저장하는 명령어를 사용했습니다 ! 

 

ls 결과 제가 지정한 이름대로 파일이 생성된 것을 확인할 수 있습니다 ! 
+중간중간 더 많은 패킷을 떠보기 위해서 사용된 명령어의 파일이름과 상이할 수 있습니다 

이렇게 서버 내부에 덤프파일이 생겼습니다 !! 
그럼 이걸 어떻게 분석하냐, 저는 WireShark을 사용하여 분석을 시도해볼 건데,, 
그러려면 서버에 있는 파일을 로컬로 가져와야했습니다. scp를 사용하여 파일을 옮겨봅시다. 

 

C:\Users\user>scp -i "juran-key (1).pem" ubuntu@공인아이피:/home/ubuntu/juran2_tcp_demp.pcap .

정리하면 

scp -i "EC2 Key-pair.pem" user@공인아이피:<옮길 파일 경로> <옮겨질 로컬경로>

저는 로컬의 현재경로에 저장되길 바래서 . 을 사용했습니다. 

특정 원하는 경로가 있다면 절대경로로 써주시면 됩니다 ! 

 

이렇게 로컬에 제가 생성한 캡처파일이 잘 옮겨진 것을 확인하실 수 있습니다!! 


 

오늘은 tcpdump로 파일을 생성하는 방법에 대해 알아봤습니다 ! 

옵션도 너무 많고 활용법이 다양하겠지만 일단 한 번 해보고 나면 활용법이야 점점 알아가면 좋을 것 같단 생각이 듭니다 ! 
그럼 다음 포스팅에서는 오늘 생성한 파일을 가지고 WireShark 에서 패킷 보는 방법에 대해 알아보겠습니다 ! 

그럼 유익한 시간이었길 바라며 !! 

베빠  - - ! 

'Network' 카테고리의 다른 글

3-way Handshake & 4-way Handshake  (1) 2023.10.19
[Network] WireShark로 tcpdump 파일 패킷 분석하기  (1) 2023.09.18
[네트워크] 오류 검출 방식  (0) 2023.07.24
TCP/IP 5계층  (0) 2023.06.12
MRTG란?  (0) 2023.05.15

댓글