tcpdump
Der Shell-Befehl tcpdump ist als Sniffer die bekannteste Software zur Überwachung und Auswertung von Datenverkehr in einem Rechnernetz. Das Programm liest alle TCP-Pakete, die durchs lokale Netzwerk laufen - dabei gibt es allerdings bloss den Paket-Header aus, ohne Auskunft über den Inhalt zu liefern. Der Aufruf ist nur als Benutzer "root" über die Befehlszeile möglich.
Verwandte Programme sind die folgenden:
- traceroute
- ping
- mtr (Matt's traceroute) kombiniert ping und traceroute.
- iptraf zeigt an, was genau auf der Netzwerkkarte passiert, welche Protokolle genutzt werden und mit welchen anderen Rechnern der eigene in Verbindung steht.
Syntax
tcpdump [ -deflnNOpqStvx ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ] [ expression ]
Optionen
Option | Beschreibung |
---|---|
-i | Einschränkung der Ausgabe auf die angegebene Netzwerkschnittstelle (z. B. "eth0"). |
-l | Make stdout line buffered |
-n | Unterdrücken der Namensauflösung. |
-r | Read packets from file |
-vv | (slightly more) verbose output |
-w | Schreiben der Rohdaten in einer Datei. |
-x | Anzeige jedes Pakets. |
Verwendung
Anzeige, ob auf dem lokalen Rechner Pakete von der IP-Adresse 10.0.5.4 ankommen.
# tcpdump -n host 10.0.5.4
Anzeige, ob Pakete auf port 22 des lokalen Rechners ankommen.
# tcpdump -n port 22
Anzeige aller an der Schnittstelle eth0 ankommenden Daten für Port 4080.
# tcpdump -i eth0 port 4080
Anzeige des Netzwerkverkehrs mit Rechner 10.0.5.4, wobei IP-Adressen nicht in Rechnernamen umgewandelt werden.
# tcpdump -n host 10.0.5.4
Anzeige des Netzwerkverkehrs mit Rechner 192.168.100.104 auf Port 3045, wobei eine Puffergrösse von 1024 Bytes eingestellt ist und die Ausgabe auch als Hex-Dump erfolgt ("-xX"). Die Dumpdatei wird in die Datei "/tmp/tcp.dmp" geschrieben.
# tcpdump -s 1024 -xX -n host 192.168.100.104 and port 3045 > /tmp/tcp.dmp
...
# tcpdump host 160.85.2.82 and host 10.120.110.179 and tcp port 3045
...
# tcpdump -n host 10.0.5.106 -vv -x -X -s 1024
...
# tcpdump -w /tmp/tcp.dump host 10.0.1.29 & # ... # tcpdump -n -vv -x -r /tmp/tcp.dump > /tmp/tcp.dump.asc
Beispiel: Verbindungstest
# tcpdump -n host IP-address > /tmp/tcp.dump & [1] PID # ping IP-address request reply alive # kill PID # more /tmp/tcp.dump
Beispiel
# tcpdump -n host IP-address > /tmp/tcp.dump &< [1] PID
# xpadd -de printername -dr /etc/hosts
# kill PID
# more /tmp/tcp.dump
Falls der port bekannt ist:
# tcpdump -n host IP-address and port port-number > /tmp/tcp.dump & [1] PID
Die entstehende Datei zeigt dann:
- Server schickt IP-Paket an PC
- PC schickt IP-Paket an Server
- acknowledge vom Server zum PC
- Push (P) vom Server zum PC
- Finish Push (FP) vom Server zum PC
- acknowledge vom PC zum Server
- Finish (F) vom PC zum Server (das dauerte z. B. bei der SB Aarau 19 Sekunden)
- Leerzeile
- acknowledge vom Server zum PC
# tcpdump -n net 10.10.11
Die Ausgabe zeigt dann:
- die Herkunfts-IP (z. B. 10.10.11.1, die Cisco in Basel)
- die Ziel-IP (z. B. 10.0.5.50, den Server in Lausanne)