auditd es el demonio (daemon) del sistema de auditoría del kernel Linux que proporciona capacidades de registro y monitoreo de eventos del sistema en tiempo real. Forma parte del Linux Audit Framework, un conjunto de herramientas diseñadas para ayudar a los administradores de sistemas a crear un rastro de auditoría de prácticamente todas las acciones realizadas en el sistema.
Este sistema permite rastrear accesos a archivos, ejecución de comandos, cambios en configuraciones del sistema, intentos de autenticación, modificaciones de permisos, y muchos otros eventos críticos para la seguridad. auditd opera a nivel del kernel, lo que significa que puede capturar eventos que ocurren incluso antes de que las aplicaciones de espacio de usuario puedan intervenir.
auditd es fundamental para cumplir con estándares de seguridad como PCI DSS, HIPAA, SOX, y requisitos de certificación como Common Criteria.
auditd es ampliamente utilizado en:
El Linux Audit Framework está compuesto por varios componentes que trabajan en conjunto:
# En sistemas basados en Red Hat/CentOS/RHEL 7+
sudo yum install audit audit-libs
# En CentOS/RHEL 8+ y Fedora
sudo dnf install audit audit-libs
# En sistemas basados en Debian/Ubuntu
sudo apt-get install auditd audispd-plugins
# Verificar estado del kernel
sudo auditctl -s
# Iniciar y habilitar el servicio
sudo systemctl start auditd
sudo systemctl enable auditd
/etc/audit/auditd.conf - Configuración principal del demonio/etc/audit/audit.rules - Reglas de auditoría (deprecated en RHEL 8+)/etc/audit/rules.d/ - Directorio para reglas modulares (recomendado)/etc/audisp/ - Configuración del dispatcher/etc/audisp/plugins.d/ - Plugins del dispatcher# /etc/audit/auditd.conf optimizado
log_file = /var/log/audit/audit.log
log_format = ENRICHED
log_group = root
priority_boost = 4
flush = INCREMENTAL_ASYNC
freq = 50
num_logs = 10
max_log_file = 100
max_log_file_action = ROTATE
space_left = 75
space_left_action = EMAIL
action_mail_acct = root
admin_space_left = 50
admin_space_left_action = SUSPEND
disk_full_action = SUSPEND
disk_error_action = SUSPEND
tcp_listen_port = 60
tcp_max_per_addr = 1
use_libwrap = yes
tcp_client_ports = 1024-65535
enable_krb5 = no
krb5_principal = auditd
# Reglas para cumplimiento STIG
-w /etc/selinux/ -p wa -k MAC-policy
-w /usr/share/selinux/ -p wa -k MAC-policy
# Auditoría de módulos del kernel
-w /etc/modprobe.d/ -p wa -k modules
-w /etc/modules-load.d/ -p wa -k modules
# Configuración de red crítica
-w /etc/ipsec.d/ -p wa -k ipsec-config
-w /etc/libreswan/ -p wa -k ipsec-config
# Reglas específicas para PCI DSS
-w /var/log/audit/ -p wa -k audit-logs
-w /etc/audit/ -p wa -k audit-config
# Monitoreo de datos sensibles
-w /etc/pci/ -p wa -k pci-config
-w /var/log/pci/ -p wa -k pci-logs
# Reglas para protección de datos médicos
-w /var/log/hipaa/ -p wa -k hipaa-logs
-w /etc/hipaa/ -p wa -k hipaa-config
# Auditoría de acceso a registros médicos
-a always,exit -F arch=b64 -S openat -F path=/var/medical -k hipaa-access
# === REGLAS DE CONTROL ===
-D # Eliminar todas las reglas
-e 2 # Habilitar auditoría
# === IDENTIDAD Y AUTENTICACIÓN ===
-w /etc/passwd -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/gshadow -p wa -k identity
-w /etc/sudoers -p wa -k identity
-w /etc/sudoers.d/ -p wa -k identity
# === LOGS DE AUTENTICACIÓN ===
-w /var/log/lastlog -p wa -k logins
-w /var/log/faillog -p wa -k logins
-w /var/log/btmp -p wa -k logins
# === CONFIGURACIÓN DEL SISTEMA ===
-w /etc/hosts -p wa -k network
-w /etc/network/ -p wa -k network
-w /etc/netplan/ -p wa -k network
-w /etc/sysconfig/network -p wa -k network
# === SYSCALLS CRÍTICOS ===
-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time-change
-a always,exit -F arch=b64 -S clock_settime -k time-change
-a always,exit -F arch=b64 -S chmod -S fchmod -S fchmodat -k perm_mod
-a always,exit -F arch=b64 -S chown -S fchown -S fchownat -S lchown -k perm_mod
-a always,exit -F arch=b64 -S unlink -S unlinkat -S rename -S renameat -k delete
# === EJECUTABLES PRIVILEGIADOS ===
-w /bin/su -p x -k privileged
-w /usr/bin/sudo -p x -k privileged
-w /usr/bin/ssh -p x -k privileged
-w /usr/bin/scp -p x -k privileged
-w /usr/bin/sftp -p x -k privileged
# === ACCESO A ARCHIVOS SENSIBLES ===
-a always,exit -F arch=b64 -S openat -F path=/etc/passwd -k sensitive-files
-a always,exit -F arch=b64 -S openat -F path=/etc/shadow -k sensitive-files
# Ver estado del sistema
sudo auditctl -s
# Listar reglas activas
sudo auditctl -l
# Agregar regla temporal
sudo auditctl -w /etc/hosts -p wa -k network-config
# Eliminar regla temporal
sudo auditctl -W /etc/hosts
# Cargar reglas desde archivo
sudo auditctl -R /etc/audit/rules.d/custom.rules
# Verificar sintaxis de reglas
sudo auditctl -c /etc/audit/rules.d/audit.rules
Cada evento de auditoría contiene múltiples campos que proporcionan información detallada:
# Buscar por clave
sudo ausearch -k identity
# Buscar por tipo de evento
sudo ausearch -m USER_LOGIN
sudo ausearch -m SYSCALL
# Buscar por usuario
sudo ausearch -ui 1000
sudo ausearch -ua 1000
# Buscar por PID
sudo ausearch -p 1234
# Buscar por archivo
sudo ausearch -f /etc/passwd
# Buscar en un rango de tiempo
sudo ausearch -ts today -te now
sudo ausearch -ts yesterday -te today
# Búsqueda combinada
sudo ausearch -k identity -ui 1000 -ts today
# Reporte de autenticación
sudo aureport --auth
# Reporte de archivos
sudo aureport --file
# Reporte de usuarios
sudo aureport --user
# Reporte de comandos ejecutados
sudo aureport --executable
# Reporte de accesos denegados
sudo aureport --failed
# Reportes por fecha
sudo aureport --start 01/01/2024 --end 12/31/2024
# Reportes en tiempo real
sudo aureport --input-logs
# Monitoreo en tiempo real
sudo tail -f /var/log/audit/audit.log
# Usando aureport para análisis continuo
sudo watch -n 5 'aureport --failed --since 05:00:00'
# Análisis de patrones con awk
sudo ausearch -k privileged | aureport --file --summary
Las reglas de auditoría pueden impactar significativamente el rendimiento del sistema:
# Reglas optimizadas para rendimiento
-w /etc/ -p wa -k etc-modify
# En lugar de múltiples reglas específicas:
-w /etc/passwd -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/shadow -p wa -k identity
# Usar filtros para reducir eventos
-a always,exit -F arch=b64 -S openat -F path=/etc/passwd -k sensitive
# Configuración de buffer
sudo auditctl -b 8192 # Aumentar buffer del kernel
# Ver estadísticas del sistema de auditoría
sudo auditctl -s
# Monitorear uso de CPU por auditd
ps aux | grep auditd
# Ver logs del sistema relacionados con auditoría
sudo journalctl -u auditd
# Monitoreo de espacio en disco
sudo df -h /var/log/audit/
# Análisis de rendimiento con perf
sudo perf record -e audit:* -a sleep 10
# Problema: Reglas temporales se pierden
sudo auditctl -l > /tmp/rules_backup.txt
# Solución: Usar directorio rules.d/
sudo cp /tmp/rules_backup.txt /etc/audit/rules.d/persistent.rules
sudo systemctl restart auditd
# Verificar tamaño de logs
sudo du -sh /var/log/audit/
# Configurar rotación automática
sudo vim /etc/audit/auditd.conf
# max_log_file = 50
# max_log_file_action = ROTATE
# Limpiar logs antiguos
sudo find /var/log/audit/ -name "audit.log.*" -type f -delete
# Verificar si auditd está corriendo
sudo systemctl status auditd
# Verificar reglas activas
sudo auditctl -l
# Verificar permisos de archivos
sudo ls -la /var/log/audit/
# Revisar logs del sistema
sudo journalctl -u auditd -f
# Identificar reglas problemáticas
sudo auditctl -l | grep -i open
# Optimizar reglas
sudo auditctl -W /path/to/problematic/file
# Ver estadísticas
sudo auditctl -s
# Validar sintaxis de reglas
sudo auditctl -c /etc/audit/rules.d/audit.rules
# Ver logs de error
sudo tail -f /var/log/messages | grep audit
# Verificar configuración
sudo auditd -f /etc/audit/auditd.conf
# Análisis completo del sistema de auditoría
sudo aureport --summary
# Ver eventos por tipo
sudo ausearch -m all | aureport --event --summary
# Análisis de cobertura
sudo auditctl -l | wc -l
# Verificar integridad
sudo rpm -V audit
# Configurar OSSEC para monitorear auditd
# En /var/ossec/etc/ossec.conf
syslog
/var/log/audit/audit.log
# Reiniciar OSSEC
sudo systemctl restart wazuh-agent
# Configurar jail para auditd
# En /etc/fail2ban/jail.local
[auditd]
enabled = true
logpath = /var/log/audit/audit.log
banaction = iptables-multiport
findtime = 600
bantime = 3600
maxretry = 3
# Configurar envío remoto de logs
# En /etc/rsyslog.conf
*.* @@log-server.empresa.com:514;RSYSLOG_SyslogProtocol23Format
# Configurar audisp-syslog
# En /etc/audisp/plugins.d/syslog.conf
active = yes
direction = out
path = /sbin/audisp-syslog
type = always
format = string
#!/bin/bash
# Script de gestión de auditd
# Función para backup de logs
backup_audit_logs() {
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
tar -czf /backup/audit_logs_$TIMESTAMP.tar.gz /var/log/audit/
}
# Función para análisis de eventos críticos
analyze_critical_events() {
ausearch -k privileged -ts today | aureport --summary
}
# Función para limpieza de logs antiguos
cleanup_old_logs() {
find /var/log/audit/ -name "*.log" -mtime +30 -delete
}
# Menú principal
case "$1" in
backup) backup_audit_logs ;;
analyze) analyze_critical_events ;;
cleanup) cleanup_old_logs ;;
*) echo "Uso: $0 {backup|analyze|cleanup}" ;;
esac
# Buscar intentos de escalada de privilegios
sudo ausearch -k privileged -ts yesterday | aureport --user --summary
# Identificar accesos fuera de horario
sudo ausearch -ts 22:00 -te 06:00 -m USER_LOGIN
# Detectar modificaciones en archivos críticos
sudo ausearch -k identity -ts today
# Reconstruir timeline de eventos
sudo ausearch -ts "2024-01-01 00:00:00" -te "2024-01-01 23:59:59" | aureport --event
# Identificar procesos comprometidos
sudo ausearch -p 1234 -o /tmp/process_analysis.txt
# Buscar conexiones de red relacionadas
sudo ausearch -m SOCKADDR -ts today
# Generar reporte mensual de accesos
sudo aureport --auth --start 01/01/2024 --end 01/31/2024
# Análisis de accesos por usuario
sudo aureport --user --summary --start 01/01/2024
# Reporte de modificaciones de archivos
sudo aureport --file --summary --start 01/01/2024
# Auditar una aplicación específica
sudo auditctl -w /usr/bin/myapp -p x -k myapp-exec
sudo auditctl -a always,exit -F exe=/usr/bin/myapp -k myapp-activity
# Buscar actividad de la aplicación
sudo ausearch -k myapp-activity -ts today
La integración de auditd con un Sistema de Gestión de Eventos e Información de Seguridad (SIEM) es crucial para el análisis centralizado, correlación de eventos y respuesta automatizada a incidentes.
# Configurar audisp-syslog en /etc/audisp/plugins.d/syslog.conf
active = yes
direction = out
path = /sbin/audisp-syslog
type = always
format = string
# Configuración en /etc/rsyslog.conf
*.* @@siem-server.empresa.com:514
# Reiniciar servicios
sudo systemctl restart auditd rsyslog
Integración con Splunk:
# Configurar Splunk Universal Forwarder
# En /opt/splunkforwarder/etc/system/local/inputs.conf
[monitor:///var/log/audit/audit.log]
disabled = false
sourcetype = linux_audit
index = security
# Reiniciar Splunk Forwarder
sudo /opt/splunkforwarder/bin/splunk restart
Integración con Elastic Stack (ELK):
# Configurar Filebeat para auditd
# En /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/audit/audit.log
fields:
logtype: auditd
fields_under_root: true
output.elasticsearch:
hosts: ["elasticsearch.empresa.com:9200"]
index: "auditd-%{+yyyy.MM.dd}"
Un SIEM bien configurado puede reducir el tiempo de detección de amenazas de días a minutos, utilizando la riqueza de datos que proporciona auditd.
auditd puede identificar patrones sutiles de actividad maliciosa que caracterizan a las APT:
Los datos de auditd alimentan algoritmos de machine learning para establecer líneas base de comportamiento normal y detectar anomalías.
La implementación efectiva de auditd requiere planificación cuidadosa, especialmente en entornos de alta escala donde el volumen de eventos puede ser abrumador.
auditd representa una herramienta fundamental en el arsenal de ciberseguridad de cualquier organización que utilice sistemas Linux. Su capacidad para proporcionar visibilidad completa a nivel del kernel, combinada con su flexibilidad de configuración y facilidad de integración con sistemas SIEM, lo convierte en un componente esencial para:
La correcta implementación y gestión de auditd requiere un equilibrio entre seguridad, rendimiento y manejabilidad de datos. Los profesionales de ciberseguridad deben dominar no solo su configuración técnica, sino también su integración estratégica en el ecosistema de seguridad más amplio de la organización.