Unter dem Titel "Sophos Firewall Cookbook" stellen wir Euch Tipps, Tricks und HowTo's bereit die die Anwendung der Sophos Firewall im täglichen Umgang leichter machen können. Das heutige Thema im Sophos Firewall Cookbook: tcpdump.
Einleitung
tcpdump ist ein CLI Tool mit dem man ein- und/oder ausgehende Daten auf Netzwerkebene erfassen kann. Gerne nennen man solche Tools auch Paket-Sniffer. Wer in die Textausgabe tiefer einsteigen möchte, kann die Ausgabe auch in eine .pcap Datei umleiten. Diese lässt sich dann zum Beispiel in Wireshark öffnen.
Eine etwas abgespeckte aber auch nicht zu vernachlässigende Variante von tcpdump findet Ihr auch in der Firewall WebUI unter dem Punkt "Paket Capture". Oft reicht auch diese Variante. In einigen Analysefällen kommt man aber nicht um das "echte" tcpdump herum.
Der Name von tcpdump ist irreführend. Das Tool kann nicht nur TCP, sondern auch UDP und ICMP Pakete mitschneiden!
Im Folgenden liste ich einige tcpdump Kommandos und Optionen auf, welche ich in der Vergangenheit häufiger benutzt habe. Ergänzungen sind gerne gesehen!
Basics in tcpdump
Zunächst ein paar Basic Zeilen die in den meisten Fällen ausreichend sind. Die Bedingungen lassen sich mit and/or beliebig verknüpfen. Host und Port Filter dürfen mehrfach vorkommen.
tcpdump -envi Port3 host 192.168.1.2 and port 443
tcpdump -envi Port3 src host 192.168.1.2 and dst port 443
tcpdump -envi Port3 host 192.168.1.2 and icmp
tcpdump -envi Port3 port 67 or port 68
tcpdump -envi Port3 host 192.168.1.2 and portrange 21-23
tcpdump -envi Port3 net 192.168.1.0/24
tcpdump -envi Port3 dst net 192.168.1.0/24
tcpdump -envi Port3 ether src aa:aa:aa:aa:aa:aa
tcpdump -envi Port3 ether host bb:bb:bb:bb:bb:bb
tcpdump -ni Port3 -e ether proto 0x8809
Verkettung von and/or Bedingungen in tcpdump
Manchmal reichen die Basic-Kommandos nicht aus. Es wird einfach zu viel ausgebeben und die Ausgabe ist nicht wirklich lesbar. Mit "and/or und Klammern" lassen sich ganz einfach Verkettungen in den Filter einfügen. Wichtig ist hier, dass der Filter String in einfache Anführungszeichen (') gesetzt wird. Ansonsten ist die Ausgabe falsch oder das Kommando wird nicht akzeptiert.
tcpdump -envi Port3 '(host 192.168.1.2 or host 192.168.1.1) and (port 67 or port 68)'
tcpdump -envi Port3 'src net 1.1.1.0/24 and (dst net 1.1.2.0/24 or dst net 1.1.3.0/24)'
Ausgabe tcpdump in eine pcap Datei
Soll die Ausgabe von tcpdump später analysiert werden wie zum Beispiel in Tools wie Wireshark, dann muss die Ausgabe in eine Datei umgelenkt werden.
tcpdump -envi Port3 -b -w /tmp/data/tcpdump_Port3.pcap net 192.168.119.0/24 and dst port 443
Der folgende Befehl läuft im Hintergrund auch bei geschlossener SSH Sitzung bis zum manuellen Abbruch!
Dadurch kann die Festplatte voll laufen. Je nach Anwendungsfall bitte das übernächste Bespiel nutzen!
Es können mehrere Dump parallel laufen.
# Dump läuft auch bei geschlossener SSH Sitzung weiter
tcpdump -envi Port3 -b -w /tmp/data/tcpdump_Port3.pcap net 192.168.119.0/24 and dst port 443 &
# tcpdump beenden. Dies beendet ALLE laufenden tcpdump Sitzungen
killall tcpdump
Besser ist es eine Umlaufprotokollierung zu nutzen. So wird nur eine definierte Mende Daten geschrieben und beim Erreichen wieder überschrieben.
Im folgenden Beippiel werden 30 Dateien á 30 Megabyte geschrieben (30 * 30 MB = 900 MB). Der freie Platz sollte dennoch auch hier vorher geprüft werden!
-C = Dateigröße
-W = Anzahl der Dateien
Es können mehrere Dump parallel laufen.
# Dump mit Umlaufprotokollierung laufen lassen
nohup tcpdump -C 30 -W 30 -w /tmp/data/tcpdump_Port3.pcap -envi Port3 host 155.56.210.164 -s0 -b &
# tcpdump beenden. Dies beendet ALLE laufenden tcpdump Sitzungen
killall tcpdump
Download der pcap Dateien
Download über HTTPS
Der Download über HTTPS ist mit Vorsicht durchzuführen. Linux Kenntnisse wären wünschenswert da bei falscher Verwendung ggf. ein Schaden am System entstehen könnte!
Wir übernehmen keinerlei Haftung für möglich Schäden!
- Verzeichnis "/" schreibend mounten
mount -w -o remount /
- Dump in WebUI Pfad kopieren (Speicherplatz beachten!)
cp /tmp/data/tcpdump.pcap /usr/share/userportal/tcpdump.pcap
- Dump über Browser laden (Management über TCP 4444 muss erreichbar sein)
https://<XG Firewall IP:4444>/tcpdump.pcap
- Datei von Firewall löschen
rm -rf /usr/share/userportal/tcpdump.pcap
- Verzeichnis "/" lesend mounten
mount -r -o remount /
Download über WinSCP
Einfach über ein SFTP Programm (z.B. WinSCP) auf die Firewall verbinden. Dazu den Benutzer "admin" und das zugehörige Passwort nutzen. Der SSH Zugriff muss dazu erlaubt sein.
Die Datei aus dem Verzeichnis /tmp herunterladen
Upload von Firewall auf externen FTP Server
Habt ihr einen externen FTP Server, kann der Dump auch direkt von der CLI hochgeladen werden.
curl --ftp-ssl ftp://FTP-SERVER -u username:password -v -T {/tmp/capture_out.pcap,/tmp/capture_in.pcap}
Weitere tcpdump Parameter
Hier liste ich noch ein paar weitere Parameter oder ihre Bedeutung auf. Eine vollständige Liste lässt sich hier einsehen. Möglichweise sind nicht alle Parameter die auf de Webseite gelistet sind in der Sophos Shell verfügbar da Sophos seine Shell-Kommandos teilweise eingeschränkt hat.
- -c count
Exit after receiving count packets - -n
Don't convert addresses (i.e., host addresses, port numbers, etc.) to names. - -v / -vv / -vvv
Detaillevel of content - -tttt
Zeitstempel in den Ausgaben. Bei Ausgabe in Dateien ist dieser bereits enthalten.