Wie wir /var/log überwachen wollten – und Wazuh zum Noise-Generator wurde
Wer Auditd produktiv einsetzen will, lernt relativ schnell eine harte Wahrheit:
Auditd ist gnadenlos ehrlich.
Es loggt nicht nur Angriffe – sondern auch dich selbst.
In diesem Beitrag zeige ich, wie wir auf Debian ein sauberes Auditd-Setup für Wazuh aufgebaut haben, warum plötzlich der Wazuh-Logcollector selbst im Audit-Log landete, und wie man das kernel-seitig korrekt löst – ohne die eigentliche Sicherheitsidee zu zerstören.
Ausgangspunkt: Auditd + Neo23x0 + Wazuh
Unser Setup:
- Debian
auditdmit Neo23x0 Ruleset- Wazuh Agent + zentraler Manager
- Ziel:
- Root-Kommandos nachvollziehbar machen
- Log-Manipulation erkennen
- kein Log-Spam
Wir hatten bereits gelernt:
- Wazuh nutzt Keys als Kategorien (
audit-wazuh-w/x/c/...) - Audit-Regeln sind reihenfolgeabhängig
- Noise muss vor den eigentlichen Regeln rausgefiltert werden
Also gingen wir den nächsten logischen Schritt.
Der Plan: /var/log überwachen – aber nur echte Benutzer
Was wir wollten:
Alarm, wenn jemand Logfiles löscht oder verändert –
aber nicht, wenn systemd, cron oder Logrotate arbeiten.
Die klassische Audit-Regel dafür:
-w /var/log -p wa -F auid>=1000 -F auid!=4294967295 -k audit-wazuh-w
Klingt perfekt:
-p wa→ write + attribute (löschen, umbenennen, chmod)auid>=1000→ echte Benutzeraudit-wazuh-w→ Wazuh-Standard-Key
Und ja: User-Aktionen wurden sauber geloggt.
Das Problem: Auditd loggt plötzlich Wazuh selbst
Kurz darauf tauchte im audit.log regelmäßig folgendes auf:
comm="wazuh-logcollec"
exe="/var/ossec/bin/wazuh-logcollector"
syscall=openat
exit=13
auid=unset
key="audit-wazuh-w"
Alle paar Sekunden.
Was passiert hier?
wazuh-logcollectorliest Logfiles- dafür nutzt er
openat() - einige Dateien darf er nicht lesen →
EACCES (13) - Auditd loggt jeden Versuch, nicht nur Erfolge
Auditd tut also genau das, was wir ihm gesagt haben:
„Überwache Zugriffe auf
/var/log“
Das Problem:
Jetzt überwacht Wazuh sich selbst.
Warum der auid-Filter nicht geholfen hat
Wir hatten extra:
-F auid>=1000
-F auid!=4294967295
Aber trotzdem kam der Event.
Der Grund ist ein Detail, das in vielen Anleitungen fehlt:
Watch-Regeln (
-w) erzeugen Events, bevor User-Filter greifen.
Der Kernel:
- sieht Zugriff auf
/var/log - erzeugt Event
- danach werden Filter angewendet
👉 Für Daemons reicht auid nicht als Ausschluss.
Die richtige Lösung: syscall-Exclude VOR der Watch-Rule
Die Lösung ist nicht, /var/log weniger streng zu überwachen.
Die Lösung ist:
Den verursachenden Prozess auf Syscall-Ebene ausschließen – früh.
Korrekte Exclude-Regel
Datei:
/etc/audit/rules.d/05-noise.rules
# Ignore wazuh logcollector access to /var/log
-a never,exit -F arch=b64 -S openat -F exe=/var/ossec/bin/wazuh-logcollector
-a never,exit -F arch=b32 -S openat -F exe=/var/ossec/bin/wazuh-logcollector
Warum das funktioniert:
- gleiche Regelklasse (
exit) - gleicher Syscall (
openat) - identischer Prozess (
exe=) - wird vor der Watch-Rule geladen
Ergebnis:
- der Kernel erzeugt das Event gar nicht erst
- kein Audit-Log
- kein Wazuh-Noise
- User-Manipulationen bleiben sichtbar
Die entscheidende Lektion aus dem Debugging
Diese Situation hat ein wichtiges Auditd-Prinzip bestätigt:
Auditd ist kein „Filter nachträglich“-System.
Es ist ein „Entscheide früh oder lebe mit dem Event“-System.
Merksätze aus der Praxis:
- Watch-Regeln sind mächtig – aber gnadenlos
auidhilft gegen Systemdienste, nicht gegen Watch-Noise- Excludes müssen:
- gleiche Regelklasse
- gleichen Syscall
- früher geladen
- Wazuh sollte niemals sich selbst auditieren
Unser finales, sauberes Setup (Kurzfassung)
05-noise.rules
- zabbix_agentd (socket)
- wazuh-logcollector (openat)
40-var-log.rules
-w /var/log -p wa -F auid>=1000 -k audit-wazuh-w
60-neo.rules
Neo23x0 Baseline
70-rootcmd.rules
execve als root
Ergebnis:
- 🔍 echte Log-Manipulation sichtbar
- 🧠 kein Self-Noise
- 📉 kontrolliertes Log-Volumen
- 🔐 forensisch brauchbar
Fazit
Auditd ist kein Plug-and-Play-Tool.
Aber wenn man einmal verstanden hat:
- Regelreihenfolge
- Regelklassen
- Watch vs. Syscall
- Kernel-seitiges Filtern
…dann bekommt man genau das, was man will:
Signale statt Rauschen.
Und genau darum geht es bei Security-Logging.
Weitere Informationen zu auditd findet man hier!