Aprenda la auditoría del sistema Linux con la herramienta Auditd en CentOS / RHEL


La auditoría del sistema simplemente se refiere al análisis en profundidad de un sistema específico: una auditoría se compone de un examen de las diversas partes que conforman ese sistema, con 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: usa reglas preconfiguradas para recopilar grandes cantidades de información sobre eventos que están ocurriendo en el sistema y las registra en un archivo de registro, creando así una prueba de auditoría.

Puede registrar información como la fecha y la hora, el tipo y el resultado de un evento; usuarios que causaron el evento, cualquier modificación hecha 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 por importar o exportar información hacia o desde el sistema, además de mucha otra información relacionada con la seguridad.

  1. It doesn’t require any external programs or processes to run on a system making it self-reliant.
  2. It is highly configurable therefore enables you to view any system operation(s) you want.
  3. It helps in detecting or analyzing potential compromises of a system.
  4. It is capable of working as an independent detection system.
  5. It can work with Intrusion Detection Systems to enable intrusion detection.
  6. It is a vital tool for auditing forensics investigations.

El sistema de auditoría tiene dos componentes principales, a saber:

  • user-space applications and utilities/tools, and
  • kernel-side system call processing – this accepts system calls from user-space applications and passes them through three types of filters, namely: user, task, exit, or exclude.

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

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

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

  • auditctl – a utility for controlling the kernel’s audit system.
  • ausearch – a utility for searching audit log files for specific events.
  • aureport – a utility for creating reports of recorded events.

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 el comando rpm y 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, compruebe si auditd está habilitado y en ejecución, emita los comandos systemctl a continuación en el 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 utilizando 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, la cantidad máxima de archivos de registro, el formato de registro, cómo tratar con discos completos, la rotación de registros y muchas más opciones.

# vi /etc/audit/auditd.conf

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

Entendiendo las reglas de auditoría

Como mencionamos anteriormente, auditd usa reglas para recopilar información específica del kernel. Estas reglas son básicamente las opciones de auditctl (consulte la página de manual) que puede configurar previamente 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 puedes definir:

  • Control rules – these enable modification of the audit system’s behavior and a few of its configurations.
  • File system rules (also referred to as file watches) – enable auditing of access to a certain file or a directory.
  • System call rules – permits logging of system calls made by any program.

Ahora abre el archivo de configuración principal para editar:

# 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 (control de archivos y reglas de llamada 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

Puedes definir la vigilancia de archivos usando esta sintaxis:

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

Donde la opción:

  • w – is used to specify a file or directory to watch over.
  • p – permissions to be logged, r – for read access, w – for write access, x – for execute access and a – for change of file or director attribute.
  • -k – allows you to set an optional string for identifying which rule (or a set of rules) created a specific log entry.

Estas reglas permiten que la auditoría vea 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:

  • action – has two possible values: always or never.
  • filter – specifies kernel rule-matching filter (task, exit, user and exclude) is applied to the event.
  • system call – system call name.
  • field – specifies additional options such as architecture, PID, GID etc to modify rule.

Aquí hay algunas reglas que puedes 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 de auditoría usando 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 en el archivo de configuración.

Para enumerar todas las reglas de auditoría actualmente cargadas, pase el indicador -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 verificaremos la entrada de registro generada después de un evento que coincida con la regla.

Suponiendo que tenemos 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, utilizando otra cuenta del sistema, intente moverse al directorio anterior y ejecute el comando ls:

$ cd /backups/secret_files/
$ ls

La entrada de registro se verá así.

El evento anterior se compone de tres tipos de registros de auditoría. El primero es tipo = 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 tipo = CWD .

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

Y el último es type = 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 la Referencia del sistema de auditoría.

Eso es todo por ahora. En el siguiente artículo, veremos cómo usar Ausearch para consultar los archivos de registro de auditoría: explicaremos cómo buscar información específica de 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.