GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment utiliser auditd pour surveiller un SYSCALL spécifique

Un SYSCALL se produit chaque fois qu'un utilisateur exécute une commande qui demande que le noyau Linux fournisse un service. Il existe plusieurs SYSCALL comme mount, umount, kill, open etc. Ces SYSCALLs peuvent être surveillés avec le système auditd. Prenons "tuer" SYSCALL comme exemple.

L'utilisateur veut capturer qui a tué un certain processus sur le système. Cela peut être facilement réalisé en écrivant une règle auditd qui peut capturer le kill SYSCALL chaque fois qu'il est appelé.

Installer et configurer auditd

auditd est principalement préinstallé sur les distributions Linux. S'il n'est pas disponible, vous pouvez utiliser le gestionnaire de packages du système d'exploitation correspondant pour l'installer. Par exemple, dans le cas de CentOS/RHEL :

# yum install auditd

Activez le service auditd pour qu'il démarre au démarrage et démarrez-le à l'aide de la commande "service".

# systemctl enable auditd
# service start auditd

Configuration de la règle auditd pour surveiller SYSCALL

Créons une règle pour surveiller le "kill" SYSCALL qui peut être utilisé pour trouver tous les kills d'un processus.

1. Ajoutez la règle ci-dessous au fichier de configuration des règles auditd /etc/audit/rules.d/audit.rules :

# vi /etc/audit/rules.d/audit.rules
-a exit,always -F arch=b64 -S kill -k kill_rule
Sur CentOS/RHEL 6, le fichier de configuration est /etc/audit/audit.rules au lieu de /etc/audit/rules.d/audit.rules.

Ici,
-une sortie,toujours – Ici, nous avons l'action et la liste. Chaque fois que le système d'exploitation quitte un appel système, la liste de sortie sera utilisée pour déterminer si un événement d'audit doit être généré.
-F arch=b64 – L'option -F est utilisée pour créer un champ de règle. Le b64 signifie que l'ordinateur fonctionne avec un processeur x86_64. (Qu'il s'agisse d'Intel ou d'AMD n'a pas d'importance.)
-S kill – L'option -S spécifie l'appel système que nous voulons surveiller.
-k – Il s'agit d'un nom de règle défini par l'utilisateur.

Remarque :"arch" est l'architecture CPU du syscall. Si le système est un système d'exploitation 32 bits, vous devez le définir avec "arch =b32".

2. Redémarrez le service auditd pour que la nouvelle règle soit effective.

# service restart auditd

3. Vous pouvez vérifier si les règles définies sont actives à l'aide de la commande "auditctl -l".

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

Vérifier

Voyons un exemple si la règle que nous venons de créer fonctionne réellement ou non. Nous allons simplement lancer un processus « sleep 500 » et le tuer. Cela devrait générer un journal d'audit avec tous les détails comme qui a tué le processus (uid) avec quel programme/commande, etc.

1. Créez un processus de sommeil simple en arrière-plan.

# sleep 600 &

2. Vérifiez l'ID de processus du processus de mise en veille et arrêtez-le.

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

3. Recherchez le fichier journal d'audit /var/log/audit/audit.log pour les journaux d'audit kill. Le journal devrait ressembler à celui illustré ci-dessous.

# 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. Parfois, le journal d'audit peut être difficile à rechercher les journaux qui nous intéressent. Dans ce cas, vous pouvez également utiliser la commande "ausearch" avec la clé définie avec la règle. Par exemple :

# 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. Comment tuer un processus exécuté sur un port spécifique sous Linux ?

  2. Comment utiliser auditd pour surveiller la suppression d'un fichier sous Linux

  3. Comment utiliser un gestionnaire de tâches dans Ubuntu pour surveiller le système

  4. Comment utiliser la commande 'cp' pour exclure un répertoire spécifique ?

  5. comment utiliser kill SIGUSR2 dans bash?

Comment utiliser Webuzo Panel !!!

Comment utiliser htop pour surveiller les processus du système Linux

Comment utiliser htop pour surveiller les processus système dans Ubuntu 18.04

Comment utiliser htop pour surveiller les processus système dans Ubuntu 20.04

Comment utiliser la commande ss (Surveiller les connexions réseau)

Comment utiliser FTP