Skip to main content
  1. Posts/

Fortigate Debugging - Debug Flow

Table of Contents

Im Rahmen meines Jobs habe ich regelmäßig mit Fortigate Firewalls des Herstellers Fortinet zu tun, wobei ich die Arbeit mit der CLI dieser Geräte als nicht wirklich intuitiv empfinde. Aus diesem Grund starte ich mit diesem Post eine Fortigate Debugging Serie, welche sich mit dem Lauf der Zeit aus mehreren Artikeln zusammensetzen wird. Jeder Abschnitt sammelt diverse hilfreiche Kommandos und Abläufe, welche sich im Fehlerfall zum Debugging einsetzen lassen. Die verschiedenen Posts werden sich nach Möglichkeit auf ein bestimmtes Thema konzentrieren, wie zum Beispiel dem Debugging von VPN Verbindungen oder der High Availability Komponente.

Fortigate Debug Flow #

Ich beginne die Reihe mit dem Debug Flow Feature, mit welchem sich der Lauf von Paketen durch das System genauer nachvollziehen lässt. Dieses Feature bietet damit einen erste Möglichkeit, jenen Schritt der Abarbeitung zu identifizieren, welcher für einen Fehler verantwortlich ist. Ein Debug Flow ist vor allem deswegen hilfreich, weil er Informationen liefert, welche vom System selbst nicht geloggt werden. Tritt beispielsweise auf einer Fortigate mit Werkskonfiguration asymmetrisches Routing auf, verwirft das Geräte entsprechende Pakete ohne eine Meldung. Über den Debug Flow lässt sich eine entsprechende Fehlermeldung dagegen auslesen und das Problem so erkennen.

Der generelle Ablauf zum Starten eines Debug Flows über die CLI ist in folgendem Code Block zu sehen und entsprechend kommentiert.

# Setzt die Debug Einstellungen zurück, um nicht gewünschte Ausgaben zu vermeiden
FGT-Test (VDOM_A) # diagnose debug disable
FGT-Test (VDOM_A) # diagnose debug flow trace stop
FGT-Test (VDOM_A) # diagnose debug flow filter clear
FGT-Test (VDOM_A) # diagnose debug reset
# Setzt einige grundlegende Einstellungen für eine hilfreichere Ausagbe
FGT-Test (VDOM_A) # diagnose debug flow show function-name enable
show function name
FGT-Test (VDOM_A) # diagnose debug console timestamp enable
# Definiert den Filter, welcher entscheidet ob ein Trace relevant ist oder nicht
# Mit diagnose debug flow filter ? lassen sich alle Filtermöglichkeiten anzeigen
FGT-Test (VDOM_A) # diagnose debug flow filter daddr 50.32.64.174
FGT-Test (VDOM_A) # diagnose debug flow filter dport 22
# Definiert die maximale Anzahl an Traces an, die aufgezeichnet werden sollen
FGT-Test (VDOM_A) # diagnose debug flow trace start 10
# Startet den Debug Flow, die Ergebnisse werden auf der Konsole ausgegeben
FGT-Test (VDOM_A) # diagnose debug enable
# Beendet den Trace
FGT-Test (VDOM_A) # diagnose debug disable

⚠️ Achtung: Besonders auf Geräten, die größere Mengen an Traffic verarbeiten, ist es wichtig, den Filter möglichst konkret zu gestalten. Ist der Filter dagegen zu weit gefasst, werden unter Umständen die wirklich relevanten Pakete nicht aufgezeichnet bzw. verfolgt. Wie bereits im Code Block beschrieben, können mit diagnose debug flow filter ? alle möglichen Filter angezeigt werden.