
Conjunto de regras do Linux Auditd com as melhores práticas, com 14.956 regras mapeadas ao MITRE ATT&CK, role de implantação Ansible e ferramentas de lint/teste para monitoramento de segurança e auditoria de conformidade.
Este repositório fornece práticas recomendadas abrangentes para a configuração e implantação do Linux Audit Daemon (Auditd), incluindo um extenso conjunto de regras de auditoria focadas em segurança, uma role Ansible para implantação automatizada e as ferramentas que testam as regras em kernels reais.
As alterações no conjunto de regras, na role e nos testes estão listadas em CHANGELOG.md.
O Auditd é um poderoso sistema de auditoria do Linux que fornece capacidades abrangentes de monitoramento e registro do sistema. Ele foi projetado para rastrear eventos relevantes para a segurança e é essencial para:
Nossas regras de auditoria abrangentes (/ndaal/audit_best_practices.rules ou /dataset/audit_best_practices.rules) foram projetadas para atender a diversos padrões de segurança e melhores práticas, incluindo:
| Arquivo | Conteúdo |
|---|---|
dataset/audit_best_practices.rules | O conjunto de regras principal: 14.956 regras ativas com 903 chaves, escritas como pares arch=b32/arch=b64. Este é o arquivo que a role Ansible baixa. |
dataset/audit_best_practices_high_volume.rules | Arquivo complementar com a coleção não filtrada: todo execve de um usuário não-sistema, kill/tkill/tgkill e connect de saída. Todas as regras nele estão comentadas, portanto o arquivo fica desativado por padrão. Seu cabeçalho explica como habilitar um bloco por vez. |
ndaal/ | Cópias idênticas byte a byte de ambos os arquivos. |
*.rules.sha-256 | Arquivos sidecar SHA-256 no formato sha256sum. A role Ansible verifica cada download em relação a eles. Após editar um arquivo de regras, execute tools/update_rules_checksums.sh para regenerá-los. |
tools/key-decisions.tsv | Uma decisão por par de colisão de chaves, aplicada por tools/resolve_key_collisions.py. |
Uma regra que uma medição provou estar errada é comentada com uma nota datada que apresenta o motivo. Nada é excluído, portanto o arquivo mantém o histórico de cada decisão.
Uma chave que começa com um ID de técnica segue o MITRE ATT&CK Enterprise 19.2. O ATT&CK v19 revogou seis IDs que o arquivo utilizava. Em 2026-09-27, suas chaves foram renomeadas para os sucessores que a MITRE nomeia para elas. Altere toda consulta e alerta de SIEM que utilize uma chave antiga:
| Chave antiga | Chave nova |
|---|---|
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 |
A vigilância sobre /var/log/audit/ carrega T1685.004_Disable_or_Modify_Tools_Disable_or_Modify_Linux_Audit_System_Log, a sub-técnica v19 para o próprio log de auditoria, em vez de T1685.006. Notas datadas escritas antes da renomeação, e as regras comentadas que elas explicam, mantêm os nomes antigos.
Também em 2026-09-27, chaves que nomeavam a técnica errada foram corrigidas. Altere também as consultas e alertas de SIEM para estas regras:
| Regra | Chave antiga | Chave nova |
|---|---|---|
Gravações e alterações de atributos em /etc/passwd (um novo par; leituras mantêm T1087) | T1087_Account_Discovery | T1098_Account_Manipulation |
Gravações e alterações de atributos em /etc/shadow | T1087_Account_Discovery | T1098_Account_Manipulation |
Uma pessoa lendo /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 |
| Os interpretadores Python (pip, pipx, conda e npm mantêm T1072) | T1072_Software_Deployment_Tools | T1059.006_Command_and_Scripting_Interpreter_Python |
| mysql e psql executados por uma pessoa | T1213_002_database_access | T1213.006_Data_from_Information_Repositories_Databases |
Gravações e alterações de atributos em /etc/group | T1087_Account_Discovery | T1098_Account_Manipulation |
Gravações e alterações de atributos em /etc/gshadow (um novo par; leituras mantêm T1087) | T1087_Account_Discovery | T1098_Account_Manipulation |
/usr/lib/systemd/system/ (/run/systemd/transient/ mantém 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 |
Gravações em /var/log/tomcat10/, 64 bits (um erro de digitação) | tomcattomcat | tomcat |
Gravações em /etc/mandiant/, 32 bits (um erro de digitação) | mmandiant_config | mandiant_config |
unix_chkpwd, a verificação de senha do sudo e dos bloqueios de tela, lê /etc/shadow com o ID de auditoria da pessoa, portanto cada verificação de senha agora chega como T1003.008. Filtre exe=/usr/sbin/unix_chkpwd na regra de SIEM para despejo de credenciais. As outras 34 regras com uma chave na grafia T1234_567 nunca rotularam um registro, porque uma regra anterior corresponde aos mesmos eventos. Elas estão comentadas com uma nota que nomeia essa regra.
Chamadas de 32 bits de kexec_load, capset, perf_event_open e semtimedop_time64 agora carregam KEXEC, capability_change_ebpf, perf_event_ebpf e T1559_Inter-Process_Communication em vez de 32bit_abi. A vigilância elasticsearch-data sobre todo o diretório de dados está desativada em ambas as ABIs: seu aviso a torna opt-in. Em hosts de 64 bits, as chaves elasticsearch-nodes e elasticsearch-data-deletion, que ela assumia até então, aparecem novamente.
O kernel anexa a chave da regra carregada mais cedo que corresponde a um evento. Isso vale tanto para regras de syscall quanto para vigilâncias de caminho (kernel/auditfilter.c, kernel/auditsc.c). Uma regra ampla colocada no início, portanto, toma a chave de toda regra específica posterior a ela. Até 2026-09-20, a regra execve procmon não filtrada estava na linha 1.575, e 368 chaves nunca apareceram em um registro.
As regras catch-all agora fecham o arquivo, nesta ordem: