GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo usar auditd para monitorear un SYSCALL específico

Una SYSCALL ocurre cada vez que un usuario ejecuta un comando que solicita que el kernel de Linux proporcione un servicio. Hay varios SYSCALL como montar, desmontar, matar, abrir, etc. Estos SYSCALL se pueden monitorear con el sistema auditd. Tomemos "matar" SYSCALL como ejemplo.

El usuario quiere capturar quién ha eliminado un determinado proceso en el sistema. Esto se puede lograr fácilmente al escribir una regla de auditoría que pueda capturar la eliminación de SYSCALL cada vez que se llame.

Instalación y configuración de auditd

auditd viene principalmente preinstalado en las distribuciones de Linux. En caso de que no esté disponible, puede usar el administrador de paquetes del sistema operativo respectivo para instalarlo. Por ejemplo, en el caso de CentOS/RHEL:

# yum install auditd

Habilite el servicio auditd para que se inicie en el arranque e inícielo con el comando "servicio".

# systemctl enable auditd
# service start auditd

Configuración de la regla auditd para monitorear SYSCALL

Vamos a crear una regla para monitorear el SYSCALL "matar" que se puede usar para encontrar todos los procesos que matan.

1. Agregue la siguiente regla al archivo de configuración de reglas 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
En CentOS/RHEL 6, el archivo de configuración es /etc/audit/audit.rules en lugar de /etc/audit/rules.d/audit.rules.

Aquí,
-una salida,siempre – Aquí tenemos la acción y la lista. Cada vez que el sistema operativo sale de una llamada al sistema, la lista de salida se utilizará para determinar si es necesario generar un evento de auditoría.
-F arch=b64 – La opción -F se utiliza para crear un campo de regla. El b64 significa que la computadora está funcionando con una CPU x86_64. (No importa si es Intel o AMD).
-S kill – La opción -S especifica la llamada al sistema que queremos monitorear.
-k – Este es un nombre de regla definido por el usuario.

Nota :"arch" es la arquitectura de la CPU de la llamada al sistema. Si el sistema es un sistema operativo de 32 bits, debe configurarlo con "arch =b32".

2. Reinicie el servicio auditd para que la nueva regla sea efectiva.

# service restart auditd

3. Puede verificar si las reglas definidas están activas, utilizando el comando "auditctl -l".

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

Verificar

Veamos un ejemplo si la regla que acabamos de crear realmente funciona o no. Simplemente iniciaremos un proceso de "sueño 500" y lo mataremos. Esto debería generar un registro de auditoría con todos los detalles, como quién eliminó el proceso (uid), con qué programa/comando, etc.

1. Genere un proceso de suspensión simple en segundo plano.

# sleep 600 &

2. Verifique el ID de proceso del proceso de suspensión y elimínelo.

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

3. Busque el archivo de registro de auditoría /var/log/audit/audit.log para los registros de auditoría de eliminación. El registro debe ser similar al que se muestra a continuación.

# 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. A veces, el registro de auditoría puede ser difícil de buscar los registros que nos interesan. En ese caso, también puede usar el comando "ausearch" con la clave definida con la regla. Por ejemplo:

# 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. ¿Cómo usar yum para instalar una versión específica de un paquete?

  2. Linux:¿cómo usar tres monitores en una computadora portátil?

  3. ¿Cómo eliminar un proceso que se ejecuta en un puerto específico en Linux?

  4. Cómo ignorar/deshabilitar entradas de registro auditadas específicas

  5. Cómo usar un administrador de tareas en Ubuntu para monitorear el sistema

¡¡¡Cómo utilizar el Panel Webuzo!!!

Cómo usar htop para monitorear los procesos del sistema Linux

Cómo usar htop para monitorear los procesos del sistema en Ubuntu 18.04

Cómo usar htop para monitorear los procesos del sistema en Ubuntu 20.04

Cómo usar el Comando ss (Supervisar las Conexiones de Red)

Cómo usar FTP