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:

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

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