auditd - Konfigurieren für Compliance

auditd

Konfigurieren für Compliance

Rocco Gagliardi
von Rocco Gagliardi
am 08. Juni 2023
Lesezeit: 11 Minuten

Keypoints

auditd für die Einhaltung von Richtlinien konfigurieren

  • Kontroll-Frameworks beschreiben in der Regel High-Level-Anforderungen
  • Frameworks bieten keine Zwischenanforderungen, die in Low-Level-Einstellungen umgewandelt werden können
  • Ausgehend von einer High-Level-Sicherheitsarchitektur kann ein einfacher Satz in einem Control zu einer komplizierten Konfigurationsdatei mit großen Auswirkungen auf das System werden
  • Jeder Filter beeinflusst die Systemleistung, daher sollten nur benötigte oder sicherheitsfördernde Zwischenanforderungen untersucht und konfiguriert werden

Während unserer Bewertungen müssen wir bestätigen, dass ein System Audit-Protokolle korrekt erzeugt und verarbeitet. Da es keine spezifischen Anforderungen gibt, liegen die Anzahl und die Art der erzeugten Aufzeichnungen in erster Linie in unserem Ermessen, basierend auf dem verwendeten Kontrollrahmen.

Die Erfahrung des Auditors bestimmt, ob die generierten Protokollkategorien auf der Grundlage der analysierten Situation ausreichend sind. Nehmen wir jedoch die Rolle eines Ingenieurs an, der mit der Konfiguration von auditd auf einem Linux-System beauftragt ist, welche Konfigurationen müssen letztendlich aktiviert werden?

In diesem Artikel werden wir mit einer sehr hohen Kontrolle beginnen, zwischenzeitliche Anforderungen entwickeln und diese dann in eine auditd Konfiguration umsetzen.

Übersetzen Sie Kontrollen in Anforderungen

Wir verwenden häufig die CIS CSC V8 als Kontrollrahmen. Kapitel 8, das der “Audit Log Management” gewidmet ist, enthält mehrere Kontrollen, die eine System-Audit-Konfiguration erfordern:

8.2 – Collect Audit Logs – Collect audit logs. Ensure that logging, per the enterprise’s audit log management process, has been enabled across enterprise assets.

8.5 – Collect Detailed Audit Logs – Configure detailed audit logging for enterprise assets containing sensitive data. Include event source, date, username, timestamp, source addresses, destination addresses, and other useful elements that could assist in a forensic investigation.

Wir haben eine allgemeine Vorstellung davon, welche Informationen gesammelt werden müssen, aber die Anforderungen müssen weiter geklärt werden. Der CIS Controls Navigator ordnet Steuerelemente verschiedenen Frameworks zu. Schauen Sie sich also an, was andere Frameworks erfordern, indem Sie die 8.2-Zuordnung erweitern. Wir scrollen hinunter zu den PCI v4.0-Gruppen und entdecken feiner abgestufte Steuerelemente, aus denen wir einfach diejenigen auswählen können, die auf unseren Anwendungsfall zutreffen.

Wir können nun unsere Zwischenanforderungen erstellen:

Dieser Artikel bezieht sich auf CIS CSC V8, um die Beziehung zwischen High-Level-Kontrollen und Low-Level-Konfiguration zu veranschaulichen. Sie könnten die sehr detaillierten Sicherheitskontrollen, die z.B. in CIS Linux Server beschrieben sind, einfach implementieren, aber wir empfehlen, sie erst zu verwenden, nachdem Sie die Auswirkungen der Konfiguration auf das System verstanden haben.

auditd Konfiguration

Da wir nun die Anforderungen kennen, können wir mit der auditd-Konfiguration auf niedriger Ebene fortfahren. Die auditd-Regeln legen fest, welche Ereignisse geprüft werden sollen. Die Regeln werden in der Datei /etc/audit/rules.d/audit.rules definiert.

Fügen Sie mit einem Editor Ihrer Wahl Regeln in der Datei hinzu oder ändern Sie sie entsprechend Ihren Anforderungen an die Überwachung. Die Syntax für die Regeln folgt der Syntax des Befehls auditctl. Um zum Beispiel Änderungen an der Datei /etc/passwd zu überwachen, können Sie die folgende Regel hinzufügen:

## /etc/passwd monitor for write/change
-a always,exit -F path=/etc/passwd -F perm=wa -F key=passwd-changes

Diese Regel filtert Schreib- (w) und Attribut- (a) Änderungen an der Datei /etc/passwd und verknüpft sie mit dem Schlüssel passwd_changes. Um die Regeln zu konfigurieren, lesen Sie auditctl(8) – Linux manual page

Beginnen Sie mit einer sauberen Regelbasis

Es ist eine gute Praxis, mit einer leeren Regelbasis zu beginnen und einige Parameter einzustellen.

## Clean all rules
-D
## Increase buffer to survive stressful situation
-b 8192
## Set failure mode to panic if the system should stop in case of auditd error
## Enable this if the system must not work without a functional audit log
# -f 2

Requirement: Audit Logs Capture All Actions Taken by Any Individual with Administrative Access, Including Any Interactive Use of Application or System Accounts

Dies erfordert die Konfiguration des Tools pam_tty_audit. Ausgehend von Unix PAM bietet Linux PAM (Pluggable Authentication Modules) flexible Authentifizierungsdienste für Anwendungen und Systemdienste. Die Komponenten Konto, Authentifizierung, Passwort und Sitzung regeln die Authentifizierungsfunktionen.

Mit der Option enable in /etc/pam.d/system-auth und /etc/pam.d/password-auth können Sie die TTY-Eingabe eines Benutzers überprüfen. Die Konfigurationsparameter finden Sie unter pam_tty_audit(8) – Linux manual page.

Dies gilt auch für “Audit-Protokolle erfassen alle ungültigen logischen Zugriffsversuche”, da sowohl gültige als auch ungültige Aktionen überprüft werden.

Requirement: Audit Logs Capture All Access to Audit Logs

Die Überwachung der auditd-Komponenten bietet Einblick in den Audit-Prozess, gewährleistet die Integrität der Audit-Protokolle, validiert die Konfiguration und erhält den Systemzustand aufrecht.

Dies umfasst auch “Audit-Protokolle erfassen alle Initialisierungen neuer Audit-Protokolle und alle Starts, Stopps oder Pausen der bestehenden Audit-Protokolle”.

## Access to all audit trails.
-a always,exit -F dir=/var/log/audit/ -F perm=r -F auid>=1000 -F auid!=unset -F key=access-to-audit-objects
-a always,exit -F path=/usr/sbin/aulast -F perm=x -F key=access-to-audit-objects
-a always,exit -F path=/usr/sbin/aulastlogin -F perm=x -F key=access-to-audit-objects
-a always,exit -F path=/usr/sbin/aureport -F perm=x -F key=access-to-audit-objects
-a always,exit -F path=/usr/sbin/ausearch -F perm=x -F key=access-to-audit-objects
-a always,exit -F path=/usr/sbin/auvirt -F perm=x -F key=access-to-audit-objects

Requirement: Audit Logs Capture All Changes to Identification and Authentication Credentials

Audit-Protokolle müssen Änderungen an Identifizierungs- und Authentifizierungsdaten für die Untersuchung von Sicherheitsvorfällen, die Rechenschaftspflicht, die Einhaltung von Vorschriften, die Erkennung verdächtiger Aktivitäten, forensische Analysen und die Reaktion auf Vorfälle aufzeichnen.

## Elevation of privileges
-a always,exit -F arch=b64 -S setuid -F a0=0 -F exe=/usr/bin/su -F key=elevation-of-privileges
-a always,exit -F arch=b32 -S setuid -F a0=0 -F exe=/usr/bin/su -F key=elevation-of-privileges
-a always,exit -F arch=b64 -S setresuid -F a0=0 -F exe=/usr/bin/sudo -F key=elevation-of-privileges
-a always,exit -F arch=b32 -S setresuid -F a0=0 -F exe=/usr/bin/sudo -F key=elevation-of-privileges
-a always,exit -F arch=b64 -S execve -C uid!=euid -F euid=0 -F key=elevation-of-privileges
-a always,exit -F arch=b32 -S execve -C uid!=euid -F euid=0 -F key=elevation-of-privileges
## All changes, additions, or deletions to accounts
-a always,exit -F path=/etc/group -F perm=wa -F key=account-change
-a always,exit -F path=/etc/passwd -F perm=wa -F key=account-change
-a always,exit -F path=/etc/gshadow -F perm=wa -F key=account-change
-a always,exit -F path=/etc/shadow -F perm=wa -F key=account-change
-a always,exit -F path=/etc/security/opasswd -F perm=wa -F key=account-change

Requirement: Audit Logs Capture All Unauthorized Access Attempts to Files

Audit-Protokolle sollten unbefugte Dateizugriffe aufzeichnen, um potenzielle Sicherheitsverletzungen oder unbefugten Zugriff auf sensible Daten zu erkennen und abzumildern.

##- Unauthorized access attempts to files (unsuccessful)
-a always,exit -F arch=b32 -S open,creat,truncate,ftruncate,openat,openat2,open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=unset -F key=access
-a always,exit -F arch=b32 -S open,creat,truncate,ftruncate,openat,openat2,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=unset -F key=access
-a always,exit -F arch=b64 -S open,truncate,ftruncate,creat,openat,openat2,open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=unset -F key=access
-a always,exit -F arch=b64 -S open,truncate,ftruncate,creat,openat,openat2,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=unset -F key=access

Requirement: Audit Logs Capture All the Usage of Media

Audit-Protokolle sollten Datenexporte erfassen, um die unbefugte oder verdächtige Exfiltration sensibler Informationen aus dem System zu erkennen und zu verhindern.

##- Export to media (successful)
## You have to mount media before using it. You must disable all automounting
## so that its done manually in order to get the correct user requesting the
## export
-a always,exit -F arch=b32 -S mount -F auid>=1000 -F auid!=unset -F key=export
-a always,exit -F arch=b64 -S mount -F auid>=1000 -F auid!=unset -F key=export

Requirement: Audit Time Changes

Sicherheit, Betrugsaufdeckung, Datenintegrität, Compliance, forensische Analyse, Reaktion auf Vorfälle und Systemintegrität erfordern die Überwachung von Änderungen im Zeitverlauf.

## Time changes
-a exit,always -S adjtimex -S settimeofday -k time_change

Requirement: Audit Logs Capture All Creation and Deletion of System-Level Objects

Audit-Protokolle sollten Änderungen an ausführbaren Systemdateien und Bibliotheken, Manipulationen an Paketen und Manipulationen an Kernel-Modulen erfassen.

## For Fedora/CentOS/Red-Hat package monitor
-a always,exit -F perm=x -F path=/usr/bin/yum -F key=system-objects
## boot objects
-a always,exit -S all -F dir=/boot -F perm=aw -k system-objects
## System binaries
-a always,exit -S all -F dir=/bin -F perm=aw -k system-objects
-a always,exit -S all -F dir=/sbin -F perm=aw -k system-objects
-a always,exit -S all -F dir=/usr/bin -F perm=aw -k system-objects
-a always,exit -S all -F dir=/usr/local/bin -F perm=aw -k system-objects
-a always,exit -S all -F dir=/usr/local/sbin -F perm=aw -k system-objects
-a always,exit -S all -F dir=/usr/sbin -F perm=aw -k system-objects
## system libraries
-a always,exit -S all -F dir=/lib -F perm=aw -k system-objects
-a always,exit -S all -F dir=/lib64 -F perm=aw -k system-objects
-a always,exit -S all -F dir=/usr/lib -F perm=aw -k system-objects
## configuration files (most common)
-a always,exit -S all -F dir=/etc -F perm=aw -k system-objects
## systemd
-a always,exit -S all -F dir=/usr/lib/systemd/ -F perm=aw -k system-objects
## Kernel modules insert/remove
-w /sbin/insmod -p x -k system-objects
-w /sbin/rmmod -p x -k system-objects
-w /sbin/modprobe -p x -k system-objects
-a always,exit -F arch=b32 -S init_module -S delete_module -k system-objects
-a always,exit -F arch=b64 -S init_module -S delete_module -k system-objects

Requirement: Make Configuration Immutable

Auditd sollte über eine unveränderliche Konfiguration verfügen, um unbefugte Änderungen zu verhindern, die die Integrität und Zuverlässigkeit des Auditing-Systems beeinträchtigen könnten.

##Make the configuration immutable, a reboot is required to change the configuration settings or rulesets.
-e 2 

Zusammenfassung

Wir haben gezeigt, wie ein einfaches Wort innerhalb eines Steuerelements zu einer komplizierten Konfigurationsdatei werden kann, die erhebliche Auswirkungen auf das System haben kann, wenn man von einem hochrangigen Sicherheitsrahmen ausgeht.

In Bezug auf das Framework ist es notwendig, Zwischenanforderungen zu entwickeln, die unabhängig voneinander in Low-Level-Konfigurationen umgewandelt werden können. Da sich jeder Filter auf die Leistung des Systems auswirkt, sollte jede Zwischenanforderung nur dann überprüft und konfiguriert werden, wenn sie notwendig ist oder wenn sie zu einer erhöhten Systemsicherheit beiträgt.

Über den Autor

Rocco Gagliardi

Rocco Gagliardi ist seit den 1980er Jahren im Bereich der Informationstechnologie tätig. In den 1990er Jahren hat er sich ganz der Informationssicherheit verschrieben. Die Schwerpunkte seiner Arbeit liegen im Bereich Security Frameworks, Routing, Firewalling und Log Management.

Links

Sie wollen Ihr Log und Monitoring auf das nächste Level bringen?

Unsere Spezialisten kontaktieren Sie gern!

×
Übergang zu OpenSearch

Übergang zu OpenSearch

Rocco Gagliardi

Graylog v5

Graylog v5

Rocco Gagliardi

Security Frameworks

Security Frameworks

Rocco Gagliardi

OpenAI ChatGPT

OpenAI ChatGPT

Rocco Gagliardi

Sie wollen mehr?

Weitere Artikel im Archiv

Sie brauchen Unterstützung bei einem solchen Projekt?

Unsere Spezialisten kontaktieren Sie gern!

Sie wollen mehr?

Weitere Artikel im Archiv