FortiGate Sniffer

Der in FortiOS integrierte Packet Sniffer ist eines meiner meist genutzten Troubleshooting Tools der Fortinet FortiGate Firewalls.

Der Packet Sniffer ist ein CLI Befehl mit folgendem Aufbau:

diagnose sniffer packet <Schnittstelle> "Filter" <Detaillevel> <Paketanzahl> a

Schnittstelle:

Die Angabe der Schnittstelle erlaubt es die Ausgabe auf ein beliebiges Interface zu reduzieren.

Soll keine Schnittstelle als Filter genutzt werden, so kann man dies durch die Angabe von „any“ entsprechend angeben:

diagnose sniffer packet any

Ich arbeite in vielen Fällen ohne Angabe der Schnittstelle, da ich nur in dieser Variante den gesamten Paketverlauf zwischen zwei Endpunkten sehe.
Ist die Fortigate selbst die Quelle bzw. das Ziel des Verkehrs, wie beispielsweise bei Einsatz als VPN-Gateway, so kann die Angabe der Schnittstelle ein sinnvoller Parameter sein.

Filter:
Bei den Filterexpressions handelt es sich um die gängige tcpdump Syntax.

In einem Großteil meiner Trafficanalysen komme ich mit folgenden Expressions aus:

host IP-AdresseAusgabe anhand der IP-Adresse unabhängig davon, ob diese als Quell- oder Ziel-IP-Adresse auftritt.
src Quell-IP-AdresseNur Pakete mit der angegebene Quell-IP-Adresse werden ausgegeben.
dst Ziel-IP-AdresseNur Pakete mit der angegebene Ziel-IP-Adresse werden ausgegeben.
port PortnummerNur Pakete mit der angegebene Portnummer werden ausgegeben unabhängig, ob diese als Quell- oder Ziel-Portnummer auftritt.
sport Quell-PortnummerNur Pakete mit der angegebenen Quell-Portnummer werden ausgegeben.
dport Ziel-PortnummerNur Pakete mit der angegeben Ziel-Portnummer werden ausgegeben.
net Netzadresse und MaskeNur Pakete aus bzw. zu dem angegebenen Netzwerk werden angezeigt.
Protokoll: icmp, udp, tcp, esp, ikeNur Pakete des angegebenen Protokolls werden ausgegeben.

Die eingesetzten Filter können fast beliebig kombiniert werden.

Detaillevel:

1: Header werden mit ausgegeben.
2: Header und Daten ab dem Internet Protokoll werden ausgegeben.
3: Header und Daten ab dem Ethernet Frames werden ausgegeben.
4: Header und Namen der Schnittstellen werden ausgegeben.
5: Header und Daten ab Internet Protokoll sowie die Namen der Schnittstellen werden ausgegeben.
6: Header und Daten ab dem Ethernet Frame sowie die Namen der Schnittstellen werden ausgegeben.

Paketanzahl:

Diese Option gibt die Anzahl der auszugebenden Pakete an. Setzt man diesen Wert bspw. auf 3 werden insgesamt drei Pakete auf der CLI ausgegeben und der Packet Sniffer stoppt automatisch.

Wird dieser Wert auf 0 gesetzt, läuft der Packetsniffer bis zum manuellen Abbruch durch den Anwender.

a:
Diese Option sorgt für die Anzeige der Timestamps

Bei FortiGate Firewalls mit Hardware Offloading gibt es eine Besonderheit zu beachten, da es hier bspw. zu einem Offloading der TCP Sessions nach dem 3-Wege Handshake kommt. Im Packetsniffer sehen wir dann nur den Handshake und alle weiteren Daten der bestehenden TCP Session würden nicht aufgezeichnet werden. Das Offloading lässt sich jedoch gezielt pro Firewallpolicy deaktivieren:

config firewall policy
edit "<policy-id>"
set auto-asic-offload disable
end

Nach Möglichkeit sollte das Offloading abhängig von der jeweiligen Systemlast spezifisch eingerichtet werden. Es bietet sich an, eine eigene Firewallregel für den jeweiligen Verkehr zu erstellen und dort dann das Offloading zu deaktivieren.

Noch etwas anders funktioniert der Packet Sniffer auf FortiGates mit aktiver Hyperscale Lizenz, aber dies ist ein Thema für einen eigenen Artikel 😉


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.