linux-security security audit auditd hardening best-practices compliance

Master Audit Rules: Enterprise Hardening (Artikel 338)

Die ultimative Audit-Konfiguration für Enterprise-Linux. Erfahren Sie den Aufbau eines umfassenden Regelsatzes nach CIS-Benchmarks zur lückenlosen Überwachung kritischer Infrastrukturen.

# Master Audit Rules: Den Server lückenlos überwachen

TL;DR / Management Summary Ein leeres Audit-Log ist kein Zeichen für Sicherheit, sondern für Blindheit. In diesem Modul stellen wir einen Enterprise Master-Regelsatz zusammen, der alle kritischen Aspekte eines Linux-Servers abdeckt: Benutzer-Änderungen, Netzwerk-Manipulationen, unautorisierte Dateizugriffe und Kernel-Eingriffe. Basierend auf den CIS-Benchmarks bauen wir eine Konfiguration, die jedem Security-Audit (ISO 27001) standhält.


# 1. Einführung & Architektur

Strukturierte Überwachung.

Wir teilen unsere Audit-Regeln in vier funktionale Kategorien ein, um bei der späteren Analyse (ausearch) effizient filtern zu können.

# Die Regel-Kategorien (Mermaid)

graph TD
    A[Master Audit Rules] --> B[Identity: User/Group Changes]
    A --> C[Network: Sockets & Config]
    A --> D[Filesystem: sensitive etc / bin]
    A --> E[System: Kernel Modules / Time]
    B --> B1[Tag: auth_changes]
    C --> C1[Tag: net_activity]
    D --> D1[Tag: integrity_check]
    E --> E1[Tag: core_system]

# 2. Der Enterprise Regelsatz (audit.rules)

Kopieren, anpassen, härten.

Datei: /etc/audit/rules.d/99-master.rules

# 1. Überwachung von Identitätsänderungen

-w /etc/group -p wa -k identity
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/sudoers -p wa -k identity

# 2. Netzwerk- und Hostname-Manipulationen

-a always,exit -F arch=b64 -S sethostname,setdomainname -k system_config
-w /etc/issue -p wa -k system_config
-w /etc/hosts -p wa -k system_config
-w /etc/network/ -p wa -k net_config

# 3. Datei-Integrität (Kernel-Level)

# Überwache das Löschen oder Umbenennen von Dateien durch unautorisierte User
-a always,exit -F arch=b64 -S unlink,unlinkat,rename,renameat -F auid>=1000 -F auid!=4294967295 -k delete_ops

# 4. Privilegierte Ausführungen (SUID)

# Überwache jeden SUID-Aufruf
-a always,exit -F arch=b64 -S execve -C uid!=euid -F euid=0 -k elevated_privs

# 3. Day-2 Operations: Automatisierte Berichte

Wöchentliche Auswertung.

Nutzen Sie aureport, um aus dem Rauschen der Millionen Events handlungsorientierte Berichte zu erstellen.

# Der ‘Chef-Bericht’

# Zusammenfassung der letzten Woche: Fehlgeschlagene Logins, Sudo-Versuche, Config-Änderungen
aureport --start yesterday --summary

# 4. Troubleshooting & “War Stories”

Wenn das Log den Dienst quittiert.

# Story 1: “Der CPU-Engpass bei Audit-Events”

Symptom: Der Server hat massiv Load, obwohl keine Last anliegt. auditd verbraucht 40% CPU. Ursache: Zu breite Regeln. Ein -w /var/www -p r loggt jeden Lesezugriff auf die Webseite. Lösung: Überwachen Sie niemals Lesezugriffe (r) in viel genutzten Verzeichnissen. Beschränken Sie sich auf Schreibzugriffe (w) und Attribut-Änderungen (a).

# Story 2: “Der verlorene Kontext”

Symptom: ausearch liefert Treffer, aber das Feld auid (Audit User ID) zeigt nur -1 oder 4294967295. Ursache: Die Verbindung wurde durch einen Dämon (z.B. einen Webserver oder Cron) initiiert, der die ursprüngliche Login-ID des Benutzers nicht weitergegeben hat. Lösung: Das ist normales Verhalten für Systemdienste. Nutzen Sie in diesem Fall das Feld uid (aktuelle ID) und verknüpfen Sie es mit dem Zeitstempel der Session-Eröffnung.


# 5. Fazit & Empfehlung

  • CIS Compliance: Dieser Regelsatz deckt ca. 80% der CIS-Anforderungen ab. Ergänzen Sie Hardware-spezifische Regeln bei Bedarf.
  • Tags: Nutzen Sie konsequent -k <tag>. Ohne Tags ist die Suche in audit.log eine Sisyphusarbeit.
  • Retention: Sorgen Sie dafür, dass auditd seine Logs rotiert, bevor die Disk voll ist: max_log_file = 100 in der auditd.conf.

# Anhang: Die ‘Golden Rules’ Checkliste

Ziel Regel-Snippet Tag
Systemstart -w /sbin/insmod -p x modules
Sudoers -w /etc/sudoers -p wa priv_esc
Passwd -w /etc/passwd -p wa identity
Login/Logout -w /var/log/lastlog -p wa logins
Zeit-Änderung -S settimeofday,adjtimex time_change
Network-Sys -S socket,connect net_activity
App-Config -w /etc/nginx/ -p wa web_config
Kernel Tuning -w /etc/sysctl.conf -p wa kernel_tuning