Hinweis:
- Dieses Tutorial ist in einer von Oracle bereitgestellten kostenlosen Übungsumgebung verfügbar.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Ersetzen Sie diese Werte durch die für Ihre Cloud-Umgebung spezifischen Werte.
Oracle Linux mit Auditd auditieren
Einführung
Auditd ist ein Userspace-System-Daemon, der im Hintergrund ausgeführt wird und Logs zu verschiedenen Aktivitäten für Oracle Linux generiert.
Dieses Tutorial führt Sie durch die Installation, Konfiguration und Verwendung von auditd.
Ziele
In dieser Übung lernen Sie Folgendes:
- Auditpakete installieren
- Auditservice verwalten
- Auditregeln erstellen
- Auditlogs durchsuchen
Voraussetzungen
- Ein System mit Oracle Linux 8 wird mit der folgenden Konfiguration installiert:
- ein Nicht-Root-Benutzer mit
sudo
-Berechtigungen
- ein Nicht-Root-Benutzer mit
Auditpaket installieren
Hinweis: Wenn Sie die kostenlose Übungsumgebung verwenden, finden Sie unter Oracle Linux Lab - Grundlagen Informationen zu Verbindungen und anderen Nutzungsanweisungen.
Oracle Linux installiert das Auditpackage standardmäßig.
Wenn noch nicht geschehen, öffnen Sie ein Terminal, und stellen Sie eine Verbindung über SSH zum ol8-server-System her.
ssh oracle@<ip_address_of_ol8-server>
Prüfen Sie, ob das System das Package audit
vorinstalliert hat.
sudo dnf list installed "audit"
Falls nicht auf dem System, installieren Sie es.
sudo dnf install -y audit
Die Standardkonfigurationsdatei für den auditd
-Daemon befindet sich unter /etc/audit/auditd.conf
.
Auditservice verwalten
Nachdem das Auditpackage installiert wurde, starten Sie den auditd
-Service. Prüfen Sie zunächst den aktuellen Status.
sudo systemctl status auditd
Beispielausgabe:
[oracle@ol8-server ~]$ sudo systemctl status auditd * auditd.service - Security Auditing Service Loaded: loaded (/usr/lib/systemd/system/auditd.service; enabled; vendor pres> Active: active (running) since Fri 2022-04-01 23:59:52 GMT; 2min 38s ago Docs: man:auditd(8) https://github.com/linux-audit/audit-documentation Main PID: 1385 (auditd) Tasks: 2 (limit: 100140) Memory: 2.5M CGroup: /system.slice/auditd.service `-1385 /sbin/auditd Apr 01 23:59:52 localhost.localdomain augenrules[1388]: backlog_wait_time 60000 Apr 01 23:59:52 localhost.localdomain augenrules[1388]: enabled 1 Apr 01 23:59:52 localhost.localdomain augenrules[1388]: failure 1 Apr 01 23:59:52 localhost.localdomain augenrules[1388]: pid 1385 Apr 01 23:59:52 localhost.localdomain augenrules[1388]: rate_limit 0 Apr 01 23:59:52 localhost.localdomain augenrules[1388]: backlog_limit 8192 Apr 01 23:59:52 localhost.localdomain augenrules[1388]: lost 0 Apr 01 23:59:52 localhost.localdomain augenrules[1388]: backlog 0 Apr 01 23:59:52 localhost.localdomain augenrules[1388]: backlog_wait_time 60000 Apr 01 23:59:52 localhost.localdomain systemd[1]: Started Security Auditing Ser> lines 1-21/21 (END)
Die Ausgabe zeigt, dass der Service (running)
und enabled
ist.
Der Status enabled
gibt an, dass der Service beim Booten konfiguriert wurde. Wenn dies nicht der Fall ist, starten Sie den Service als Root-Benutzer, um Auditinformationen zu erfassen und in die Logs zu schreiben.
Starten Sie den Service.
sudo service auditd start
Konfigurieren Sie auditd
so, dass sie beim Booten gestartet wird.
sudo systemctl enable auditd
Hinweis: Die nur Möglichkeit zur ordnungsgemäßen Interaktion mit dem auditd-Daemon verwendet den Befehl
service
.
Mit dem Befehlservice
wird die Aufzeichnung des Wertesauid
sichergestellt. Verwenden Sie den Befehlsystemctl
nur mit den Aktionenenable
undstatus
.
Auditing vorübergehend aktivieren und deaktivieren
Das Auditkontrollutility auditctl
interagiert mit der Kernel Audit-Komponente, um Regeln zu verwalten und viele Einstellungen und Parameter des Ereignisgenerierungsprozesses zu steuern.
Prüfen Sie den Status des Kernel-Auditsubsystems.
sudo auditctl -s
Beispielausgabe:
[oracle@ol8-server ~]$ sudo auditctl -s enabled 1 failure 1 pid 1399 rate_limit 0 backlog_limit 8192 lost 0 backlog 0 backlog_wait_time 60000 loginuid_immutable 0 unlocked
Deaktivieren Sie auditd
vorübergehend.
sudo auditctl -e 0
Aktivieren Sie auditd
erneut.
sudo auditctl -e 1
Hinweis: Die
pid
zeigt die Prozess-ID des Serviceauditd
an. Derpid
-Wert0
gibt an, dass der Service nicht ausgeführt wird.
Das Aktivierungskennzeichen auditctl -e
akzeptiert auch den Wert 2
, wodurch die Auditkonfiguration gesperrt wird.
Wenn die Auditkonfiguration auf diese Weise gesperrt wird, muss sie durch einen Neustart entsperrt werden. Weitere Details finden Sie unter man auditctl
.
Auditregeln und -logs ermitteln
Standardmäßig speichert Oracle Linux die Auditlogs in /var/log/audit/audit.log
.
Die Auditregeln befinden sich in /ect/audit/audit.rules
. Oracle Linux generiert das Standardregelset aus der Datei /etc/audit/rules.d/audit.rules
.
sudo cat /etc/audit/audit.rules
sudo cat /etc/audit/rules.d/audit.rules
Beispielausgabe:
## First rule - delete all -D ## Increase the buffers to survive stress events. ## Make this bigger for busy systems -b 8192 ## This determine how long to wait in burst of events --backlog_wait_time 60000 ## Set failure mode to syslog -f 1
Regeln mit dem Audit Control-Utility
Mit dem Programm auditctl
können Sie das Verhalten kontrollieren, den Status abrufen und Regeln hinzufügen oder löschen.
Fügen Sie eine Auditregel hinzu, die jeden Versuch protokolliert, die Datei /etc/ssh/sshd_config
zu lesen oder zu ändern.
sudo auditctl -w /etc/ssh/sshd_config -p rwxa -k sshd_config
Dabei gilt:
-w
: Erstellt eine Uhr im angegebenen Pfad.-p
: Legt Berechtigungen [read,write,execute,attribute] fest, die die Überwachung auslösen.-k
: Legt einen Schlüsselfilter fest, der die von einer Regel erstellten Auditdatensätze eindeutig identifiziert.
Zeigen Sie die Regel an.
sudo auditctl -l
Neue Regeln werden am Ende der Liste hinzugefügt. Sie können jedoch auch oben hinzugefügt werden.
Prüfen Sie, ob die neue Regel zur Datei /etc/audit/audit.rules
hinzugefügt wurde.
sudo cat /etc/audit/audit.rules
Beispielausgabe:
[oracle@ol8-server ~]$ sudo cat /etc/audit/audit.rules ## This file is automatically generated from /etc/audit/rules.d -D -b 8192 -f 1 --backlog_wait_time 60000
Die Regel wird nicht in der Datei angezeigt. Warum nicht?
Von auditctl
erstellte Regeln werden der Datei audit.rules
nicht hinzugefügt. Aus diesem Grund sind diese Änderungen vorübergehend und überstehen keinen Systemneustart.
Legen Sie die Regel dauerhaft fest, indem Sie sie einer benutzerdefinierten Regelsetdatei in /etc/audit/rules.d/my.rules
hinzufügen. Das Format der hinzugefügten Regel entspricht der Syntax des Befehls auditctl
, ohne auditctl
zu verwenden. Regeln sollten pro Zeile geschrieben und zur Performanceoptimierung kombiniert werden.
sudo tee /etc/audit/rules.d/my.rules > /dev/null <<'EOF'
-w /etc/ssh/sshd_config -p rwxa -k sshd_config
EOF
Zeigen Sie die Regel an.
sudo cat /etc/audit/rules.d/my.rules
Testen Sie die Regel.
cat /etc/ssh/sshd_config
Der Befehl gibt cat: /etc/ssh/sshd_config: Permission denied
zurück und generiert das folgende Ereignis in audit.log
.
sudo cat /var/log/audit/audit.log | grep sshd_config
Beispielausgabe:
type=CONFIG_CHANGE msg=audit(1648918923.746:266810): auid=1001 ses=15792 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 op=add_rule key="sshd_config" list=4 res=1AUID="oracle" type=SYSCALL msg=audit(1648923583.793:268315): arch=c000003e syscall=257 success=no exit=-13 a0=ffffff9c a1=7ffd08b6c575 > a2=0 a3=0 items=1 ppid=3406680 pid=3428336 auid=1001 uid=1001 gid=1001 euid=1001 suid=1001 fsuid=1001 egid=1001 sgid=1001 fsgid=1001 tty=pts0 ses=15792 comm="cat" exe="/usr/bin/cat" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="sshd_config"ARCH=x86_64 SYSCALL=openat AUID="oracle" UID="oracle" GID="oracle" EUID="oracle" SUID="oracle" FSUID="oracle" EGID="oracle" SGID="oracle" FSGID="oracle" type=PATH msg=audit(1648923583.793:268315): item=0 name="/etc/ssh/sshd_config" inode=67688941 dev=fc:00 mode=0100600 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:etc_t:s0 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0OUID="root" OGID="root"
Auditlogs suchen
Eine weitere Möglichkeit, die Logs zu durchsuchen, besteht darin, den Befehl ausearch
zu verwenden.
Rufen Sie dieselben Informationen mit diesem Befehl ab.
sudo ausearch --key sshd_config
Beispielausgabe:
Email option is specified but /usr/lib/sendmail doesn't seem executable. ---- time->Sat Apr 2 17:02:03 2022 type=CONFIG_CHANGE msg=audit(1648918923.746:266810): auid=1001 ses=15792 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 op=add_rule key="sshd_config" list=4 res=1 ---- time->Sat Apr 2 18:19:43 2022 type=PROCTITLE msg=audit(1648923583.793:268315): proctitle=636174002F6574632F7373682F737368645F636F6E666967 type=PATH msg=audit(1648923583.793:268315): item=0 name="/etc/ssh/sshd_config" inode=67688941 dev=fc:00 mode=0100600 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:etc_t:s0 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0 type=CWD msg=audit(1648923583.793:268315): cwd="/home/oracle" type=SYSCALL msg=audit(1648923583.793:268315): arch=c000003e syscall=257 success=no exit=-13 a0=ffffff9c a1=7ffd08b6c575 > a2=0 a3=0 items=1 ppid=3406680 pid=3428336 auid=1001 uid=1001 gid=1001 euid=1001 suid=1001 fsuid=1001 egid=1001 sgid=1001 fsgid=1001 tty=pts0 ses=15792 comm="cat" exe="/usr/bin/cat" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="sshd_config"
Die Ausgabe von ausearch
ist je nach Ausgabeformat einfacher zu verwenden und zu lesen. Sie können das Log ganz einfach lesen, indem Sie die Option -i
oder --interpret
hinzufügen. Diese Option interpretiert numerische Entitys in Text, beispielsweise die Konvertierung eines uid
in einen Accountnamen.
sudo ausearch -i -k sshd_config
Beispielausgabe:
Email option is specified but /usr/lib/sendmail doesn't seem executable. ---- type=CONFIG_CHANGE msg=audit(04/02/2022 17:02:03.746:266810) : auid=oracle ses=15792 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 op=add_rule key=sshd_config list=exit res=yes ---- type=PROCTITLE msg=audit(04/02/2022 18:19:43.793:268315) : proctitle=cat /etc/ssh/sshd_config type=PATH msg=audit(04/02/2022 18:19:43.793:268315) : item=0 name=/etc/ssh/sshd_config inode=67688941 dev=fc:00 mode=file,600 ouid=root ogid=root rdev=00:00 obj=system_u:object_r:etc_t:s0 nametype=NORMAL cap_fp=none cap_fi=none cap_fe=0 cap_fver=0 cap_frootid=0 type=CWD msg=audit(04/02/2022 18:19:43.793:268315) : cwd=/home/oracle type=SYSCALL msg=audit(04/02/2022 18:19:43.793:268315) : arch=x86_64 syscall=openat success=no exit=EACCES(Permission denied) a0=0xffffff9c a1=0x7ffd08b6c575 a2=O_RDONLY a3=0x0 items=1 ppid=3406680 pid=3428336 auid=oracle uid=oracle gid=oracle euid=oracle suid=oracle fsuid=oracle egid=oracle sgid=oracle fsgid=oracle tty=pts0 ses=15792 comm=cat exe=/ usr/bin/cat subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=sshd_config
Weitere Formatierungsoptionen und Möglichkeiten für die Suche nach audit.log
finden Sie unter man ausearch
.
Vorab konfigurierte Regeln laden
Oracle Linux stellt ein Skript bereit, das alle Auditregeldateien der Komponente in /etc/audit/rules.d
zusammenführt. Nach der Zusammenführung ersetzt die neue Datei die vorhandene /etc/audit/audit.rules
. Dieses Skript ist in die Servicedatei auditd
integriert und wird ausgeführt, wenn der Service gestartet wird.
Prüfen Sie, ob vorhandene Regeländerungen zum Laden vorhanden sind.
sudo augenrules --check
Die Ausgabe enthält den Status Rules have changed and should be updated
. Diese Änderung liegt an der zuvor erstellten my.rules
-Datei in/etc/audit/rules.d
.
Löschen Sie die zuvor hinzugefügte benutzerdefinierte sshd_config
-Regel, um die neuen Regelerweiterungen problemlos zu verfolgen.
sudo auditctl -D -k sshd_config
Führen Sie die benutzerdefinierte Regeldatei my.rules
zusammen.
sudo augenrules --load
Beispielausgabe:
[oracle@ol8-server ~]$ sudo augenrules --load No rules enabled 1 failure 1 pid 1395 rate_limit 0 backlog_limit 8192 lost 0 backlog 0 backlog_wait_time 60000 enabled 1 failure 1 pid 1395 rate_limit 0 backlog_limit 8192 lost 0 backlog 0 backlog_wait_time 60000 enabled 1 failure 1 pid 1395 rate_limit 0 backlog_limit 8192 lost 0 backlog 0 backlog_wait_time 60000
Prüfen Sie die aktiven Auditregeln.
sudo auditctl -l
Beispielausgabe:
[oracle@ol-lab-2022-03-23-182415-0 ~]$ sudo auditctl -l -w /etc/ssh/sshd_config -p rwxa -k sshd_config
Fügen Sie einer neuen Datei new.rules
zusätzliche Regeln hinzu.
Hinweis: Nur Dateien, die auf
.rules
enden, werden vonaugenrules
gelesen und geladen.
sudo tee /etc/audit/rules.d/new.rules > /dev/null <<'EOF'
-w /etc/passwd -p wa -k passwd_changes
-w /etc/selinux/ -p wa -k selinux_changes
EOF
Neue Regeln laden
sudo augenrules --load
Prüfen Sie die aktiven Regeln erneut.
sudo auditctl -l
Die neuen Regeln werden geladen und in die Datei audit.rules
zusammengeführt.
sudo cat /etc/audit/audit.rules
Das System hat im Rahmen der Zusammenführung eine Backupdatei /etc/audit/audit.rules.prev
erstellt.
sudo ls -l /etc/audit
Die vom Oracle Linux-Auditingsystem bereitgestellten Informationen unterstützen die Erkennung von Angriffen.
Sehen Sie sich die man
-Seiten für die angezeigten Utilitys an. Danach haben Sie gelernt, wie Sie Ihrem System benutzerdefinierte Auditregeln für bestimmte Loggingereignisse hinzufügen.
Weitere Informationen
Weitere zugehörige Ressourcen anzeigen:
Weitere Lernressourcen
Sehen Sie sich andere Übungen auf der Website docs.oracle.com/learn an, oder greifen Sie auf Inhalte zu, die Sie über den Oracle Learning-Kanal YouTube benötigen. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Produktdokumentation finden Sie unter Oracle Help Center.