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 auditd

Grundlagen

Konfigurationsdateien

# Hauptkonfiguration
/etc/audit/auditd.conf

# Audit-Regeln
/etc/audit/rules.d/
/etc/audit/audit.rules

# Logs
/var/log/audit/audit.log

Basis-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 = SUSPEND

Audit-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 --load

Syntax

# -w: Datei/Verzeichnis überwachen
# -p: Permissions (r=read, w=write, x=execute, a=attribute)
# -k: Key für Suche
# -a: Systemcall-Regel

Wichtige 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 dns

Systemcalls ü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 mounts

Benutzeraktivitä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 privileged

Regeln 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 --check

Logs 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 -i

aureport

# 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 now

Log-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-Key

JSON-Format

# Mit ausearch
ausearch -k passwd_changes --format json

# Mit Pipe
ausearch -k passwd_changes -i | aureport -f

SIEM-Integration

Syslog-Weiterleitung

# /etc/audisp/plugins.d/syslog.conf
active = yes
direction = out
path = /sbin/audisp-syslog
type = always
args = LOG_INFO
format = string

Elasticsearch

# 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-locale

Immutable 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_program

Audit-Rate prüfen

# Verlorene Events
auditctl -s | grep lost

# Backlog
auditctl -s | grep backlog

Zusammenfassung

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