Getty Images/iStockphoto
Mit tcpdump Netzwerk-Traffic erfassen und analysieren
Netzwerkadmins nutzen tcpdump, um den Traffic unter Linux zu analysieren. Wir zeigen, wie Sie tcpdump installieren und die Ergebnisse des aufgezeichneten Datenverkehrs untersuchen.
Protokollanalysatoren, auch Paket-Sniffer oder Packet Sniffer genannt, erfassen Netzwerkdaten, die von Administratoren angezeigt oder anderweitig genutzt werden können. Zu den erfassten Daten (sogenannten Captures) gehören Inhalte der Transportschicht sowie Informationen von Anwendungsschicht und Headern, zum Beispiel physische und logische Adressen. Für Netzwerkadministratoren sind diese Informationen im Allgemeinen nützlicher als der eigentliche Daten-Payload.
Im Folgenden finden Sie drei Hauptgründe für Paket-Captures:
- Sicherheit: Erfasste Pakete decken unsichere Daten auf, sei es im Rahmen von Penetrationstests oder Lauschangriffen.
- Troubleshooting: Header-Informationen sind nützlich für die Fehlersuche in allen Bereichen, von DNS bis zu Paketfiltern auf Routern.
- Auditing: Captures zeigen genau an, was im Netzwerk passiert, und nicht das, was Sie nur vermuten. Audits überprüfen, ob die erwarteten Typen von Netzwerk-Traffic auftreten.
Tcpdump ist ein gängiges Open Source Tool für Linux, das zur Analyse von Paketen verwendet wird. Es ist schnell, einfach und schlank. Wireshark ist ein ähnliches Tool, das oft in Verbindung mit tcpdump zum Einsatz kommt. Dieser Artikel beschreibt, wie sich mit tcpdump Pakete erfassen und anzeigen lassen. Außerdem erfahren Sie, wie Sie tcpdump-Captures in Wireshark anzeigen können.
Was ist tcpdump?
Das Utility tcpdump läuft auf der Linux-Kommandozeile. Tcpdump ist eine einfache Anwendung, die gut auf Linux-Servern ohne Linux-basierte Netzwerkgeräte und ohne grafische Benutzeroberfläche (GUI ) sowie mit verschiedenen IoT-Knoten funktioniert. Diese Eigenschaften verschaffen tcpdump einen Vorteil gegenüber leistungsfähigeren GUI-basierten Analyseprogrammen wie Wireshark. Darüber hinaus ist tcpdump skriptfähig, so dass es geplante Captures ermöglicht.
Wie Sie tcpdump installieren
Viele Linux-Distributionen enthalten tcpdump standardmäßig, insbesondere wenn sie für Enterprise Networking konzipiert sind. Falls das bei Ihrer bevorzugten Distribution nicht der Fall ist, können Sie tcpdump über den jeweiligen Paketmanager installieren.
Unter Red Hat und verwandten Distributionen geben Sie den folgenden Befehl ein:
dnf install tcpdump
Unter Debian und verwandten Distributionen verwenden Sie den folgenden Befehl:
apt install tcpdump
MacOS-Nutzer können den brew-Befehl verwenden. Falls nicht schon geschehen, müssen Sie dazu vorher Xcode und dann den Paketmanager Home Brew installieren. Der Befehl lautet dann:
brew install tcpdump
Sollten bei der Installation Schwierigkeiten auftreten, liegt das möglicherweise an fehlenden Rechten, die sie mit sudo erlangen.
Da tcpdump ein Open-Source-Programm ist, haben Sie auch die Möglichkeit, es selbst zu kompilieren. Auf der offiziellen Website finden Sie weitere Informationen und die dazugehörige Dokumentation.
Tcpdump ist sofort nach der Installation einsatzbereit.
Wie Sie tcpdump verwenden
Tcpdump bietet viele Optionen und Anpassungsmöglichkeiten, die Sie dabei unterstützen können, das gewünschte Ziel zu erreichen. Erklärungen und Beispiele finden Sie auf der Manpage.
1. Capture starten
Um tcpdump aufzurufen, geben Sie folgenden Befehl in das Linux-Terminal ein:
tcpdump
Denken Sie daran, dass Sie möglicherweise sudo-Rechte benötigen.
Tcpdump zeigt erfasste Pakete in Echtzeit an. Das ist nützlich, wenn Sie wissen, wonach Sie suchen müssen und wenn es auf der Schnittstelle nicht allzu viel Traffic gibt. Wahrscheinlicher ist jedoch, dass Sie von einer Fülle an Informationen erschlagen werden, die nicht mehr auf eine Bildschirmseite passen.
Unterbrechen Sie in diesem Fall das Capture mit Strg+c.
Sie benötigen eine Möglichkeit, um nur die Informationen anzuzeigen, die für Ihre Aufgabe erforderlich sind. In den nächsten Abschnitten zeigen wir Optionen, wie Sie tcpdump entsprechend anpassen können.
2. Schnittstelle auswählen
Eine Methode, das Capture zu begrenzen, besteht darin, die lokale Netzwerkschnittstelle anzugeben, auf der der Analysator Pakete erfasst. So sind etwa Captures an der kabelgebundenen und drahtlosen Schnittstelle eines Laptops möglich. Noch mehr Schnittstellen können sich auf Netzwerkservern mit mehreren Netzwerkkarten oder Routern befinden, die mit mehreren Subnetzen verbunden sind.
Verwenden Sie die Option -i, um die Schnittstelle auszuwählen. Um die verfügbaren Schnittstellen anzuzeigen, geben Sie tcpdump -D ein.
Nachdem Sie die gewünschte Schnittstelle identifiziert haben, geben Sie deren Namen nach der Option -i an:
tcpdump -i eth0
Mit diesem Filter können Sie verhindern, dass die Capture-Ergebnisse eine zu große Menge an Daten enthalten. Möglicherweise möchten Sie die Informationen aber noch weiter filtern.
3. Host-Informationen auswählen
Sie wissen wahrscheinlich, wonach Sie beim Troubleshooting oder bei Penetrationstests suchen müssen. Vermutlich kennen Sie auch die Quelle oder das Ziel der benötigten Pakete. Geben Sie mit den Flags in der folgenden Tabelle die Quell- beziehungsweise Ziel-IP-Adresse an, auf die tcpdump achten soll.
Flag | Bedeutung |
host | Alle Pakete mit diesem Host im Quell- oder Zielfeld. |
src | Alle Pakete mit diesem Host im Quellfeld. |
dst | Alle Pakete mit diesem Host im Zielfeld. |
src and dst | Alle Pakete mit diesem Host sowohl im Quell- als auch im Zielfeld. |
src or dst | Alle Pakete mit diesem Host entweder im Quell- oder Zielfeld. |
Um Pakete von einem bestimmten Host zu erfassen, setzen Sie den folgenden Befehl ab:
tcpdump -i eth0 host 10.1.1.42
Wenn Sie nur den Traffic erfassen möchten, der von der IP-Adresse 10.1.1.42 stammt, geben Sie folgendes Kommando ein:
tcpdump -i eth0 src host 10.1.1.42
Sie können mit den Operatoren and beziehungsweise or komplexere Parameter für das Capture festlegen.
4. Nach Portnummer filtern
Möglicherweise sind Sie mehr an einer bestimmten Art von Traffic interessiert als an den beteiligten Hosts. Verwenden Sie in diesem Fall einen auf Portnummern basierenden Filter. Für SMTP-Traffic (Simple Mail Transfer Protocol) geben Sie den folgenden Befehl ein:
tcpdump -i eth0 dst port 25
Wenn Sie ungesicherten Web-Traffic aufspüren wollen, nutzen Sie das folgende Kommando:
tcpdump -i eth0 dst port 80
5. Capture in eine Datei schreiben
Ein Nachteil der oben genannten Beispiele besteht darin, dass tcpdump alle Ergebnisse auf dem Bildschirm ausgibt. Die Informationen laufen dann meist zu schnell durch, um sie zu analysieren oder Muster zu erkennen. In der Regel ist es deshalb besser, die Capture-Ergebnisse stattdessen in eine Datei zu schreiben.
Das gelingt mit der Option -w, gefolgt von einem Dateinamen.
tcpdump -i eth0 -w capture.pcap
Achten Sie hierbei auf die Dateiendung .pcap. Die Capture-Ergebnisse lassen sich nicht als Textdatei nutzen. Darüber hinaus kann Wireshark die tcpdump-Datei öffnen, wenn sie die Endung .pcap trägt.
So können Sie die Capture-Ergebnisse anzeigen
Jetzt, da Sie über eine Capture-Datei verfügen, lassen sich die Ergebnisse auf zwei Arten anzeigen: mit tcpdump oder Wireshark. Tcpdump selbst kann zwar die Datei lesen, aber Wireshark bietet mehr Vorteile.
Capture-Datei mit tcpdump anzeigen
Um die Datei mit tcpdump zu öffnen, geben Sie folgenden Befehl ein:
tcpdump -r capture.pcap
Mit Befehlen wie grep oder awk können Sie nach bestimmten Informationen suchen, die Sie benötigen.
Capture-Datei mit Wireshark anzeigen
Wenn Sie Wireshark auf einem anderen System, zum Beispiel unter Linux, macOS oder Windows, installiert haben, kann Wireshark PCAP-Dateien öffnen. Die Bedienoberfläche von Wireshark ist benutzerfreundlicher und flexibler als tcpdump, vor allem, wenn Sie mit mehreren Capture-Dateien von verschiedenen Rechnern arbeiten.
Um die PCAP-Datei anzuzeigen, starten Sie Wireshark, klicken auf Datei, dann auf Öffnen und navigieren zum Speicherort der Datei – wahrscheinlich ein Netzlaufwerk oder ein lokales Verzeichnis, in das Sie die Datei vom Originalsystem kopiert haben.
Nun stehen Ihnen die Such-, Filter- und Analysefunktionen von Wireshark auf einer praktischen grafischen Oberfläche zur Verfügung.
Stellen Sie sich ein Szenario vor, in dem Sie Pakete auf mehreren Routern, einigen IoT-Geräten und zwei Ihrer Server als Teil eines Netzwerk-Audits oder bei einem Troubleshooting erfassen. Speichern Sie die Capture-Dateien zentral auf einem Netzlaufwerk, und öffnen Sie die Dateien dann mit Wireshark auf Ihrem lokalen Rechner.
Best Practices für das Paket-Capturing mit tcpdump
Tcpdump ist innerhalb bestimmter Grenzen ein nützliches Tool. Die Einstiegsoptionen sind überschaubar, und die Möglichkeit, in eine Datei zu schreiben, ist essenziell. Tcpdump ist ein schlankes Tool und läuft auf der Kommandozeile, so dass man es auf praktisch jedem Linux-basierten System einsetzen kann.
Die grundlegenden Optionen für die ersten Schritte mit tcpdump finden Sie in der folgenden Tabelle.
Flag | Bedeutung |
-D | Anzeige der verfügbaren Schnittstellen. |
-i | Auswahl einer Schnittstelle. |
-w | Schreiben in eine Datei (verwenden Sie die Erweiterung .pcap). |
-r | Lesen aus einer Datei mit tcpdump. |
Wenn Sie das nächste Mal einen Audit oder ein Troubleshooting Ihres Netzwerks planen, empfehlen sich die folgenden tcpdump-Optionen:
- Traffic-Filterung nach Schnittstelle.
- Traffic-Filterung nach Quelle und Ziel.
- Traffic-Filterung nach Portnummer.
- Lesen und Schreiben von Captures mit -r beziehungsweise -w.
- Schreiben der Captures in eine Datei und Analyse mit Wireshark.
- Eventuelle Skripterstellung für alle Captures, die Sie wiederholen möchten.