[Linux] 리눅스에서 TCP DUMP로 패킷헤더 출력하기
l Linux
일반적으로 어플리케이션간 통신이 되지 않을 때 어플리케이션의 로그도 확인하겠지만, 가장 먼저 확인하는 부분이 OS 방화벽 > 시스템 방화벽(보안프로그램) > 네트워크 방화벽 순이지 않을까 한다. 이때 사용자가 모든 권한을 가지고 있으면 각 단계별로 방화벽 로그나 기타 로그를 보면서 통신이 되는지 (접근이 되는지)등의 문제를 확인할 수 있지만, 사실상 대부분의 업무는 역할이 정해져 있고, 역할마다 접근 권한이 다르기 때문에 빠르게 모든 구간을 확인할 수 없다. 가끔은 필요한 단계에서 각 방화벽의 포트가 오픈되어 있는데, 통신이 되지 않는 경우(대부분은 오해로 발생)도 있다.
이럴 때 쉽게 패킷이 호출되는지 통신 여부를 확인할 수 있는 명령이 TCP DUMP이다. TCP DUMP 명령은 주어진 조건식을 만족하는 네트워크 인터페이스를 거치는 모든 패킷을 캡처하여 헤더를 출력해준다.
우선 아래와 같은 명령으로 TCP DUMP를 실행해본다. 모든 내용을 출력하기 때문에 사실상 정보를 확인하기에는 많이 불편할 것이다.
tcpdump -i eth0 |
사용자가 필요한 패킷의 정보만 표시할 수 있도록 TCP DUMP 명령의 기본 옵션을 살펴보자.
l tcpdump -i eth0 : 인터페이스 eth0의 전체 패킷 출력
l tcpdump -i eth0 -c 10 : 10개의 내용만 출력
l tcpdump -i eth0 tcp : TCP 패킷만 출력
l tcpdump -i eth0 udp : UDP 패킷만 출력
l tcpdump -i eth0 tcp port 80 : TCP 80 포트로 통신하는 패킷 출력
l tcpdump -i eth0 udp port 80 : UDP 80 포트로 통신하는 패킷 출력
l tcpdump -i eth0 src X.X.X.X : source ip가 X.X.X.X인 패킷 출력
l tcpdump -i eth0 dst X.X.X.X : destination ip가 X.X.X.X인 패킷 출력
l tcpdump -i eth0 src port 3306 : source port가 3306인 패킷 출력
l tcpdump -i eth0 dst port 3306 : destination port가 3306인 패킷 출력
l tcpdump net 192.168.0.1/24 : CIDR 형식으로 캡처할 IP 범위 지정하여 패킷 출력
l tcpdump -w tcpdump.log : 캡처된 내용을 tcpdump.log라는 파일에 저장하며 txt 형식이 아닌, bin 형식으로 저장. 저장된 파일을 wireshark 등에서 분석 가능.
l tcpdump -r tcpdump.log : tcpdump.log 파일의 내용을 보여줌
다양한 연산자 &&(AND), ||(OR), !(NOT)을 사용하여 여러 조건을 조합해서도 사용할 수 있다.
l Source IP가 X.X.X.X이면서 TCP PORT가 80인것만 출력한다.
tcpdump -i eth0 src X.X.X.X and tcp and port 80 |
l Destination IP가 X.X.X.X 이면서 UDP 3306 포트의 패킷을 tcpdump.log라는 파일에 저장한다.
tcpdump -w tcpdump.log -i eth0 dst X.X.X.X and udp and port 3306 |
l Source IP가 X.X.X.X 이고 Destination PORT가 22가 아닌 것만 출력한다.
tcpdump src X.X.X.X and not dst port 22 |
l Source IP가 X.X.X.X 이고 Destination PORT가 22 또는 3389인것만 출력한다. 이때 조건에 연산자 우선순위를 사용할 수 있도록 싱글쿼테이션(‘)으로 구분한다.
tcpdump ‘src X.X.X.X and (dst port 3389 or 22)’ |
지금까지 TCPDUMP의 다양한 활용법에 대해서 알아보았다. 기본적인 명령어만 알고 있어도, 사용자가 관여하는 서버에서 패킷이 호출되는지 정도까지는 직접 확인할 수 있어, 유관부서에 협업을 요청하거나, 문제를 해결하기 위한 포인트를 좀 더 빠르게 접근할 수 있지 않을까 한다.
2024-01-02 / Sungwook Kang / https://sungwookkang.com
리눅스, TCPDUMP, 패킷덤프, 패킷출력, 통신확인
'Linux' 카테고리의 다른 글
[Linux] 리눅스 디스크 용량 확인 (0) | 2023.09.26 |
---|---|
[Linux] 쉘(shell) 스크립트 기초 (0) | 2023.09.05 |
[Linux] Alpine Linux (알파인 리눅스) 는 무엇일까? (0) | 2023.09.04 |
[Linux] OOM(Out of Memory)란? (0) | 2023.08.30 |
CnetOS 방화벽 설정 (0) | 2015.07.22 |