Auditd auf Debian installieren und für Wazuh optimieren

Praxis-Howto mit Neo23x0 Ruleset, Wazuh-Integration & Debug-Guidelines


Ziel dieser Anleitung

  • Auditd sauber auf Debian installieren
  • Neo23x0 audit.rules als Basis nutzen
  • Audit-Events korrekt an Wazuh anbinden
  • Root-Aktionen zuverlässig loggen
  • Noise (z. B. Zabbix, systemd, cron) sauber entfernen
  • Typische Fehler verstehen und systematisch debuggen

1. Auditd installieren (Debian)

sudo apt update
sudo apt install -y auditd audispd-plugins

Status prüfen:

sudo systemctl status auditd

Auditd muss laufen, sonst kommen keine Events.


2. Grundverständnis (wichtig!)

Auditd besteht aus:

  • Kernel-Hooks (erzeugen Events)
  • Regeln (was wird geloggt)
  • Userspace-Tools (auditctl, ausearch, aureport)
  • Integration (z. B. Wazuh)

Zwei wichtige Begriffe:

  • uid/euid → technischer User
  • auid → ursprünglicher Login-User
    (4294967295 / unset = Systemdienst)

👉 Für Root-Forensik ist euid=0 entscheidend, nicht auid.


3. Neo23x0 Ruleset installieren (Best Practice)

Warum Neo23x0?

  • Security-fokussiert
  • bewährt
  • gute Abdeckung für Privilege Escalation, Persistence, Tampering
  • Geforkt in eigenem Repo mit wazuh-spezifischen Anpassungen

Setup mit augenrules (empfohlen)

cd /etc/audit/rules.d
sudo curl -o 60-neo.rules \
  https://raw.githubusercontent.com/mimugmail/auditd-wazuh/refs/heads/master/audit.rules

Regeln laden:

sudo augenrules --load
sudo systemctl restart auditd

Prüfen:

sudo auditctl -l | head

4. Root-Kommandos explizit loggen (wichtig!)

Das Neo-Ruleset loggt nicht automatisch alle Root-Commands.

Ergänzende Regel (ans Ende!)

Datei:

/etc/audit/rules.d/70-rootcmd.rules
# Log all commands executed as root
-a exit,always -F arch=b64 -F euid=0 -S execve -k audit-wazuh-x
-a exit,always -F arch=b32 -F euid=0 -S execve -k audit-wazuh-x

Reload:

sudo augenrules --load
sudo systemctl restart auditd

Test:

sudo ls /
sudo ausearch -k rootcmd -ts recent

5. Auditd + Wazuh: Keys richtig verstehen

Wichtiges Missverständnis

Wazuh hat keine festen Decoder pro Audit-Key.

Der -k <key>:

  • ist ein Label
  • wird in Wazuh über eine CDB-Liste (audit-keys) eingeordnet

Wazuh kennt standardmäßig 5 Kategorien:

KeyBedeutung
audit-wazuh-rread
audit-wazuh-wwrite
audit-wazuh-aattribute
audit-wazuh-xexecute
audit-wazuh-ccommand

6. Typisches Problem: Audit-Noise (z. B. Zabbix)

Symptom

Log spam wie:

syscall=41 comm="zabbix_agentd" SYSCALL=socket

Ursache:

  • Neo-Rules loggen socket(), connect(), accept()
  • Zabbix macht das ständig
  • Kein Sicherheitsgewinn → nur Lärm

7. WICHTIGSTE LEARNING: Regel-Reihenfolge

Auditd verarbeitet Regeln von oben nach unten.
First match wins.

➡️ Excludes müssen VOR den Neo-Regeln kommen, nicht danach.


8. Noise sauber entfernen (richtig!)

❌ Falsch

80-noise.rules

→ kommt zu spät, Neo-Rule hat schon gematcht

✅ Richtig

/etc/audit/rules.d/05-noise.rules
# Drop Zabbix socket noise (must be BEFORE neo rules)
-a never,exit -F arch=b64 -S socket -F exe=/usr/sbin/zabbix_agentd
-a never,exit -F arch=b32 -S socket -F exe=/usr/sbin/zabbix_agentd

Reload:

sudo augenrules --load
sudo systemctl restart auditd

Test:

sudo ausearch -ts recent | grep zabbix
# → leer = Erfolg

9. Debug-Howto: Wenn etwas „trotzdem“ geloggt wird

Schritt 1: Welche Regel triggert?

sudo auditctl -l | grep socket

Schritt 2: Reihenfolge prüfen

sudo auditctl -l | nl -ba | grep zabbix

Exclude muss oberhalb der loggenden Regel stehen.


Schritt 3: Stimmt der exe-Pfad?

ps -ef | grep zabbix

Beispiel:

/usr/sbin/zabbix_agentd

➡️ Exclude muss exakt diesen Pfad verwenden.


Schritt 4: Regelklasse beachten

Exclude muss zur gleichen Regelklasse passen:

Geloggte RegelExclude braucht
-S socket-S socket
perm=x-F perm=x
execve-S execve

10. Empfohlenes Dateischema

05-noise.rules        # excludes (zabbix, systemd, cron)
60-neo.rules          # Neo23x0 baseline
70-rootcmd.rules      # eigene Root-Transparenz

11. Best Practices (aus der Praxis)

  • 🔒 -e 2 (immutable) erst setzen, wenn alles getestet ist
  • 📉 Noise immer kernel-seitig, nicht in Wazuh filtern
  • 🧠 Lieber weniger, saubere Logs als alles
  • 🧾 Root-Commands immer explizit loggen
  • 🧪 Änderungen immer mit ausearch testen

12. Fazit

Mit:

  • Neo23x0 Ruleset
  • explizitem Root-Logging
  • korrektem Wazuh-Key-Mapping
  • früh geladenen Noise-Excludes

bekommst du:

  • forensisch brauchbare Audit-Logs
  • kaum Spam
  • stabile Wazuh-Alerts
  • vollständige Nachvollziehbarkeit von Root-Aktionen