Einleitung
Wazuh ist primär für die Echtzeitüberwachung von Logquellen konzipiert. Dennoch entsteht in der Praxis häufig der Bedarf, historische Logdateien – etwa aus Firewalls – nachträglich zu analysieren, um:
- vergangene Sicherheitsvorfälle zu untersuchen
- Detection-Logik zu testen
- Dashboards und Reports retrospektiv zu erstellen
- Compliance-Anforderungen zu erfüllen
Ein typisches Szenario: Eine statische FortiGate-Logdatei mit Millionen Einträgen soll in Wazuh ingestiert und automatisiert ausgewertet werden. Dieser Beitrag erklärt, warum das direkte Einlesen nicht funktioniert, welche systembedingten Einschränkungen existieren und wie sich große historische Logmengen kontrolliert und sauber verarbeiten lassen.
Ausgangslage / Problemstellung
Gegeben ist:
- FortiGate-Logdatei: /var/log/firewall.log
- Agent-Konfiguration: <localfile>
<log_format>syslog</log_format>
<location>/var/log/firewall.log</location>
</localfile> - Log-Archivierung auf dem Manager aktiviert: <global>
<logall>yes</logall>
<logall_json>yes</logall_json>
</global>
Symptome:
- Die Datei wird vom Agent erkannt („Analyzing file“).
- Die Logs erscheinen weder in
archives.jsonnoch im Dashboard. - Die Datei enthält ausschließlich historische Daten (statisch, keine neuen Einträge).
- Beim manuellen Replay großer Datenmengen:
- extrem lange Laufzeit
- Brute-Force-Regeln schlagen an
- Alerts erhalten aktuelle Zeitstempel statt Originalzeit
Technische Analyse
1. Warum statische Dateien nicht ingestiert werden
Der Wazuh Agent verwendet das logcollector-Modul, das Dateien ähnlich wie tail -f überwacht.
Wichtige Eigenschaften:
- Es werden nur neu geschriebene Logzeilen verarbeitet.
- Bereits vorhandene Inhalte werden ignoriert.
- Es gibt keinen nativen „Batch-Import“-Mechanismus für Altbestände.
Das Verhalten ist bewusst so implementiert, um:
- Doppelverarbeitung zu vermeiden
- Performance stabil zu halten
- Realtime-Detection sicherzustellen
Eine vollständig statische Datei erzeugt daher keine Events.
2. Warum Replay große Probleme verursacht
Beim Umkopieren historischer Logs in eine neue Datei (Replay-Ansatz):
- Jede Zeile wird als neues Event behandelt.
- Der Alert-Timestamp entspricht der Replay-Zeit.
- Korrelationen (z. B. Brute-Force-Detection) werden verfälscht.
Beispiel:
Wenn 10.000 Login-Fehler aus einem Zeitraum von 3 Monaten innerhalb weniger Sekunden replayed werden, interpretiert Wazuh dies als massiven Brute-Force-Angriff.
3. Performance-Grenzen des Localfile-Moduls
Standardwerte:
- ~500 Events pro Sekunde (EPS)
- 5000 Events Buffer
Bei Millionen Logs bedeutet das:
- mehrere Stunden bis Tage Ingest-Zeit
- potenzielle Eventverluste bei Überlast
- erhöhte CPU-Last auf Agent und Manager
Der Localfile-Mechanismus ist nicht für Massendatenmigration ausgelegt.
Lösung / Best Practices
Für historische Massendaten sind strukturierte Ansätze erforderlich.
Option 1: Kontrolliertes Throttling beim Replay
Wenn Replay zwingend erforderlich ist:
Vorgehen
- Neue Replay-Datei erstellen: /var/log/replay.log
- Agent konfigurieren: <localfile>
<log_format>syslog</log_format>
<location>/var/log/replay.log</location>
</localfile> - Logs mit Rate-Limit einspielen, z. B.:
- 50–100 Events pro Sekunde
- Zeitliche Pausen zwischen Blöcken
- Keine Burst-Injektion
Dadurch werden:
- False-Positive-Korrelationen reduziert
- Buffer-Überläufe vermieden
- Brute-Force-Trigger minimiert
Option 2: Temporäre Deaktivierung korrelierender Regeln
Während der Replay-Phase können:
- Brute-Force-Regeln
- Frequency-basierten Regeln
- Threshold-Detections
temporär deaktiviert oder angepasst werden.
Beispiel:
frequency-Parameter erhöhentimeframevergrößern- Regel temporär in
local_rules.xmlüberschreiben
Nach Abschluss des Imports wieder aktivieren.
Diese Methode verhindert Fehlalarme, ohne den Datenbestand zu verfälschen.
Option 3: Direkter Indexer-Import (nur für Reporting-Zwecke)
Falls das Ziel ausschließlich Analyse und Dashboarding ist (keine Alarmierung):
- Logs extern parsen (z. B. Logstash, Python)
- In korrekt gemappte
wazuh-alerts-*Indizes schreiben - Wazuh-Template zwingend anwenden
Wichtig:
- Keine aktive Regel-Engine
- Keine Echtzeit-Korrelation
- Nur Visualisierung
Dieser Ansatz ist deutlich schneller für Millionen Datensätze.
Option 4: Offline-Analyse mit Wazuh-Logtest
Falls primär die Regelerkennung geprüft werden soll:
/var/ossec/bin/wazuh-logtest
Hiermit können:
- FortiGate-Logs getestet
- Decoder validiert
- Regelmatches überprüft
werden – ohne produktives System zu beeinflussen.
Option 5: FortiGate-spezifische Decoder prüfen
Wazuh enthält native FortiGate-Decoder und -Regeln:
0100-fortigate_decoders.xml0390-fortigate_rules.xml
Falls keine Alerts entstehen:
- Logformat prüfen (syslog vs. raw)
- Custom Decoder erstellen
- Eigene Regeln definieren
Dokumentation:
Custom Decoders
https://documentation.wazuh.com/current/user-manual/ruleset/decoders/custom.html
Custom Rules
https://documentation.wazuh.com/current/user-manual/ruleset/rules/custom.html
Lessons Learned / Best Practices
1. Wazuh ist primär ein Realtime-System
Batch-Import historischer Massendaten ist nicht Kernfunktion des Logcollectors.
2. Replay verfälscht zeitbasierte Korrelation
- Alert-Zeit ≠ Original-Logzeit
- Frequency-Detections werden verzerrt
- Brute-Force-Detections triggern ungewollt
3. Millionen Logs benötigen ingest-strategische Planung
Unkontrolliertes Replay führt zu:
- Performanceproblemen
- Falschmeldungen
- Eventverlust
Throttling ist zwingend erforderlich.
4. Reporting und Detection sind unterschiedliche Use Cases
Wenn das Ziel ist:
- Historische Analyse → Direktindexierung
- Regellogik testen → wazuh-logtest
- Forensische Rekonstruktion → kontrollierter Replay
Die Architektur sollte dem Ziel entsprechen.
5. Template- und Mapping-Konsistenz sicherstellen
Bei jedem Import in wazuh-alerts-*:
- Wazuh-Template prüfen
- Feldtypen validieren
- Keyword-Felder für Aggregationen sicherstellen
Fazit
Das Ingestieren statischer, historischer FortiGate-Logs ist in Wazuh grundsätzlich möglich – jedoch nicht als direkter Datei-Import im klassischen Sinne.
Der Logcollector verarbeitet ausschließlich neue Events. Für Millionen historischer Logzeilen sind daher kontrollierte Replay-Strategien oder alternative Importmethoden erforderlich.
Wer große Altbestände analysieren möchte, sollte:
- die Echtzeitarchitektur von Wazuh berücksichtigen
- Korrelationseffekte einplanen
- ingest-raten kontrollieren
- gegebenenfalls Detection und Reporting voneinander trennen
Mit einer sauberen Strategie lässt sich auch ein umfangreicher historischer Datenbestand strukturiert und sicher in Wazuh auswerten.
Mehr zu Wazuh …
https://wazuh.com/?utm_source=ambassadors&utm_medium=referral&utm_campaign=ambassadors+program
Mehr zum Wazuh Ambassador Program …
https://wazuh.com/ambassadors-program/?utm_source=ambassadors&utm_medium=referral&utm_campaign=ambassadors+program
https://wazuh.slack.com/archives/C0A933R8E/p1769972326017929