GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

Verwendung von auditd zur Überwachung eines bestimmten SYSCALL

Ein SYSCALL tritt immer dann auf, wenn ein Benutzer einen Befehl ausführt, der den Linux-Kernel auffordert, einen Dienst bereitzustellen. Es gibt mehrere SYSCALLs wie mount, umount, kill, open usw. Diese SYSCALLs können mit dem auditd-System überwacht werden. Nehmen wir als Beispiel „kill“ SYSCALL.

Der Benutzer möchte erfassen, wer einen bestimmten Prozess auf dem System beendet hat. Dies kann leicht erreicht werden, indem eine auditd-Regel geschrieben wird, die den SYSCALL-Kill jedes Mal erfassen kann, wenn er aufgerufen wird.

Auditd installieren und konfigurieren

auditd ist meistens auf Linux-Distributionen vorinstalliert. Falls es nicht verfügbar ist, können Sie es mit dem Paketmanager des jeweiligen Betriebssystems installieren. Zum Beispiel im Fall von CentOS/RHEL:

# yum install auditd

Aktivieren Sie den auditd-Dienst so, dass er beim Booten startet, und starten Sie ihn mit dem Befehl „service“.

# systemctl enable auditd
# service start auditd

Auditd-Regel konfigurieren, um SYSCALL zu überwachen

Lassen Sie uns eine Regel erstellen, um den „Kill“-SYSCALL zu überwachen, der verwendet werden kann, um alle Prozesse zu finden, die einen Prozess beenden.

1. Fügen Sie die folgende Regel zur Konfigurationsdatei für auditd-Regeln /etc/audit/rules.d/audit.rules hinzu :

# vi /etc/audit/rules.d/audit.rules
-a exit,always -F arch=b64 -S kill -k kill_rule
Unter CentOS/RHEL 6 ist die Konfigurationsdatei /etc/audit/audit.rules statt /etc/audit/rules.d/audit.rules.

Hier
-immer ein Ausgang – Hier haben wir die Aktion und die Liste. Immer wenn das Betriebssystem einen Systemaufruf beendet, wird anhand der Exit-Liste bestimmt, ob ein Audit-Ereignis generiert werden muss.
-F arch=b64 – Die Option -F wird verwendet, um ein Regelfeld zu erstellen. Das b64 bedeutet, dass der Computer mit einer x86_64-CPU läuft. (Ob Intel oder AMD spielt keine Rolle.)
-S kill – Die Option -S gibt den Systemaufruf an, den wir überwachen möchten.
-k – Dies ist ein benutzerdefinierter Regelname.

Hinweis :„arch“ ist die CPU-Architektur des Systemaufrufs. Wenn das System ein 32-Bit-Betriebssystem ist, müssen Sie es mit „arch=b32“ festlegen.

2. Starten Sie den auditd-Dienst neu, damit die neue Regel wirksam wird.

# service restart auditd

3. Sie können überprüfen, ob die definierten Regeln aktiv sind, indem Sie den Befehl „auditctl -l“ verwenden.

# auditctl -l
-a always,exit -F arch=b64 -S kill -F key=kill_rule

Bestätigen

Sehen wir uns ein Beispiel an, ob die gerade erstellte Regel tatsächlich funktioniert oder nicht. Wir werden einfach einen „Sleep 500“-Prozess initiieren und ihn beenden. Dies sollte ein Prüfprotokoll mit allen Details erzeugen, wie z. B. wer den Prozess (uid) mit welchem ​​Programm/Befehl usw. beendet hat.

1. Spawnen Sie einen einfachen Sleep-Prozess im Hintergrund.

# sleep 600 &

2. Suchen Sie nach der Prozess-ID des Sleep-Prozesses und beenden Sie ihn.

# ps -ef | grep sleep
root      2089  1784  0 15:12 pts/0    00:00:00 sleep 600
# kill -9 2089

3. Suchen Sie nach der Audit-Protokolldatei /var/log/audit/audit.log für die Kill-Audit-Logs. Das Protokoll sollte ähnlich aussehen wie unten gezeigt.

# tail -f /var/log/audit/audit.log
type=SYSCALL msg=audit(1529507591.700:304): arch=c000003e syscall=62 success=yes exit=0 a0=829 a1=9 a2=0 a3=829 items=0 ppid=1783 pid=1784 auid=1001 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="bash" exe="/usr/bin/bash" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="kill_rule"
type=OBJ_PID msg=audit(1529507591.700:304): opid=2089 oauid=1001 ouid=0 oses=1 obj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 ocomm="sleep"
type=PROCTITLE msg=audit(1529507591.700:304): proctitle="-bash"

4. Manchmal kann es schwierig sein, im Überwachungsprotokoll nach den Protokollen zu suchen, an denen wir interessiert sind. In diesem Fall können Sie auch den Befehl „ausearch“ mit dem Schlüssel verwenden, der mit der Regel definiert ist. Zum Beispiel:

# ausearch -k kill_rule
...
time->Wed Jun 20 15:13:11 2018
type=PROCTITLE msg=audit(1529507591.700:304): proctitle="-bash"
type=OBJ_PID msg=audit(1529507591.700:304): opid=2089 oauid=1001 ouid=0 oses=1 obj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 ocomm="sleep"
type=SYSCALL msg=audit(1529507591.700:304): arch=c000003e syscall=62 success=yes exit=0 a0=829 a1=9 a2=0 a3=829 items=0 ppid=1783 pid=1784 auid=1001 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="bash" exe="/usr/bin/bash" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="kill_rule"


Cent OS
  1. Wie beendet man einen Prozess, der auf einem bestimmten Port in Linux läuft?

  2. So ignorieren/deaktivieren Sie bestimmte auditd-Protokollierungseinträge

  3. Wie man nur bestimmten Nicht-Root-Benutzern erlaubt, crontab zu verwenden

  4. wie benutzt man kill SIGUSR2 in bash?

  5. wie man cURL auf einer bestimmten Schnittstelle verwendet

So verwenden Sie das Webuzo-Panel !!!

So verwenden Sie htop zum Überwachen von Linux-Systemprozessen

So verwenden Sie htop zum Überwachen von Systemprozessen in Ubuntu 18.04

So verwenden Sie htop zum Überwachen von Systemprozessen in Ubuntu 20.04

So verwenden Sie den Befehl ss (Netzwerkverbindungen überwachen)

So verwenden Sie FTP