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:
```bash
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:
```bash
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:
```bash
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:
```bash
-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:
```bash
-w /usr/bin/sudo -p x -k sudo-exec
```
Logs findest du standardmäßig in:
```bash
/var/log/audit/audit.log
```
Direkt reinschauen geht, ist aber ungefähr so angenehm wie JSON ohne Pretty-Print. Besser:
```bash
ausearch -k identity-change
ausearch -k perm-change
ausearch -k sudo-exec
```
Oder zeitlich begrenzt:
```bash
ausearch -k sudo-exec -ts today
ausearch -k perm-change -ts 10:00 -te 10:30
```
Richtig brauchbar wird es mit `aureport`:
```bash
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:
```bash
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:
```bash
auditctl -l
```
Regeln löschen:
```bash
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.