Zum Inhalt springen

Auditd ohne Log-Müll: Syscalls jagen wie ein Kernel-Detektiv

4. August 2026 durch
Auditd ohne Log-Müll: Syscalls jagen wie ein Kernel-Detektiv
Hendrik Lilienthal

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 -s

Wenn 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 --load

Jetzt 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-change

Fü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-exec

Logs findest du standardmäßig in:

# /var/log/audit/audit.log

Direkt 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-exec

Oder zeitlich begrenzt:

ausearch -k sudo-exec -ts today
ausearch -k perm-change -ts 10:00 -te 10:30

Richtig brauchbar wird es mit aureport:

aureport -k
aureport -f
aureport -x

Damit bekommst du Reports nach Keys, Dateien oder ausgeführten Programmen. Wenn du wissen willst, welcher User hinter einer UID steckt:

ausearch -k identity-change -i

Das -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 -l

Regeln löschen:

auditctl -D

Aber 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.

Auditd ohne Log-Müll: Syscalls jagen wie ein Kernel-Detektiv
Hendrik Lilienthal 4. August 2026
Diesen Beitrag teilen