Auditd ist einer dieser Dienste, die entweder gar nichts tun oder dir die Platte mit Events vollballern wie ein schlecht gelaunter Log-Drucker. Wir haben uns das Ding mal wieder im Selbstversuch geschnappt: Ziel war nicht „alles auditieren“, sondern gezielt herausfinden, wer an kritischen Dateien schraubt und welche Prozesse verdächtige Syscalls abfeuern.
Erstmal prüfen, ob auditd überhaupt wach ist:
systemctl status auditd
auditctl -sWenn enabled 1 und backlog nicht explodiert, sieht es schon mal okay aus. Regeln kannst du live mit auditctl setzen oder dauerhaft unter /etc/audit/rules.d/*.rules ablegen. Für produktive Systeme: bitte dauerhaft. Live-Regeln sind nach dem Reboot weg. Klassiker.
Ein einfacher Einstieg ist File-Watching. Beispiel: Wir wollen wissen, wer /etc/passwd verändert:
auditctl -w /etc/passwd -p wa -k identity-change-w ist der Pfad, -p wa steht für write und attribute change, -k ist der Suchschlüssel. Der Key ist Gold wert, weil du später nicht durch 400 MB Audit-Gulasch greppen willst.
Dauerhaft packen wir das so in eine Datei:
cat >/etc/audit/rules.d/identity.rules <<'EOF'
-w /etc/passwd -p wa -k identity-change
-w /etc/shadow -p wa -k identity-change
-w /etc/group -p wa -k identity-change
EOF
augenrules --loadJetzt wird es spannender: Syscall-Auditing. Beispiel: Wir wollen mitbekommen, wenn jemand chmod, chown oder ähnliche Rechte-Magie auf Dateien ausführt. Auf 64-Bit-Systemen:
-a always,exit -F arch=b64 -S chmod -S fchmod -S fchmodat -S chown -S fchown -S fchownat -k perm-changeFür 32-Bit-Kompatibilität brauchst du ggf. zusätzlich arch=b32. Ja, auch 2026 stolpern wir noch über sowas. Kernel-Archäologie live.
Noch ein praktisches Beispiel: Ausführungen von /usr/bin/sudo überwachen:
-w /usr/bin/sudo -p x -k sudo-execLogs findest du standardmäßig in:
# /var/log/audit/audit.logDirekt reinschauen geht, ist aber ungefähr so angenehm wie JSON ohne Pretty-Print. Besser:
ausearch -k identity-change
ausearch -k perm-change
ausearch -k sudo-execOder zeitlich begrenzt:
ausearch -k sudo-exec -ts today
ausearch -k perm-change -ts 10:00 -te 10:30Richtig brauchbar wird es mit aureport:
aureport -k
aureport -f
aureport -xDamit bekommst du Reports nach Keys, Dateien oder ausgeführten Programmen. Wenn du wissen willst, welcher User hinter einer UID steckt:
ausearch -k identity-change -iDas -i übersetzt numerische Werte in lesbare Namen. Aus uid=1001 wird dann endlich ein Mensch und nicht nur eine Zahl mit Hoodie.
Wichtig: Audit-Regeln können Performance kosten. Besonders breite Syscall-Regeln ohne Filter sind wie tcpdump any auf einem Core-Router: technisch möglich, aber du willst danach vielleicht Urlaub. Also immer einschränken: Architektur, Syscalls, Pfade, User-IDs, Keys.
Regeln anzeigen:
auditctl -lRegeln löschen:
auditctl -DAber Vorsicht: -D räumt alles ab. Auch die mühsam gesetzten Regeln deines Kollegen. Also vorher kurz nachdenken, dann Enter drücken. In dieser Reihenfolge.
Unser Fazit: Auditd ist kein SIEM-Ersatz, aber ein sehr scharfes Skalpell. Wenn du saubere Keys vergibst, Regeln eng formulierst und ausearch statt wildem grep nutzt, findest du relevante Events schnell. Und du vermeidest den Klassiker: 2 GB Logs, null Erkenntnis, aber immerhin viel Speicher-I/O.