특정 포트의 TCP 트래픽 모니터링

특정 포트의 TCP 트래픽 모니터링

나는 이것에 대해 상당히 광범위하게 검색했지만 실제 예를 찾을 수 없는 것 같습니다.

내 목표는 특정 포트의 TCP 트래픽을 모니터링하여 들어오는 연결을 확인하고 이를 텍스트 파일에 쓰는 것입니다. 문제는 클라이언트가 두 번째 행에 연결된 시기를 정확하게 표시하기 위해 각 행에 타임스탬프도 필요하다는 것입니다.

나는 이미 netstat, nmap 및 tcptrack을 모두 사용했지만 타임스탬프를 지원하는 것은 없습니다.

특정 로컬 포트를 모니터링하고 연결이 이루어질 때 파일에 텍스트를 쓴 다음 각 줄의 날짜를 연결하면 Linux 쉘 스크립트가 작동할 수 있다고 생각했습니다.

나는 이것을 가지고 놀고 있었다 :

netstat -ano|grep 443|grep ESTABLISHED

뿐만 아니라 이것:

tcptrack -i eth0 port 443

하지만 연결이 들어오는 시간이 필요하기 때문에 내 필요에는 적합하지 않습니다.

제안 사항이 있거나 올바른 방향을 알려주시면 매우 감사하겠습니다.

감사해요. :)

답변1

편집하다: 나는 몇 년이 지난 지금도 여전히 지지를 받고 있습니다. 이 답변을 찾지 마십시오.다음을 사용하여 대답iptables내 의견으로는 여기가 훨씬 우수합니다.


tcpdump port 443 and '(tcp-syn|tcp-ack)!=0'

또는 필요한 것에 따라 tcp-syn또는 만 tcp-ack(제 생각에는 그게 될 것 같습니다).

답변2

이를 위해 Linux 커널의 iptables 지원을 사용할 수 있습니다.장점은 적당히 유용하기 위해 추가 소프트웨어가 필요하지 않다는 것입니다. 단점은 설정하려면 루트 권한이 필요하다는 것입니다(그러나 권한 있는 포트인 포트 443에 대해 이야기하고 있다면 대부분의 솔루션에서 루트 권한이 필요할 것입니다).

다음과 같은 iptables 규칙을 추가합니다.

sudo iptables -I INPUT -p tcp --dport 443 --syn -j LOG --log-prefix "HTTPS SYN: "

( -I INPUT취향에 맞게 부분을 가감하세요.)

규칙이 트리거되면 커널에서 syslog 항목을 내보냅니다. 예를 들어 입력 규칙을 사용하면 로그 항목이 다음과 같을 수 있습니다.

12월 5일 09:10:56 호스트 이름 커널: [1023963.185332] HTTPS SYN: IN=ifX OUT= MAC=80:80:80:80:80:80:80:80:80:80:80:80:08:00 SRC=ABCD DST=WXYZ LEN=52 TOS=0x00 PREC=0x20 TTL=119 ID=11901 DF PROTO=TCP SPT=37287 DPT=443 WINDOW=8192 RES=0x00 SYN URGP=0

그런 다음 일반적인 로그 모니터링 도구를 사용하여 이 정보로 유용한 작업을 수행할 수 있습니다. syslog 구현이 이를 지원하는 경우 이를 별도의 로그 파일로 보낼 수도 있으므로 추가 소프트웨어 없이 초 단위로 타임스탬프가 지정된 파일에 연결 데이터를 기록해야 하는 요구 사항을 효과적으로 충족할 수 있습니다.

대상 LOG은 종료되지 않는 대상입니다. 즉, 대상을 따르는 모든 규칙은 계속 평가되며 패킷은 LOG 규칙 자체에 의해 거부되거나 수락되지 않습니다. 이는 LOG대상을 방화벽 규칙 디버깅에도 유용하게 만듭니다.

로그 범람을 방지하려면 limit이와 함께 모듈을 사용하는 것을 고려하십시오. 자세한 내용은 iptables(8) 매뉴얼 페이지를 참조하십시오.

답변3

마이크로초 해상도

기본적으로tcpdump유틸리티는 마이크로초 단위로 시간을 보고합니다. 예를 들어:

$ sudo tcpdump -i any port 443

다음과 유사한 출력이 표시됩니다.

12:08:14.028945 IP localhost.33255 > localhost.https: 플래그 [S], seq 1828376761, win 43690, 옵션 [mss 65495,sackOK,TS val 108010971 ecr 0,nop,wscale 7], 길이 0
12:08: 14.028959 IP localhost.https > localhost.33255: 플래그 [R.], seq 0, ack 1828376762, win 0, 길이 0

tcpdump 옵션의 전체 목록은 tcpdump(8)를 참조하고, 사용할 수 있는 필터의 전체 구문은 pcap-filter(7)를 참조하십시오.

답변4

다른 시스템에서 들어오고 나가는 패킷을 모니터링하는 데에도 이 기능이 필요할 수 있습니다.

tcpflow -i eth0 -c port 7891

( -i네트워크 언급 옵션, -c콘솔에서 패킷 인쇄 옵션)

관련 정보