Auditd: System Auditing & Compliance (Artikel 030)
Implementierung einer revisionssicheren Systemüberwachung mit auditd. Überwachen Sie Dateizugriffe, Systemaufrufe und Benutzeraktivitäten für höchste Compliance-Anforderungen.
# Auditd: Der digitale Fahrtenschreiber für Linux-Server
TL;DR / Management Summary Wer hat nachts um 02:00 Uhr die Datei
/etc/shadowgelesen? Welcher Prozess hat eine Netzwerkverbindung zu einer bösartigen IP aufgebaut? Auditd (Linux Audit Dämon) liefert die Antworten. Im Gegensatz zum Standard-Logging, das nur meldet, was die Applikation will, zeichnet Auditd auf Kernel-Ebene auf, was wirklich passiert. Unverzichtbar für SOC-Analysten und Compliance-Zertifizierungen (ISO 27001, PCI-DSS).
# 1. Einführung & Architektur
Wie Auditd den Kernel belauscht.
Auditd klinkt sich direkt in die System-Calls (syscalls) des Kernels ein. Jedes Mal, wenn ein Prozess eine Datei öffnet (open), einen Prozess startet (execve) oder Berechtigungen ändert (chmod), kann Auditd dies registrieren.
graph TD
A[User Space Process] -->|Syscall: open| B[Linux Kernel]
B -->|Audit Hook| C[Audit Framework]
C -->|Rules Matching| D[auditd Daemon]
D -->|Write| E[/var/log/audit/audit.log]
F[Admin/Analyst] -->|Query| G[ausearch / aureport]
G --> E
# 2. Installation & Grundregeln
Den Wächter aktivieren.
# Installation
sudo apt update
sudo apt install auditd audispd-plugins
# Regeln definieren
Regeln liegen in /etc/audit/rules.d/audit.rules. Sie bestehen aus drei Typen:
- Control Rules: Systemkonfiguration (z.B. Log-Limit).
- File System Rules: Überwachung von Dateien/Ordnern.
- System Call Rules: Überwachung von Kernel-Funktionen.
# 3. Praxisbeispiele: Was wir überwachen sollten
Security-Monitoring einrichten.
# Dateizugriffe überwachen
Wir wollen wissen, wenn jemand an der SSH-Konfiguration fummelt.
# -w: Watch Path, -p wa: Write/Attribute change, -k: Tag für die Suche
-w /etc/ssh/sshd_config -p wa -k sshd_change
# Ausführung von Befehlen durch Root
-a always,exit -F arch=b64 -S execve -F euid=0 -k root_commands
# Netzwerk-Sockets überwachen
-a always,exit -F arch=b64 -S connect -k network_outbound
Wichtig: Nach Änderungen an den Regeln müssen diese mit sudo service auditd restart oder augenrules --load aktiviert werden.
# 4. Day-2 Operations: Analyse der Daten
Die Nadel im Heuhaufen finden.
Die Datei /var/log/audit/audit.log ist kaum lesbar für Menschen. Wir brauchen Tools.
# Suchen mit ausearch
# Suche nach allen Events mit dem Tag 'sshd_change'
sudo ausearch -k sshd_change
# Suche nach gescheiterten Dateizugriffen (Access Denied)
sudo ausearch -m AVC,USER_AVC -i
# Berichte mit aureport
Ideal für das wöchentliche Security-Review.
# Zusammenfassung aller fehlgeschlagenen Logins
sudo aureport -au
# Übersicht aller ausgeführten Befehle
sudo aureport -x --summary
# 5. Troubleshooting & “War Stories”
Wenn der Wächter das System ausbremst.
# Story 1: “Log-Flooding und Disk-Tod”
Symptom: Der Server reagiert nicht mehr, die Root-Partition ist zu 100% voll durch /var/log/audit/.
Ursache: Zu aggressive Regeln (z.B. jeder read syscall auf /var/www/).
Lösung: Nutzen Sie max_log_file und max_log_file_action = rotate in der /etc/audit/auditd.conf. Und: Überwachen Sie niemals read Operationen auf viel genutzten Verzeichnissen!
# Story 2: “Wer hat die Log-Files gelöscht?”
Symptom: Ein Angreifer ist eingebrochen und hat als erste Amtshandlung /var/log/audit/audit.log gelöscht.
Ursache: Lokales Auditing reicht nicht aus, wenn Root kompromittiert ist.
Lösung: Nutzen Sie das Plugin audisp-remote, um Audit-Logs in Echtzeit an einen gehärteten, zentralen Log-Server zu senden.
# 6. Compliance & Best Practices
- CIS Benchmark: Nutzen Sie die CIS-Vorgaben für Auditd-Regeln. Diese decken alle kritischen Pfade ab.
- Immutable Rules: Setzen Sie
-e 2am Ende Ihrer Rules-Datei. Dies sorgt dafür, dass die Regeln bis zum nächsten Reboot nicht mehr geändert werden können (selbst von Root!). - Performance: Prüfen Sie die CPU-Last mit
top. Auditd sollte selten mehr als 1-2% CPU verbrauchen.
# Anhang: Cheatsheet
| Aufgabe | Befehl |
|---|---|
| Status prüfen | sudo auditctl -s |
| Alle aktiven Regeln listen | sudo auditctl -l |
| Alle Regeln temporär löschen | sudo auditctl -D |
| Suche nach User-ID 1000 | sudo ausearch -ui 1000 |
| Event-Bericht der letzten 24h | sudo aureport --start yesterday --summary |
| Integrität der Logs prüfen | sudo auditctl -v |