GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Überwachen Sie den TCP-Verkehr an einem bestimmten Port

bearbeiten :Ich bekomme noch Jahre später Upvotes dafür. Bitte wählen Sie nicht diese Antwort, sondern die Antwort mit iptables hier ist meiner Meinung nach weit überlegen.

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

oder nur tcp-syn , oder nur tcp-ack (meine Vermutung wäre das), je nachdem, was Sie brauchen.


Sie können dafür die iptables-Unterstützung im Linux-Kernel verwenden. Der Vorteil ist, dass keine zusätzliche Software erforderlich ist, um einigermaßen nützlich zu sein. Der Nachteil ist, dass für die Einrichtung Root-Rechte erforderlich sind (aber da Sie über Port 443 sprechen, der ein privilegierter Port ist, benötigen Sie wahrscheinlich bei den meisten Lösungen Root-Rechte).

Fügen Sie eine iptables-Regel mit etwas wie:

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

(Passen Sie -I INPUT an Teil nach Ihrem Geschmack.)

Wenn die Regel ausgelöst wird, wird vom Kernel ein Syslog-Eintrag ausgegeben. Bei einer Eingaberegel könnte der Protokolleintrag beispielsweise so aussehen:

5. Dezember 09:10:56 Hostname Kernel:[1023963.185332] HTTPS SYN:IN=ifX OUT=MAC=80:80:80:80:80:80:80:80:80:80:80:80:08:00 SRC=A.B.C.D DST=W.X.Y.Z LEN=52 TOS=0x00 PREC=0x20 TTL=119 ID=11901 DF PROTO=TCP SPT=37287 DPT=443 WINDOW=8192 RES=0x00 SYN URGP=0

Sie können dann jedes gewöhnliche Protokollüberwachungstool verwenden, um etwas Nützliches mit diesen Informationen zu tun. Wenn Ihre Syslog-Implementierung dies unterstützt, können Sie diese sogar in eine separate Protokolldatei leiten und damit effektiv Ihre Anforderung erfüllen, die Verbindungsdaten ohne zusätzliche Software mit einem sekundengenauen Zeitstempel in eine Datei zu schreiben.

Beachten Sie, dass LOG target ist ein nicht terminierendes Ziel, was bedeutet, dass alle darauf folgenden Regeln weiterhin ausgewertet werden und das Paket von der LOG-Regel selbst weder zurückgewiesen noch akzeptiert wird. Das macht die LOG Ziel auch nützlich zum Debuggen von Firewall-Regeln.

Um zu vermeiden, dass Ihr Log überflutet wird, ziehen Sie die Verwendung von limit in Betracht Modul in Verbindung damit. Weitere Informationen finden Sie auf der Manpage iptables(8).


Mikrosekunden-Auflösung

Standardmäßig meldet das Dienstprogramm tcpdump die Zeit mit einer Auflösung von Mikrosekunden. Zum Beispiel:

$ sudo tcpdump -i any port 443

zeigt eine Ausgabe ähnlich der folgenden:

12:08:14.028945 IP localhost.33255> localhost.https:Flags [S], seq 1828376761, win 43690, Optionen [mss 65495,sackOK,TS val 108010971 ecr 0,nop,wscale 7], Länge 0
12:08:14.028959 IP localhost.https> localhost.33255:Flags [R.], seq 0, ack 1828376762, win 0, length 0

Siehe tcpdump(8) für eine vollständige Liste der tcpdump-Optionen und pcap-filter(7) für die vollständige Syntax der Filter, die Sie verwenden können.


Linux
  1. Webdatenverkehr in der iptables-Software-Firewall zulassen

  2. So überwachen und protokollieren Sie den Netzwerkverkehr unter Linux mit vnStat

  3. Wie kann ich den TCP-Port 16969 in Bash beenden?

  4. wie man netstat auf einem bestimmten Port in Linux verwendet

  5. Leiten Sie nur bestimmten Datenverkehr durch VPN

Bandbreitenüberwachung

So blockieren Sie einen bestimmten Port auf CentOS 8, z. B. 22

So pingen Sie eine bestimmte Portnummer an

Installieren Sie Ntopng, um den Netzwerkverkehr unter Ubuntu 20.04 zu überwachen

Überprüfen Sie den ausgehenden Netzwerkverkehr

Unix-Socket vs. TCP/IP-Host:Port