Die Frage hier ist also, wie wir feststellen, welcher Benutzer- oder Systemprozess einen bestimmten Einhängepunkt aushängt oder einhängt. Das Ein- und Aushängen eines Einhängepunkts kann mit Hilfe von auditd überwacht werden. auditd ist eine Userspace-Komponente des Linux-Prüfsystems. Dies bedeutet, dass Systembenutzer auditd ausführen können, um Regeln und Warnungen für die Überwachungsfunktionalität mit dem Linux-System zu konfigurieren.
Eines der besten Dinge an auditd ist, dass es eng in den Kernel integriert ist, sodass wir wirklich fast alles überwachen können, was wir wollen. Standardmäßig sind keine Regeln konfiguriert. Wir müssen unsere Regeln in /etc/audit/rules.d/audit.rules schreiben Konfigurationsdatei, die gelesen und die entsprechenden Audit-Aktionen angewendet werden.
Auditd installieren
1. Die auditd-Pakete sind Teil der Standardinstallation von RHEL/CentOS 7-Systemen. Wir können es mit dem folgenden Befehl überprüfen:
# rpm -qa | grep audit audit-libs-2.8.1-3.el7.x86_64 audit-libs-python-2.8.1-3.el7.x86_64 audit-2.8.1-3.el7.x86_64
2. Wenn das Paket nicht Teil unseres Systems ist, können wir es installieren:
# yum install audit
3. Stellen Sie sicher, dass der Audit-Daemon ausgeführt wird. Wir verwenden den folgenden Befehl:
# systemctl status auditd ● auditd.service - Security Auditing Service Loaded: loaded (/usr/lib/systemd/system/auditd.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2018-06-17 06:56:06 UTC; 2min 37s ago Docs: man:auditd(8) https://github.com/linux-audit/audit-documentation Process: 657 ExecStartPost=/sbin/augenrules --load (code=exited, status=0/SUCCESS) Process: 652 ExecStart=/sbin/auditd (code=exited, status=0/SUCCESS) Main PID: 653 (auditd) Tasks: 2 CGroup: /system.slice/auditd.service └─653 /sbin/auditd
Im Fall von CentOS/RHEL 6 können Sie den Dienstbefehl verwenden, um den Status des auditd-Dienstes zu überprüfen:
# service auditd status
Konfigurieren von auditd-Regeln zum Überwachen des Mountens/Unmountens von Dateisystemen
Lassen Sie uns nun die auditd-Regeln konfigurieren, die zum Überwachen des Mountens/Unmountens von Dateisystemen erforderlich sind.
1. Fügen Sie die folgende Regel in die Datei /etc/audit/rules.d/audit.rules ein und prüfen Sie Mount- und Umount-Operationen. Beachten Sie, dass der Name von umount SYCALL umount2 ist.
# vi /etc/audit/rules.d/audit.rules -a always,exit -F arch=b64 -S mount,umount2 -k mount_umountUnter CentOS/RHEL 6 ist die Konfigurationsdatei /etc/audit/audit.rules statt /etc/audit/rules.d/audit.rules.
Hier
-a – Fügt eine Regel mit Aktion an das Ende der Liste an.
Always,exit – sind die mit der Option -a angegebenen Aktionen.
-S – steht für den SYSCALL (in uor case mount und umount2)
arch=b64 – gibt die Regel für die 64-Bit-Architektur an.
2. Starten Sie den auditd-Dienst mit dem „service“-Befehl neu:
# service auditd restart Stopping logging: [ OK ] Redirecting start to /bin/systemctl start auditd.service
Bestätigen
1. Nehmen wir den Einhängepunkt /data als Beispiel und prüfen wir, ob wir Prüfprotokolle erhalten, die beim Einhängen/Aushängen dieses Einhängepunkts generiert werden.
# df -hP /data Filesystem Size Used Avail Use% Mounted on /dev/xvdf 976M 2.6M 907M 1% /data
2. Unmounten Sie diesen Einhängepunkt manuell.
# umount /data
Überwachen Sie /var/log/audit/audit.log und suchen Sie nach Meldungen, die den folgenden ähneln. Die uid= und gid= Abschnitte sowie die pid= Ein Teil der Prüfprotokolle kann dabei helfen, den Prozess oder Benutzer zu ermitteln, der den Befehl ausgibt:
# tailf /var/log/audit/audit.log ... type=SYSCALL msg=audit(1529223527.639:881): arch=c000003e syscall=166 success=yes exit=0 a0=55a5863d3880 a1=0 a2=1 a3=7ffe52c22320 items=1 ppid=2930 pid=3335 auid=1001 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=2 comm="umount" exe="/usr/bin/umount" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="mount_umount" type=CWD msg=audit(1529223527.639:881): cwd="/root"
Das Durchlaufen von /var/log/audit/audit.log kann überwältigend sein, wenn auf Ihrem Server viele Dinge überwacht werden. Stattdessen können Sie den Befehl „ausearch“ mit dem in der Regel definierten Schlüssel verwenden, um nur Protokolle herauszufiltern, die sich auf das Ein- und Aushängen beziehen. Zum Beispiel:
# ausearch -k mount_umount ---- time->Sun Jun 17 08:18:47 2018 type=PROCTITLE msg=audit(1529223527.639:881): proctitle=756D6F756E74002F64617461 type=PATH msg=audit(1529223527.639:881): item=0 name="/data" inode=2 dev=ca:50 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:unlabeled_t:s0 objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0 type=CWD msg=audit(1529223527.639:881): cwd="/root" type=SYSCALL msg=audit(1529223527.639:881): arch=c000003e syscall=166 success=yes exit=0 a0=55a5863d3880 a1=0 a2=1 a3=7ffe52c22320 items=1 ppid=2930 pid=3335 auid=1001 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=2 comm="umount" exe="/usr/bin/umount" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="mount_umount"Wie überwache ich /etc/shadow- und /etc/passwd-Dateien auf Änderungen mit Auditd?
Wie verwende ich auditd, um eine Dateilöschung unter Linux zu überwachen
Systemüberwachung mit auditd verstehen