Manchmal ist es notwendig den Datenverkehr auf einem Server oder einer Appliance zu überwachen oder für eine bestimmte Zeit zu begutachten. Dabei kommt es nicht selten vor, dass diese Geräte sich nicht unmittelbar in der Nähe des Administrators befinden und nur über eine Remote-Verbindung (z.B. über ssh) erreichbar sind. Hier wir eine Möglichkeit vorgestellt, wie man den Datenstrom mittels ssh, tcpdump und Wireshark überwachen kann.
Die folgende Darstellung zeigt einen entfernten Linux-Server (IP-Adresse 10.0.0.80), der aus einem lokalen Netzwerk überwacht werden soll.
Unser Vorhaben können wir auf der Kommandozeile wie folgt ausführen.
ssh root@10.0.0.80 tcpdump -U -s0 -i eth0 -w - 'not port 22' | wireshark -k -i –
In der folgenden Tabelle werden die einzelnen Optionen erläutert.
ssh | Secure-Shell-Befehl |
root@10.0.0.80 | IP-Adresse des Servers, der überwacht werden soll. Nutzer Root. |
tcpdump | Paket-Sniffer für die Kommandozeile |
-U | Daten werden sofort geschrieben und nicht erst im Output-Puffer zwischengespeichert. Dies beschleunigt die Übertragung. |
-s0 | Gibt an wie viele Bytes je Paket mitgeschnitten werden. Sollen alle Pakete komplett mitgeschnitten werden, so muss man hier eine 0 angeben. Standard sind 68 Bytes. |
-i eth0 | Hier trägt man die Netzwerkschnittstellen ein, auf dem der Datenverkehr mitgeschnitten werden soll. |
-w – | Mit dieser Option schreib man die Pakete (normalerweise) in eine Datei. Hier bedeutet es: „Schreibe alles nach Standardausgabe!“. |
‘not port 22’ | Wir wollen den ssh-Datenverkehr zum und vom Server nicht aufzeichnen. |
| | Die Ausgabe des Kommandos tcpdump wird hier an das nächste Kommando (wireshark) übergeben. |
wireshark | Öffnet Wireshark in der grafischen Umgebung |
-k | Startet die Aufzeichnung sofort (standardmäßig wird sonst erst mal nichts gemacht) |
-i – | Name der Netzwerkschnittstelle von der Datenverkehr aufgezeichnet werden soll. In unserem Fall bedeutet das: „Lese alles was du in der Standardeingabe findest!“. Hier also die Daten, die mit tcpdump aufgezeichnet wurden. |
Wie in der nächsten Abbildung zu erkennen, sollte der Befehls als nichtprivilegierten Nutzer gestartet werden. Wie man diese einrichtet, kann man hier nachlesen. Nach Eingabe des Passwortes wird sofort mit der Aufzeichnung der Daten begonnen.
Das folgende Bild zeigt die Ausgabe der Pakete in Wireshark.