# OPNsense Logging: Analyse, Forensik & Live-Monitoring
TL;DR / Management Summary Ein Paketfilter ohne Logging ist wie ein Flugzeug ohne Blackbox. Wir nutzen die Live View, um Fehler in Echtzeit zu finden, und konfigurieren lokale Logs, um Angriffsversuche zu dokumentieren. Ein Senior Admin aktiviert Logging niemals für den gesamten Traffic (Performance-Killer!), sondern gezielt für Block-Regeln und kritische Applikations-Pfade. Ziel ist eine Infrastruktur, die im Falle eines Einbruchs sofort die IP-Spuren liefert.
# 1. Einführung & Log-Architektur
Vom Paket zum Log-Eintrag.
Wenn eine Firewall-Regel das Flag “Log” gesetzt hat, schickt das pf Subsystem eine Nachricht an den User-Space.
- System Log: Wird im
clogFormat (zirkulär) gespeichert, um die Disk nicht zu fluten. - Live View: Eine Echtzeit-Sicht auf den Buffer des Kernels.
# 2. Die Live-Ansicht (Live View)
Troubleshooting in Echtzeit.
Firewall -> Diagnostics -> Live View.
Hier sehen Sie:
- Rot: Blockierte Pakete.
- Grün: Erlaubte Pakete.
- Regel-ID (rid): Ein Klick auf die ID öffnet direkt die zugehörige Firewall-Regel.
# Profi-Filterung
Nutzen Sie das Suchfeld für komplexe Szenarien:
dst_port: 443 AND src: 192.168.1.50label: "GEO_BLOCK"
# 3. Deep Dive: Log-Konfiguration & Härtung
Das Rauschen bändigen.
# 1. Globale Logging-Settings
System -> Settings -> Logging.
- Preserve Logs: Stellen Sie ein, wie viele Tage Logs lokal vorgehalten werden sollen (DSGVO beachten!).
- Remote Syslog: Senden Sie Firewall-Logs an einen externen Collector (Artikel 584).
# 2. Log-Level für Regeln
Aktivieren Sie “Log packets handled by this rule” nur dort, wo es nötig ist:
- Immer: Bei Regeln, die Management-Zugriffe (SSH, GUI) erlauben.
- Niemals: Bei Regeln für DNS-Anfragen oder HTTP-Traffic von 500 Usern (Log-Explosion).
# 4. Day-2 Operations: Packet Capture
Die ultimative Wahrheit.
Wenn das Log nicht reicht, müssen Sie die Bits sehen.
Diagnostics -> Packet Capture.
- Interface wählen (z.B. WAN).
- Filter setzen (z.B. Port 80).
- Aktion: Capture starten, Download als
.pcapund in Wireshark öffnen.
# 5. Troubleshooting & “War Stories”
Wenn das Log schweigt.
# Top 3 Fehlerbilder
-
Symptom: Keine roten Einträge im Log, aber die Verbindung schlägt fehl.
- Ursache: Die “Default Deny” Regel loggt standardmäßig nicht.
- Lösung: Haken bei “Log Default Block” in den Firewall-Settings setzen.
-
Symptom: Das Log zeigt
TCP:FPAoderTCP:RADrops bei aktiven Verbindungen.- Ursache: Stateful-Inspection Mismatch (Out-of-order Pakete).
- Lösung: Oft harmlos, bei Problemen “Sloppy State” für diese eine Regel aktivieren.
-
Symptom: Log-Datei ist korrupt oder wird nicht mehr aktualisiert.
- Lösung:
clog -i -s 512000 /var/log/filter/latest.logvia Shell (initialisiert die Log-Datei neu).
- Lösung:
# “War Story”: Der “unsichtbare” Hacker
Wir bemerkten eine ungewöhnlich hohe CPU-Last auf der Firewall. Das Dashboard zeigte normalen Traffic. Die Entdeckung: Wir aktivierten das Logging für die “Bogon-Block” Regel am WAN. Das Ergebnis: Ein Botnetz bombardierte die Firewall mit Paketen von gefälschten (nicht-routbaren) IPs. Da diese Pakete standardmäßig lautlos gedroppt wurden, sahen wir die Last, aber nicht die Ursache. Erst das Logging der Default-Rules brachte den Angriff ans Licht. Lehre: Loggen Sie Ihre Drops! Sie sind das Frühwarnsystem für jeden Angriff.
# 6. Monitoring & Reporting
Dashboards für das SOC.
# Insight (Reporting)
Unter Reporting -> Insight visualisiert OPNsense die Log-Daten.
- Top Blocked Hosts: Wer versucht am häufigsten einzubrechen?
- Top Ports: Welche Dienste werden am meisten angefragt?
# 7. Fazit & Empfehlung
Logging ist der Unterschied zwischen “Raten” und “Wissen”.
- Empfehlung: Nutzen Sie die Live View mit dem Filter “rid” für schnelles Troubleshooting.
- Wichtig: Zentralisieren Sie Ihre Logs. Eine Firewall, die ihre Logs nur lokal speichert, ist im Falle einer physischen Zerstörung oder eines Totalausfalls wertlos für die Analyse.
# Anhang: Cheatsheet
| Aufgabe | Pfad / Befehl |
|---|---|
| Live Log | Firewall -> Diagnostics -> Live View |
| Log Verzeichnis | /var/log/filter/ |
| Log via Shell | clog /var/log/filter/latest.log |
| Pakete dumpen | tcpdump -i any pflog0 |