O Que é o `auditd` e Por Que Você Precisa Dele?
Em ambientes Linux, a segurança e a conformidade são pilares fundamentais. Saber quem fez o quê, quando e onde, é crucial para a detecção de incidentes, investigações forenses e para atender a requisitos regulatórios. O auditd (Audit Daemon) é o framework de auditoria do Linux, uma ferramenta poderosa que permite registrar eventos do sistema de forma detalhada e configurável. Ele vai além dos logs de aplicação tradicionais, capturando informações sobre chamadas de sistema, acesso a arquivos, alterações de configuração e muito mais.
Este artigo é um guia prático para você, profissional de TI, que busca fortalecer a segurança e a capacidade de auditoria dos seus sistemas Linux. Vamos explorar a instalação, configuração básica e como extrair informações valiosas do auditd.
Instalando o `auditd`
Na maioria das distribuições Linux modernas, o auditd já vem pré-instalado ou está facilmente disponível nos repositórios oficiais. Para instalar, utilize o gerenciador de pacotes da sua distribuição:
- Debian/Ubuntu:
sudo apt update && sudo apt install auditd audispd-plugins - CentOS/RHEL/Fedora:
sudo dnf install audit(ouyumem versões mais antigas)
Após a instalação, o serviço do auditd geralmente é iniciado automaticamente. Você pode verificar seu status com:
sudo systemctl status auditdSe não estiver ativo, inicie-o com sudo systemctl start auditd e habilite-o para iniciar na inicialização do sistema com sudo systemctl enable auditd.
Configuração Básica do `auditd`
O arquivo de configuração principal do auditd é /etc/audit/auditd.conf. Ele controla o comportamento geral do daemon, como onde armazenar os logs, rotação de arquivos e políticas de notificação. No entanto, a definição das regras de auditoria, que determinam quais eventos serão registrados, é feita principalmente nos arquivos dentro do diretório /etc/audit/rules.d/.
As regras são escritas em um formato específico. Vamos configurar algumas regras comuns para começar:
Monitorando Acesso a Arquivos Críticos
É essencial saber quando arquivos de configuração importantes são acessados ou modificados. Por exemplo, para monitorar o acesso ao arquivo /etc/passwd:
- Crie um novo arquivo de regras, por exemplo,
/etc/audit/rules.d/file_access.rules. - Adicione a seguinte linha:
-w /etc/passwd -p rwa -k passwd_changes-w /etc/passwd: Especifica o caminho do arquivo a ser monitorado.-p rwa: Define as permissões a serem auditadas (rpara leitura,wpara escrita,apara atribuição de atributos).-k passwd_changes: Define uma chave (keyword) para facilitar a busca posterior pelos logs.
Para aplicar as novas regras, recarregue a configuração do auditd:
sudo augenrules --loadEste comando lerá todos os arquivos em /etc/audit/rules.d/ e aplicará as regras ao daemon.
Monitorando Chamadas de Sistema
Você pode auditar chamadas de sistema específicas. Por exemplo, para registrar quando um processo tenta modificar os limites de recursos do sistema (setrlimit):
- Adicione a seguinte linha ao seu arquivo de regras (ou crie um novo):
-a always,exit -F arch=b64 -S setrlimit -k resource_limit_changes-a always,exit: Aplica a regra sempre que a chamada de sistema sair.-F arch=b64: Filtra para arquitetura de 64 bits (ajuste parab32se necessário).-S setrlimit: Especifica a chamada de sistema a ser auditada.-k resource_limit_changes: Chave de identificação.
Lembre-se de executar sudo augenrules --load após adicionar a regra.
Analisando os Logs do `auditd`
Os logs do auditd são armazenados por padrão em /var/log/audit/audit.log. A ferramenta principal para consultar esses logs é o ausearch.
Pesquisando por Eventos Específicos
Usando a chave que definimos anteriormente para alterações em /etc/passwd:
sudo ausearch -k passwd_changesIsso listará todos os eventos que foram marcados com a chave passwd_changes.
Para buscar por uma chamada de sistema específica:
sudo ausearch -sc setrlimitVocê também pode filtrar por data e hora, tipo de evento, usuário, etc. Por exemplo, para ver eventos de um usuário específico:
sudo ausearch -ui 1000(Onde 1000 é o UID do usuário).
Interpretação dos Logs
Cada linha de log do auditd é rica em informações. Você verá detalhes como:
type=...: O tipo de evento (SYSCALL,AVC,USER_AUTH, etc.).msg=...: Mensagem detalhada do evento.arch=...: Arquitetura do sistema.syscall=...: Número da chamada de sistema.comm=...: O comando que executou a ação.exe=...: O caminho para o executável.key=...: A chave definida nas regras.uid=...,gid=...: User ID e Group ID.auid=...: Audit User ID (o usuário original que iniciou a sessão).pid=...: Process ID.ppid=...: Parent Process ID.path=...: Caminho do arquivo acessado.success=...: Se a chamada de sistema foi bem-sucedida ou não.
Para uma análise mais detalhada e legível, você pode usar o aureport, que gera relatórios sumarizados dos logs.
sudo aureport --summaryOu um relatório de eventos de login:
sudo aureport -l --start todayBoas Práticas e Cuidados
Performance
O auditd pode gerar uma quantidade significativa de logs, o que pode impactar o desempenho do sistema, especialmente em servidores com alta carga de I/O. Seja criterioso ao definir suas regras. Comece com o essencial e adicione mais regras conforme necessário. Evite auditar acesso a diretórios com muitos arquivos ou chamadas de sistema muito frequentes sem um propósito claro.
Rotação de Logs
Configure a rotação de logs do auditd para evitar que o arquivo de log cresça indefinidamente e consuma todo o espaço em disco. Isso geralmente é gerenciado pelo logrotate, com configurações em /etc/logrotate.d/auditd.
Segurança das Regras
As regras de auditoria são críticas para a segurança. Certifique-se de que o arquivo de regras e o diretório /etc/audit/rules.d/ tenham permissões restritas (geralmente 0644 para os arquivos de regras e 0755 para o diretório, com o proprietário sendo root). Um atacante poderia desabilitar a auditoria se tivesse acesso para modificar essas regras.
Integração com SIEM
Para ambientes maiores, é altamente recomendável integrar os logs do auditd a um sistema SIEM (Security Information and Event Management). Ferramentas como o Logstash, Fluentd ou o próprio agente do SIEM podem coletar, processar e enviar os logs do auditd para um servidor centralizado, permitindo correlação de eventos e alertas em tempo real.
Casos de Uso Avançados
O auditd é extremamente versátil. Alguns cenários avançados incluem:
- Detecção de Malware: Monitorar a criação de arquivos executáveis em diretórios suspeitos ou o acesso a arquivos de configuração de serviços.
- Análise Forense: Rastrear a origem de modificações não autorizadas em arquivos de sistema ou configurações.
- Conformidade (PCI DSS, HIPAA, etc.): Implementar regras específicas para atender aos requisitos de auditoria de normas regulatórias.
- Monitoramento de Acesso a Dados Sensíveis: Auditar o acesso a bancos de dados, arquivos de configuração de aplicações críticas ou dados pessoais.
Conclusão
O auditd é uma ferramenta indispensável para qualquer profissional de TI que lida com sistemas Linux e se preocupa com segurança e conformidade. Ao configurar e analisar corretamente seus logs, você ganha visibilidade sem precedentes sobre o que acontece no seu sistema, permitindo uma resposta mais rápida e eficaz a incidentes de segurança e garantindo que suas operações estejam em conformidade com as políticas e regulamentações aplicáveis. Comece com regras simples e expanda gradualmente seu conhecimento e suas configurações para construir um ambiente Linux mais seguro e auditável.