
Conjunto de reglas de Linux Auditd con mejores prácticas, con 14.956 reglas mapeadas a MITRE ATT&CK, rol de despliegue de Ansible y herramientas de lint/test para monitoreo de seguridad y auditoría de cumplimiento.
Este repositorio proporciona prácticas recomendadas completas para la configuración y el despliegue del demonio de auditoría de Linux (Auditd), incluido un amplio conjunto de reglas de auditoría centradas en la seguridad, un rol de Ansible para el despliegue automatizado y las herramientas que prueban las reglas en kernels reales.
Los cambios en el conjunto de reglas, el rol y las pruebas se enumeran en CHANGELOG.md.
Auditd es un potente sistema de auditoría de Linux que proporciona capacidades integrales de monitorización y registro del sistema. Está diseñado para rastrear eventos relevantes para la seguridad y es esencial para:
Nuestras reglas de auditoría completas (/ndaal/audit_best_practices.rules o /dataset/audit_best_practices.rules) están diseñadas para cumplir con diversos estándares de seguridad y prácticas recomendadas, incluidos:
| Archivo | Contenido |
|---|---|
dataset/audit_best_practices.rules | El conjunto de reglas principal: 14.956 reglas activas con 903 claves, escritas como pares arch=b32/arch=b64. Este es el archivo que descarga el rol de Ansible. |
dataset/audit_best_practices_high_volume.rules | Archivo complementario con la colección sin filtrar: cada execve de un usuario no perteneciente al sistema, kill/tkill/tgkill y connect saliente. Todas las reglas que contiene están comentadas, por lo que el archivo está desactivado de forma predeterminada. Su encabezado explica cómo habilitar un bloque a la vez. |
ndaal/ | Copias idénticas byte a byte de ambos archivos. |
*.rules.sha-256 | Archivos auxiliares SHA-256 en formato sha256sum. El rol de Ansible verifica cada descarga contra ellos. Después de editar un archivo de reglas, ejecute tools/update_rules_checksums.sh para regenerarlos. |
tools/key-decisions.tsv | Una decisión por cada par de colisión de claves, aplicada por tools/resolve_key_collisions.py. |
Una regla que una medición demostró incorrecta se comenta con una nota fechada que indica el motivo. No se elimina nada, por lo que el archivo conserva el historial de cada decisión.
Una clave que comienza con un ID de técnica sigue MITRE ATT&CK Enterprise 19.2. ATT&CK v19 revocó seis ID que el archivo utilizaba. El 27/09/2026 sus claves se renombraron a los sucesores que MITRE designa para ellas. Cambie todas las consultas y alertas del SIEM que utilicen una clave antigua:
| Clave antigua | Clave nueva |
|---|---|
T1562.001_Impair_Defenses_Disable_or_Modify_Tools | T1685_Disable_or_Modify_Tools |
T1562.004_Impair_Defenses_Disable_or_Modify_System_Firewall | T1686_Disable_or_Modify_System_Firewall |
T1070.002_Indicator_Removal_Clear_Linux_or_Mac_System_Logs | T1685.006_Disable_or_Modify_Tools_Clear_Linux_or_Mac_System_Logs |
T1107_File_Deletion | T1070.004_Indicator_Removal_File_Deletion |
T1169_Sudo | T1548.003_Abuse_Elevation_Control_Mechanism_Sudo_and_Sudo_Caching |
T1079_Multilayer_Encryption | T1573_Encrypted_Channel |
La vigilancia sobre /var/log/audit/ lleva T1685.004_Disable_or_Modify_Tools_Disable_or_Modify_Linux_Audit_System_Log, la sub-técnica de v19 para el propio registro de auditoría, en lugar de T1685.006. Las notas fechadas escritas antes del cambio de nombre, y las reglas comentadas que explican, conservan los nombres antiguos.
También el 27/09/2026, se corrigieron las claves que nombraban la técnica incorrecta. Cambie también las consultas y alertas del SIEM para estas reglas:
| Regla | Clave antigua | Clave nueva |
|---|---|---|
Escrituras y cambios de atributos en /etc/passwd (un par nuevo; las lecturas conservan T1087) | T1087_Account_Discovery | T1098_Account_Manipulation |
Escrituras y cambios de atributos en /etc/shadow | T1087_Account_Discovery | T1098_Account_Manipulation |
Una persona leyendo /etc/shadow | T1087_Account_Discovery | T1003.008_OS_Credential_Dumping_etc_passwd_and_etc_shadow |
/etc/ssh/sshd_config | T1021_Remote_Services | T1021.004_Remote_Services_SSH |
/root/.ssh/authorized_keys | T1021_Remote_Services | T1098.004_Account_Manipulation_SSH_Authorized_Keys |
/etc/systemd/system/ | T1053.006_Scheduled_Task_Systemd_Timers | T1543.002_Create_or_Modify_System_Process_Systemd_Service |
date | T1083_File_and_Directory_Discovery | T1124_System_Time_Discovery |
| Los intérpretes de Python (pip, pipx, conda y npm conservan T1072) | T1072_Software_Deployment_Tools | T1059.006_Command_and_Scripting_Interpreter_Python |
| mysql y psql ejecutados por una persona | T1213_002_database_access | T1213.006_Data_from_Information_Repositories_Databases |
Escrituras y cambios de atributos en /etc/group | T1087_Account_Discovery | T1098_Account_Manipulation |
Escrituras y cambios de atributos en /etc/gshadow (un par nuevo; las lecturas conservan T1087) | T1087_Account_Discovery | T1098_Account_Manipulation |
/usr/lib/systemd/system/ (/run/systemd/transient/ conserva T1053.006) | T1053.006_Scheduled_Task_Systemd_Timers | T1543.002_Create_or_Modify_System_Process_Systemd_Service |
/home/vagrant/.ssh/authorized_keys | T1021_Remote_Services | T1098.004_Account_Manipulation_SSH_Authorized_Keys |
Escrituras en /var/log/tomcat10/, 64 bits (una errata) | tomcattomcat | tomcat |
Escrituras en /etc/mandiant/, 32 bits (una errata) | mmandiant_config | mandiant_config |
unix_chkpwd, la comprobación de contraseña de sudo y de los bloqueos de pantalla, lee /etc/shadow con el ID de auditoría de la persona, por lo que cada comprobación de contraseña ahora llega como T1003.008. Filtre exe=/usr/sbin/unix_chkpwd en la regla del SIEM para el volcado de credenciales. Las otras 34 reglas con una clave en la grafía T1234_567 nunca etiquetaron un registro, porque una regla anterior coincide con los mismos eventos. Están comentadas con una nota que nombra esa regla.
Las llamadas de 32 bits de kexec_load, capset, perf_event_open y semtimedop_time64 ahora llevan KEXEC, capability_change_ebpf, perf_event_ebpf y T1559_Inter-Process_Communication en lugar de 32bit_abi. La vigilancia elasticsearch-data sobre todo el directorio de datos está desactivada en ambas ABI: su advertencia la hace opcional. En hosts de 64 bits, las claves elasticsearch-nodes y elasticsearch-data-deletion, que tomaba hasta entonces, vuelven a aparecer.
El kernel adjunta la clave de la regla cargada más temprano que coincide con un evento. Esto se cumple tanto para las reglas de llamadas al sistema como para las vigilancias de rutas (kernel/auditfilter.c, kernel/auditsc.c). Por lo tanto, una regla amplia colocada al principio toma la clave de todas las reglas específicas posteriores. Hasta el 20/09/2026, la regla execve procmon sin filtrar estaba en la línea 1.575, y 368 claves nunca aparecieron en un registro.