auditd ist das Linux Audit Framework für Security-Monitoring und Compliance. Es protokolliert Systemaufrufe, Datei-Zugriffe und Benutzeraktivitäten.
Installation
# Debian/Ubuntu
apt install auditd audispd-plugins
# RHEL/CentOS
dnf install audit
# Service aktivieren
systemctl enable auditd
systemctl start auditdGrundlagen
Konfigurationsdateien
# Hauptkonfiguration
/etc/audit/auditd.conf
# Audit-Regeln
/etc/audit/rules.d/
/etc/audit/audit.rules
# Logs
/var/log/audit/audit.logBasis-Konfiguration
# /etc/audit/auditd.conf
log_file = /var/log/audit/audit.log
log_format = RAW
log_group = root
priority_boost = 4
flush = INCREMENTAL_ASYNC
freq = 50
max_log_file = 100
num_logs = 5
max_log_file_action = ROTATE
space_left = 75
space_left_action = SYSLOG
admin_space_left = 50
admin_space_left_action = SUSPEND
disk_full_action = SUSPEND
disk_error_action = SUSPENDAudit-Regeln
Regeln hinzufügen
# Temporäre Regel
auditctl -w /etc/passwd -p wa -k passwd_changes
# Permanente Regel
echo '-w /etc/passwd -p wa -k passwd_changes' >> /etc/audit/rules.d/custom.rules
# Regeln neu laden
augenrules --loadSyntax
# -w: Datei/Verzeichnis überwachen
# -p: Permissions (r=read, w=write, x=execute, a=attribute)
# -k: Key für Suche
# -a: Systemcall-RegelWichtige Dateien überwachen
# /etc/audit/rules.d/files.rules
# Passwort-Dateien
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/gshadow -p wa -k identity
# Sudo
-w /etc/sudoers -p wa -k sudoers
-w /etc/sudoers.d/ -p wa -k sudoers
# SSH
-w /etc/ssh/sshd_config -p wa -k sshd_config
-w /root/.ssh/ -p wa -k ssh_keys
# Cron
-w /etc/crontab -p wa -k cron
-w /etc/cron.d/ -p wa -k cron
-w /var/spool/cron/ -p wa -k cron
# Systemd
-w /etc/systemd/ -p wa -k systemd
# Netzwerk
-w /etc/hosts -p wa -k hosts
-w /etc/resolv.conf -p wa -k dnsSystemcalls überwachen
# /etc/audit/rules.d/syscalls.rules
# Datei-Löschung
-a always,exit -F arch=b64 -S unlink,unlinkat,rename,renameat -F auid>=1000 -F auid!=-1 -k delete
# Rechte-Änderung
-a always,exit -F arch=b64 -S chmod,fchmod,fchmodat -F auid>=1000 -F auid!=-1 -k perm_mod
-a always,exit -F arch=b64 -S chown,fchown,lchown,fchownat -F auid>=1000 -F auid!=-1 -k perm_mod
# Module laden
-w /sbin/insmod -p x -k modules
-w /sbin/modprobe -p x -k modules
-w /sbin/rmmod -p x -k modules
-a always,exit -F arch=b64 -S init_module,delete_module -k modules
# Mount
-a always,exit -F arch=b64 -S mount -F auid>=1000 -F auid!=-1 -k mountsBenutzeraktivitäten
# /etc/audit/rules.d/users.rules
# Login/Logout
-w /var/log/lastlog -p wa -k logins
-w /var/log/faillog -p wa -k logins
# Session-Initiierung
-w /var/run/utmp -p wa -k session
-w /var/log/wtmp -p wa -k session
-w /var/log/btmp -p wa -k session
# Su/Sudo
-a always,exit -F arch=b64 -S execve -F path=/usr/bin/su -F auid>=1000 -F auid!=-1 -k privileged
-a always,exit -F arch=b64 -S execve -F path=/usr/bin/sudo -F auid>=1000 -F auid!=-1 -k privilegedRegeln anzeigen und verwalten
# Aktive Regeln anzeigen
auditctl -l
# Regel-Status
auditctl -s
# Alle Regeln löschen (temporär)
auditctl -D
# Regeln aus Datei laden
auditctl -R /etc/audit/rules.d/custom.rules
# Regeln generieren und laden
augenrules --load
# Regeln permanent machen
augenrules --checkLogs durchsuchen
ausearch
# Nach Key suchen
ausearch -k passwd_changes
# Nach Zeit
ausearch -k passwd_changes -ts today
ausearch -k passwd_changes -ts recent
ausearch -k passwd_changes -ts 10:00:00 -te 12:00:00
# Nach User
ausearch -ua root
ausearch -ui 1000
# Nach Datei
ausearch -f /etc/passwd
# Nach Erfolgreich/Fehlgeschlagen
ausearch -k passwd_changes -sv yes # success
ausearch -k passwd_changes -sv no # failed
# Interpretiert (lesbar)
ausearch -k passwd_changes -iaureport
# Zusammenfassung
aureport
# Authentifizierung
aureport -au
# Logins
aureport -l
# Fehlgeschlagene Events
aureport --failed
# Datei-Änderungen
aureport -f
# Syscalls
aureport -s
# Nach Zeit
aureport --start today --end nowLog-Analyse
Event verstehen
# Beispiel-Log:
# type=SYSCALL msg=audit(1706270400.123:456): arch=c000003e syscall=2 success=yes exit=3 a0=7ffd12345678 a1=0 a2=1b6 a3=0 items=1 ppid=1234 pid=5678 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="vim" exe="/usr/bin/vim" key="passwd_changes"
# type=PATH msg=audit(1706270400.123:456): item=0 name="/etc/passwd" inode=12345 dev=08:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL
# Felder:
# auid: Audit UID (ursprünglicher Login)
# uid: Effektive UID
# comm: Command
# exe: Executable
# key: Unser Filter-KeyJSON-Format
# Mit ausearch
ausearch -k passwd_changes --format json
# Mit Pipe
ausearch -k passwd_changes -i | aureport -fSIEM-Integration
Syslog-Weiterleitung
# /etc/audisp/plugins.d/syslog.conf
active = yes
direction = out
path = /sbin/audisp-syslog
type = always
args = LOG_INFO
format = stringElasticsearch
# Mit filebeat oder logstash
# filebeat.yml:
filebeat.inputs:
- type: log
paths:
- /var/log/audit/audit.log
fields:
type: auditd
output.elasticsearch:
hosts: ["elasticsearch:9200"]Compliance-Regeln
CIS Benchmark
# /etc/audit/rules.d/cis.rules
# Time-Change
-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time-change
-a always,exit -F arch=b64 -S clock_settime -k time-change
-w /etc/localtime -p wa -k time-change
# Network
-a always,exit -F arch=b64 -S sethostname -S setdomainname -k system-locale
-w /etc/issue -p wa -k system-locale
-w /etc/issue.net -p wa -k system-locale
-w /etc/hosts -p wa -k system-locale
-w /etc/network -p wa -k system-localeImmutable Mode
# Am Ende der Regeln
-e 2
# Regeln können dann nicht mehr geändert werden
# (bis zum Neustart)Performance
Regeln optimieren
# Unwichtige Events ausschließen
-a never,exit -F arch=b64 -S read -S write -S lseek
# Bestimmte Programme ausschließen
-a never,exit -F exe=/usr/bin/some_noisy_programAudit-Rate prüfen
# Verlorene Events
auditctl -s | grep lost
# Backlog
auditctl -s | grep backlogZusammenfassung
| Befehl | Funktion | |--------|----------| | auditctl -l | Regeln anzeigen | | auditctl -w | Datei überwachen | | auditctl -a | Syscall-Regel | | auditctl -D | Regeln löschen | | ausearch -k | Nach Key suchen | | aureport | Berichte | | augenrules --load | Regeln laden |
| Option | Beschreibung | |--------|--------------| | -w | Watch (Datei/Verzeichnis) | | -p | Permissions (r,w,x,a) | | -k | Key (Suchbegriff) | | -a | Action (always,never) | | -F | Filter | | -S | Syscall |
| Datei | Beschreibung | |-------|--------------| | /etc/audit/auditd.conf | Daemon-Config | | /etc/audit/rules.d/ | Regeln | | /var/log/audit/audit.log | Logs |
Fazit
auditd ist unverzichtbar für Security und Compliance. Die Regeln sollten gezielt sein um Performance zu erhalten. Logs sollten zentral gesammelt werden. Für PCI-DSS, HIPAA und andere Standards ist auditd oft Pflicht.