Saltar a contenido

Auditoría de eventos del sistema: Monitorización y análisis de seguridad

En este artículo

Garantizar la seguridad y la estabilidad de un sistema Linux requiere más que solo prevenir amenazas; es esencial detectar e investigar incidentes. La auditoría del sistema no bloquea los ataques, pero permite registrar la violación, identificar su origen y alcance, y recopilar pruebas para su análisis.

La herramienta de auditoría clave en la mayoría de las distribuciones es el demonio auditd. Rastrea las llamadas al kernel (llamadas al sistema), registra las acciones de usuarios y procesos, y almacena los eventos en registros estructurados.

Cómo funciona auditd

El sistema de auditoría se adjunta al kernel mediante disparadores que se activan al entrar en una llamada al sistema (entry) o al salir de ella (exit). Las reglas determinan qué llamadas, archivos, usuarios o procesos se monitorizan. Todos los eventos capturados se escriben en /var/log/audit/audit.log.

Con auditd puede rastrear:

  • Inicio/parada del sistema y de servicios
  • Operaciones en archivos críticos como /etc/passwd, /etc/shadow, configuraciones de SSH, etc.
  • Cambios en los permisos de archivos, la propiedad o los atributos
  • Creación/eliminación de archivos, directorios y enlaces
  • Montaje de sistemas de archivos
  • Conexiones de red y cambios de configuración
  • Acciones de usuarios o procesos específicos

Instalación y componentes

En CentOS/RHEL, el paquete audit está instalado de forma predeterminada. En Debian/Ubuntu, instálelo con:

sudo apt-get install auditd

Utilidades clave:

Utilidad Propósito
auditctl Gestionar reglas y estado de auditoría (configuración dinámica)
ausearch Buscar en registros por diversos criterios (usuario, archivo, syscall, etc.)
aureport Generar informes resumidos (por archivo, usuario, hora, etc.)
autrace Rastrear llamadas al sistema de un proceso (similar a strace, pero integrado con audit)

La configuración del demonio se encuentra en /etc/audit/auditd.conf (buffers, comportamiento de desbordamiento, rotación de registros, etc.). La configuración predeterminada suele ser adecuada para la mayoría de los escenarios.

Configuración de reglas de auditoría

Las reglas se pueden establecer de forma dinámica mediante auditctl o de forma estática en /etc/audit/audit.rules.

Sintaxis básica:

sudo auditctl -a <lista>,<acción> -S <syscall> -F <filtro>
  • Listas de eventos: task — creación de procesos entry / exit — entrada/salida de syscall (lo más común) user — eventos en espacio de usuario exclude — exclusiones

  • Acciones: always — registrar el evento never — ignorar

  • Ejemplos:

# Rastrear aperturas de archivos en /etc con cambios de escritura o atributos
sudo auditctl -a task,always -S open -F dir=/etc -F auid>=1000 -F perm=wa


# Lo mismo, pero más simple y efectivo para archivos/directorios
sudo auditctl -a task,always -S open -F dir=/etc -F perm=wa


# Archivo específico
sudo auditctl -a task,always -F path=/etc/passwd -F perm=wa

Nota

El filtro -p wa significa cambios de escritura y atributo.

Reglas persistentes — en /etc/audit/audit.rules

El formato coincide con los comandos de auditctl, pero sin el comando en sí:

# Ejemplos de entradas (una por línea)
-a task,always -S open -F dir=/etc -F perm=wa
-a task,always -S open -F path=/etc/passwd -F perm=wa

Después de editar el archivo, aplique los cambios:

sudo systemctl restart auditd

Análisis de registros

Los registros se almacenan en /var/log/audit/. Las herramientas clave son aureport y ausearch.

aureport — Resúmenes e informes

# Informe sobre accesos a archivos
sudo aureport -f


# Solo los últimos 10 minutos (nombres legibles por humanos)
sudo aureport -f -i --start recent


# Resumen por archivo (cuántas veces se accedió a cada uno)
sudo aureport -f --summary


# Informe para un período específico
sudo aureport --start 08/20/2025 12:00 --end 08/20/2025 13:00 -f


# Marcadores de tiempo convenientes: today, yesterday, this-week, recent, now
sudo aureport -f --start today --summary
Ejemplo de búsqueda de accesos sospechosos:
sudo aureport -f -i --start today | grep /etc/passwd

ausearch — Análisis detallado de eventos

# Por ID de evento (de aureport)
sudo ausearch -a 123456


# Por usuario (UID)
sudo ausearch -ui 1001 -i


# Por ejecutable
sudo ausearch -x /usr/bin/sudo -i


# Por llamada al sistema
sudo ausearch -sc openat -i


# Por servicio (por ejemplo, cron)
sudo ausearch -tm cron -i


# Con un límite de tiempo
sudo ausearch --start 08/20/2025 12:00 --end 08/20/2025 13:00 -f /etc/passwd

Nota

La bandera -i (o --interpret) reemplaza los UID/GID y los códigos de syscall con nombres legibles por humanos.

question_mark
Is there anything I can help you with?
question_mark
AI Assistant ×