Em um ambiente de TI onde a segurança e a conformidade são primordiais, ter a capacidade de rastrear e registrar atividades críticas no sistema é fundamental. O Linux oferece uma ferramenta robusta para isso: o auditd (audit daemon). Este artigo irá guiá-lo através da configuração, uso e interpretação dos logs gerados pelo auditd, permitindo que você monitore quem fez o quê e quando em seu sistema.
Por que usar o `auditd`?
O auditd é o daemon de auditoria do sistema Linux. Ele é responsável por coletar informações de segurança do kernel e gravá-las em disco. Diferente de logs de auditoria genéricos, o auditd é altamente configurável e permite rastrear eventos específicos com base em uma ampla gama de critérios. Isso é essencial para:
- Detecção de Intrusão: Identificar atividades suspeitas ou não autorizadas.
- Conformidade Regulatória: Atender a requisitos de conformidade como PCI DSS, HIPAA, GDPR, etc.
- Análise Forense: Investigar incidentes de segurança após ocorrido.
- Monitoramento de Mudanças: Rastrear modificações em arquivos críticos do sistema ou configurações.
Instalação do `auditd`
Na maioria das distribuições Linux modernas, o auditd já vem pré-instalado. Caso contrário, você pode instalá-lo usando o gerenciador de pacotes da sua distribuição:
# Para sistemas baseados em Debian/Ubuntu
sudo apt update && sudo apt install auditd audispd-plugins
# Para sistemas baseados em RHEL/CentOS/Fedora
sudo yum install audit audit-libs
ou
sudo dnf install audit audit-libs
Após a instalação, o serviço geralmente é iniciado automaticamente. Você pode verificar o status com:
sudo systemctl status auditd
Se não estiver ativo, inicie-o e habilite-o para iniciar no boot:
sudo systemctl start auditd
sudo systemctl enable auditd
Configuração do `auditd`
A configuração principal do auditd reside no arquivo /etc/audit/auditd.conf. Este arquivo controla o comportamento do daemon, como o local dos logs, o tamanho máximo dos arquivos de log, a rotação de logs, etc. Embora muitas vezes as configurações padrão sejam suficientes, é importante conhecer algumas opções:
log_file: Especifica o caminho para o arquivo de log.max_log_file: Define o tamanho máximo do arquivo de log em MB.num_logs: Define o número de arquivos de log a serem mantidos.flush: Define a frequência com que os eventos são gravados no disco (INCREMENTALouDATA).
Regras de Auditoria
A parte mais poderosa do auditd são as suas regras de auditoria, que definem quais eventos devem ser monitorados. Estas regras são configuradas em /etc/audit/rules.d/. Cada arquivo .rules dentro deste diretório é carregado pelo daemon. As regras podem ser:
- Regras de Caminho (Path Rules): Monitoram acessos a arquivos e diretórios específicos.
- Regras de Fachada (Fmatched Rules): Monitoram chamadas de sistema (syscalls) com base em seus nomes ou números.
- Regras de Bloqueio (Loginuid Rules): Monitoram eventos de login e logout.
Vamos criar algumas regras úteis. Edite ou crie um novo arquivo em /etc/audit/rules.d/, por exemplo, /etc/audit/rules.d/custom.rules.
Para monitorar todas as tentativas de escrita no arquivo /etc/passwd:
-w /etc/passwd -p w -k passwd_changes
-w /etc/passwd: Especifica o caminho do arquivo a ser monitorado.-p w: Define o tipo de permissão a ser auditada (wpara escrita). Outras opções incluemr(leitura),x(execução) ea(auditoria/atribuição).-k passwd_changes: Um identificador chave (key) para facilitar a busca nos logs.
Para monitorar todas as tentativas de acesso (leitura, escrita, execução) a um diretório específico, como /etc/ssh/sshd_config:
-w /etc/ssh/sshd_config -p warx -k sshd_config_access
Exemplo de Regras de Fachada (Syscall)
Para monitorar todas as chamadas de sistema relacionadas à manipulação de usuários, como add_user, delete_user, etc. (isso pode variar um pouco entre as versões do kernel, mas um exemplo genérico seria):
-a always,exit -F arch=b64 -S adduser,deluser,usermod,userdel -k user_management
-a always,exit: Aplica a regra sempre que a chamada de sistema sair.-F arch=b64: Filtra para arquitetura de 64 bits. Pode serb32para 32 bits.-S adduser,deluser,...: Lista as chamadas de sistema a serem monitoradas.-k user_management: Identificador chave.
Atenção: Monitorar chamadas de sistema pode gerar um volume muito grande de logs. Use com cautela e apenas para eventos realmente críticos.
Carregando as RegrasApós salvar suas regras em um arquivo .rules, você precisa carregá-las. A maneira mais comum é reiniciar o serviço auditd:
sudo systemctl restart auditd
Alternativamente, você pode carregar as regras sem reiniciar o serviço:
sudo augenrules --load
Para verificar as regras atualmente ativas:
sudo auditctl -l
Interpretando os Logs do `auditd`
Os logs do auditd são geralmente armazenados em /var/log/audit/audit.log. Eles são formatados em um formato específico e podem ser difíceis de ler diretamente. A ferramenta principal para consultar esses logs é o ausearch.
Usando `ausearch`
O ausearch permite filtrar os logs por diversos critérios, como data, hora, tipo de evento, usuário, chave (key), etc.
Para buscar todos os eventos relacionados à chave passwd_changes:
sudo ausearch -k passwd_changes
Para buscar eventos de um usuário específico (por exemplo, UID 1000):
sudo ausearch -ui 1000
Para buscar eventos de login/logout:
sudo ausearch -m USER_LOGIN -m USER_LOGOUT
Para buscar eventos em um intervalo de tempo:
sudo ausearch -ts today -te now
Usando `aureport`
O aureport gera relatórios resumidos a partir dos logs de auditoria, o que pode ser muito útil para obter uma visão geral das atividades.
Para gerar um relatório de resumo de todos os eventos:
sudo aureport -s
Para gerar um relatório de eventos de login/logout:
sudo aureport -l
Para gerar um relatório de eventos de manipulação de arquivos:
sudo aureport -f
Boas Práticas e Cuidados
- Volume de Logs: O
auditdpode gerar um grande volume de logs. Monitore o espaço em disco e configure a rotação de logs adequadamente emauditd.conf. - Regras Específicas: Comece com regras específicas para os eventos mais críticos. Evite regras genéricas que possam sobrecarregar o sistema ou os logs.
- Performance: Regras de auditoria, especialmente as que monitoram chamadas de sistema, podem impactar a performance do sistema. Teste em um ambiente controlado antes de aplicar em produção.
- Segurança dos Logs: Garanta que os arquivos de log estejam protegidos contra modificação ou exclusão. O
auditdé projetado para ser seguro, mas a configuração do sistema de arquivos é importante. - Análise Regular: Não basta coletar os logs; é preciso analisá-los regularmente. Ferramentas de análise de log centralizadas podem ser úteis em ambientes maiores.
- Integração com Ferramentas de Monitoramento: Considere integrar a saída do
auditdcom sistemas de monitoramento e alerta, como o Diminua, para reações mais rápidas a eventos de segurança.
Conclusão
O auditd é uma ferramenta indispensável para administradores de sistemas Linux que buscam fortalecer a segurança e garantir a conformidade. Ao entender como configurar e interpretar seus logs, você ganha uma visibilidade sem precedentes sobre as atividades em seu sistema, permitindo a detecção precoce de ameaças e a investigação eficaz de incidentes. Comece com regras simples e expanda conforme a necessidade, sempre priorizando a segurança e a performance do seu ambiente.
Foto de Tima Miroshnichenko no Pexels.