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

Analyse des Netzwerkverkehrs mit tcpdump

tcpdump ist ein Computerprogramm zur Datennetzwerk-Paketanalyse. Es ermöglicht dem Benutzer, Netzwerkpakete (einschließlich TCP/IP) anzuzeigen, die über ein Netzwerk gesendet oder empfangen werden. In diesem kurzen Artikel werde ich zeigen, wie man mit tcpdump eine Paketerfassung für die Analyse des Netzwerkverkehrs durchführt.

Netzwerkschnittstellen auflisten

Tcpdump benötigt Zugriff auf Ihre Netzwerkkarte, also führen Sie die folgenden Befehle als root aus (mit su oder sudo ). Um die Liste der auf dem System verfügbaren Netzwerkschnittstellen zu drucken, auf denen tcpdump Pakete erfassen kann, führen Sie

aus
# tcpdump -D

In meinem Fall verwende ich die „echte“ Netzwerkkarte, enp3s0.

Pakete erfassen

Öffnen Sie einen Webbrowser (nur um etwas Netzwerkverkehr zu generieren) und führen Sie den folgenden Befehl aus:

# tcpdump -i <interface>

Auch wenn keine Website geöffnet ist, sehen Sie möglicherweise einige Netzwerkaktivitäten. Vielleicht bedeutet „einige“ viel Netzwerkaktivität. Beenden Sie mit Strg-C und sehen Sie sich die Ergebnisse an. Die Ausgabe zeigt ein Paket pro Zeile mit den folgenden Informationen:

  • Zeitstempel
  • Protokoll (IP6 für IPv6, IP für IPv4)
  • Ursprungshost (IP oder Hostname) und Port
  • Zielhost (auch IP oder Hostname) und Port
  • TCP-Flags
  • Laufende Nummer
  • ACK-Nummer
  • Fenstergröße
  • TCP-Optionen
  • Datenlänge

Einschränkung der Ausgabe

tcpdump -i <interface> -c <n>

Mit diesem Befehl wird das Programm beendet, nachdem n empfangen wurde Pakete

Auf dem Screenshot ist ein sleep 2 zu sehen Befehl, der vor tcpdump ausgeführt wird. Dies war nur, um mir 2 Sekunden Zeit zu geben, um Wikipedia in meinen Browser zu laden. Aber es ist die gleiche Art von Ausgabe wie zuvor.

Namen verbergen

tcpdump -i <interface> -n

Mit dem Schalter -n konvertiert tcpdump IP-Adressen oder Portnummern nicht in Namen.

Filter

Sie können tcpdump anweisen, nur bestimmte Pakete zu erfassen. Um beispielsweise nur https-Pakete zu erfassen, oder genauer gesagt Pakete an Port 443, fügen Sie den Ausdruck hinzu:

tcpdump -i <interface> port <portnumber or portname>

Wir können auch Pakete zu oder von einem Host mit dem folgenden Ausdruck erfassen

tcpdump -i <interface> host <ip address or hostname>

Oder wir können Pakete eines Protokolls erfassen mit:

tcpdump -i <interface> proto <protocol>

Wobei das Protokoll eines der folgenden sein kann:icmp, icmp6, igmp, igrp, pim, ah, esp, vrrp, udp oder tcp. Für icmp, tcp und udp können Sie das Schlüsselwort proto weglassen.

Wir können auch mehrere Ausdrücke mit „und“ (oder „&&“), „oder“ (oder „||“) und nicht (oder „!“) kombinieren und mit Klammern gruppieren. Es gibt noch viel mehr Filter, die Sie erstellen können, sehen Sie sich die pcap-filter Manpage an (man pcap-filter ) für die Hilfe zur Syntax.

Ausführlichkeit der Ausgabe erhöhen

Verwenden Sie den Parameter -v, um die Ausführlichkeit zu erhöhen. Aus der tcpdump-Manpage:

-v Beim Analysieren und Drucken (etwas mehr) ausführliche Ausgabe erzeugen. So werden beispielsweise die Lebensdauer, Identifikation, Gesamtlänge und Optionen in einem IP-Paket aufgedruckt. Aktiviert außerdem zusätzliche Paketintegritätsprüfungen wie die Überprüfung der IP- und ICMP-Header-Prüfsumme.
-vv Noch ausführlichere Ausgabe. Beispielsweise werden zusätzliche Felder aus NFS-Antwortpaketen gedruckt und SMB-Pakete werden vollständig dekodiert.
-vvv Noch ausführlichere Ausgabe. Beispielsweise werden die Optionen telnet SB … SE vollständig gedruckt. Mit -X werden Telnet-Optionen ebenfalls in Hex ausgegeben.

Speichern Sie die Aufnahme in einer Datei

Um die Pakete zur späteren Analyse in eine Datei zu schreiben, fügen Sie -w zur Befehlszeile hinzu:

tcpdump -i <interface> -w <filename>

Sie können diese Datei später mit dem Flag -r

lesen
tcpdump -r <file>

Oder Sie können diese Datei später mit einem GUI-Tool wie Wireshark öffnen.

Moment mal… Wireshark kann auch Netzwerkpakete erfassen, warum habe ich das nicht von Anfang an genutzt?

True, Wireshark kann Pakete erfassen, und die Ausgabe ist auch viel klarer und einfacher zu verfolgen und zu lesen. Mit Wireshark muss ich mir nicht einmal eine Befehlszeile merken oder die Manpage, den Blogartikel oder zumindest ein Cheatsheet in der Hand halten. Auch wahr. Ich hätte Wireshark verwenden können, anstatt die Analyse des Netzwerkverkehrs mit tcpdump durchzuführen. Aber manchmal muss ich die Aufnahme auf einem Server oder Router machen, und bei dieser Art von Computern möchte ich nicht einige wertvolle CPU-Zyklen oder Speicherbits beim Zeichnen von Fenstern, Farben oder Schaltflächen oder einigen anderen GUI-Widgets verschwenden.

Und deshalb entscheide ich mich dafür, die Analyse des Netzwerkverkehrs mit tcpdump auf der Befehlszeile durchzuführen, wenn ich es eilig habe. Oder speichern Sie die Ausgabe in einer Datei, die ich dann mit Wireshark übertrage.


Linux
  1. Beginnen Sie mit NetworkManager unter Linux

  2. Überwachen Sie den Netzwerkverkehr mit vnStat unter Ubuntu 20.04

  3. 6 tcpdump-Filteroptionen für den Netzwerkverkehr

  4. Testen von Netzwerkdiensten mit Netcat

  5. Beispiele für die Verwendung des Befehls tcpdump für die Netzwerkfehlerbehebung

Überwachen Sie den Netzwerkverkehr mit Ntopng auf Ubuntu 18.04 LTS

Verwendung von Wireshark zum Erfassen und Analysieren von Netzwerkpaketen

Tcpdump-Beispiele - Erfassen Sie den Netzwerkverkehr in Linux

Network Manager unter Linux mit Beispielen

Linux-tcpdump-Befehl

Packet Analyzer:15 Beispiele für TCPDUMP-Befehle