Aprenda la auditoría de sistemas Linux con la herramienta Auditd en CentOS/RHEL


La auditoría del sistema simplemente se refiere al análisis en profundidad de un sistema objetivo específico: una auditoría se compone de un examen de las diversas partes que componen ese sistema, con una evaluación crítica (y pruebas si es necesario) en diferentes áreas de interés.

Uno de los subsistemas críticos en RHEL/CentOS, el sistema de auditoría de Linux comúnmente conocido como auditd. Implementa un medio para rastrear información relevante para la seguridad en un sistema: utiliza reglas preconfiguradas para recopilar grandes cantidades de información sobre eventos que están sucediendo en el sistema y los registra en un archivo de registro, creando así una prueba de auditoría.

Puede registrar información como fecha y hora, tipo y resultado de un evento; usuarios que causaron el evento, cualquier modificación realizada a archivos/bases de datos; usos de los mecanismos de autenticación del sistema, como PAM, LDAP, SSH y otros.

Auditd también registra cualquier cambio realizado en los archivos de configuración de auditoría o cualquier intento de acceder a los archivos de registro de auditoría, y cualquier esfuerzo para importar o exportar información hacia o desde el sistema, además de mucha otra información relacionada con la seguridad.

  1. No requiere ningún programa o proceso externo para ejecutarse en un sistema, lo que lo hace autosuficiente.
  2. Es altamente configurable, por lo tanto, le permite ver cualquier operación del sistema que desee.
  3. Ayuda a detectar o analizar posibles riesgos de un sistema.
  4. Es capaz de funcionar como un sistema de detección independiente.
  5. Puede funcionar con sistemas de detección de intrusos para habilitar la detección de intrusos.
  6. Es una herramienta vital para auditar investigaciones forenses.

El sistema de auditoría tiene dos componentes básicos, a saber:

  • aplicaciones de espacio de usuario y utilidades/herramientas, y
  • Procesamiento de llamadas al sistema del lado del kernel: acepta llamadas al sistema desde aplicaciones de espacio de usuario y las pasa a través de tres tipos de filtros, a saber: usuario, tarea, salida o exclusión.

La parte más importante es el demonio de auditoría del espacio de usuario (auditd) que recopila información basada en reglas preconfiguradas del kernel y genera entradas en un archivo de registro: el registro predeterminado es /var/log/audit/audit.log.

Además, el audispd (demonio del despachador de auditoría) es un multiplexor de eventos que interactúa con auditd y envía eventos a otros programas que desean realizar el procesamiento de eventos en tiempo real.

Hay una serie de herramientas de espacio de usuario para administrar y recuperar información del sistema de auditoría:

  • auditctl: una utilidad para controlar el sistema de auditoría del kernel.
  • ausearch: una utilidad para buscar archivos de registro de auditoría para eventos específicos.
  • aureport: una utilidad para crear informes de eventos registrados.

Cómo instalar y configurar la herramienta de auditoría en RHEL/CentOS/Fedora

Primero asegúrese de verificar que la herramienta de auditoría esté instalada en su sistema usando la utilidad grep de la siguiente manera:

# rpm -qa | grep audit

Si no tiene instalados los paquetes anteriores, ejecute este comando como usuario root para instalarlos.

# yum install audit

A continuación, verifique si auditd está habilitado y en ejecución, emita los comandos systemctl a continuación en la terminal.

--------------- On CentOS/RHEL 7 --------------- 
# systemctl is-enabled auditd
# systemctl status auditd
# systemctl start auditd   [Start]
# systemctl enable auditd  [Enable]

--------------- On CentOS/RHEL 6 --------------- 
# service auditd status
# service auditd start     [Start]
# chkconfig auditd on      [Enable]

Ahora veremos cómo configurar auditd usando el archivo de configuración principal /etc/audit/auditd.conf. Los parámetros aquí le permiten controlar cómo se ejecuta el servicio, como definir la ubicación del archivo de registro, el número máximo de archivos de registro, el formato de registro, cómo manejar los discos completos, la rotación de registros y muchas más opciones.

# vi /etc/audit/auditd.conf

De la salida de muestra a continuación, los parámetros se explican por sí mismos.

Comprensión de las reglas de auditoría

Como mencionamos anteriormente, auditd usa reglas para recopilar información específica del kernel. Estas reglas son básicamente opciones auditctl (consulte la página del manual) que puede preconfigurar reglas en el archivo /etc/audit/rules.d/audit.rules (en CentOS 6, use el archivo /etc/audit/audit.rules) , para que se carguen al inicio.

Hay tres tipos de reglas de auditoría que puede definir:

  • Reglas de control: permiten modificar el comportamiento del sistema de auditoría y algunas de sus configuraciones.
  • Reglas del sistema de archivos (también conocidas como controles de archivos): habilitan la auditoría del acceso a un determinado archivo o directorio.
  • Reglas de llamadas al sistema: permite el registro de llamadas al sistema realizadas por cualquier programa.

Ahora abra el archivo de configuración principal para editarlo:

# vi /etc/audit/rules.d/audit.rules

Tenga en cuenta que la primera sección de este archivo debe contener reglas de control. Luego agregue sus reglas de auditoría (controles de archivos y reglas de llamadas al sistema) en la sección central, y finalmente la última sección contiene configuraciones de inmutabilidad que también son reglas de control.

-D		#removes all previous rules
-b  3074	#define buffer size
-f 4		#panic on failure 
-r 120		#create at most 120 audit messages per second

Puede definir relojes de archivos utilizando esta sintaxis:

-w /path/to/file/or/directory -p permissions -k key_name

Donde la opción:

  • w: se utiliza para especificar un archivo o directorio para supervisar.
  • p - permisos para ser registrados, r - para acceso de lectura, w - para acceso de escritura, x - para acceso de ejecución y a - para cambio de archivo o atributo de director.
  • -k: le permite establecer una cadena opcional para identificar qué regla (o un conjunto de reglas) creó una entrada de registro específica.

Estas reglas permiten que la auditoría observe los eventos que realizan cambios en estos archivos críticos del sistema.

-w /etc/passwd -p wa -k passwd_changes
-w /etc/group -p wa -k group_changes
-w /etc/shadow -p wa -k shadow_changes
-w /etc/sudoers -p wa -k sudoers_changes

Puede establecer una regla de llamada al sistema mediante el siguiente formulario:

-a action,filter -S system_call -F field=value -k key_name

dónde:

  • acción: tiene dos valores posibles: siempre o nunca.
  • filtro: especifica que el filtro de coincidencia de reglas del kernel (tarea, salida, usuario y exclusión) se aplica al evento.
  • llamada al sistema: nombre de la llamada al sistema.
  • campo: especifica opciones adicionales como arquitectura, PID, GID, etc. para modificar la regla.

Aquí hay algunas reglas que puede definir.

-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_change
-a always,exit -S sethostname -S setdomainname -k system_locale

Luego, por último, agregue la configuración de inmutabilidad al final del archivo, por ejemplo:

-e 1	#enable auditing
-e 2	#make the configuration immutable -- reboot is required to change audit rules

Cómo establecer reglas auditadas mediante la utilidad auditctl

Alternativamente, envíe las opciones a auditd mientras se está ejecutando, usando auditctl como en los siguientes ejemplos. Estos comandos pueden anular las reglas del archivo de configuración.

Para enumerar todas las reglas de auditoría cargadas actualmente, pase la marca -l :

# auditctl -l

A continuación, intente agregar algunas reglas:

# auditctl -w /etc/passwd -p wa -k passwd_changes
# auditctl -w /etc/group -p wa -k group_changes
# auditctl -w /etc/sudoers -p wa -k sudoers_changes
# auditctl -l

Todos los mensajes de auditoría se registran en el archivo /var/log/audit/audit.log de forma predeterminada. Para comprender el formato de entrada de registro, cargaremos una regla y comprobaremos la entrada de registro generada después de un evento que coincida con la regla.

Suponiendo que tengamos un directorio de copias de seguridad secreto, esta regla de auditoría registrará cualquier intento de acceder o modificar este directorio:

# auditctl -w /backups/secret_files/ -p rwa -k secret_backup

Ahora, usando otra cuenta del sistema, intente moverse al directorio de arriba y ejecute el comando ls:

$ cd /backups/secret_files/
$ ls

La entrada del registro se verá así.

El evento anterior se compone de tres tipos de registros de auditoría. El primero es type u003d SYSCALL:

type=SYSCALL msg=audit(1505784331.849:444): arch=c000003e syscall=257 success=yes exit=3 a0=ffffffffffffff9c a1=8ad5c0 a2=90800 a3=0 items=1 ppid=2191 pid=2680 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts1 ses=3 comm="ls" exe="/usr/bin/ls" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="secret_backup"

El segundo es type u003d CWD.

type=CWD msg=audit(1505784331.849:444):  cwd="/backups/secret_files"

Y el último es type u003d PATH:

type=PATH msg=audit(1505784331.849:444): item=0 name="." inode=261635 dev=08:01 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:default_t:s0 objtype=NORMAL

Puede encontrar una lista completa de todos los campos de eventos (como msg, arch, ses, etc.) y sus significados en Audit System Reference.

Eso es todo por ahora. En el próximo artículo, veremos cómo usar ausearch para consultar archivos de registro de auditoría: explicaremos cómo buscar información específica en los registros de auditoría. Si tiene alguna pregunta, comuníquese con nosotros a través de la sección de comentarios a continuación.