Auditoria de Segurança em VPS Linux: Guia Prático para Configuração do Auditd
A segurança de uma infraestrutura moderna vai muito além da simples configuração de um firewall. Embora ferramentas como UFW (Uncomplicated Firewall) e Fail2ban sejam essenciais para bloquear acessos não autorizados e mitigar ataques de força bruta, elas operam na periferia do sistema. Elas impedem que o invasor entre, mas não contam exatamente o que ele fez assim que conseguiu acesso ou quais tentativas foram frustradas. Para uma postura de segurança robusta, conhecida como hardening linux, é imperativo implementar um sistema de auditoria profunda no nível do kernel.
O auditd (Linux Audit Daemon) é o utilitário padrão para monitorar e registrar eventos do kernel. Ele fornece a capacidade de auditar quem acessou quais arquivos, quando comandos críticos foram executados e como as políticas de segurança foram alteradas. Neste tutorial técnico, você aprenderá a instalar, configurar e gerenciar o auditd em sua VPS segura, transformando seu servidor em um ambiente com visibilidade total para fins de conformidade e mitigação de incidentes.
1. Instalação do Daemon de Auditoria
A primeira etapa é garantir que o pacote necessário esteja disponível no seu repositório local. A maioria das distribuições Linux modernas, como Ubuntu, Debian e CentOS/RHEL, inclui o auditd em seus repositórios padrão.
No Ubuntu ou Debian, utilize o gerenciador de pacotes apt:
sudo apt update
sudo apt install auditd audispd-plugins
No CentOS, RHEL ou Fedora, utilize o yum ou dnf:
sudo yum install audit audit-libs
Após a instalação, é crucial habilitar o serviço para que ele inicie automaticamente durante o boot do sistema. Isso garante que a auditoria esteja ativa mesmo após reinicializações não planejadas.
sudo systemctl enable auditd
sudo systemctl start auditd
Verifique o status do serviço para confirmar que está rodando corretamente:
sudo systemctl status auditd
2. Configuração Inicial e Persistência
O arquivo de configuração principal do auditd é localizado em /etc/audit/auditd.conf. Este arquivo controla parâmetros gerais, como o tamanho dos arquivos de log, a ação tomada quando o disco estiver cheio e a frequência de sincronização com o disco.
Abra o arquivo com seu editor de texto favorito (por exemplo, nano ou vim):
sudo nano /etc/audit/auditd.conf
Dentro deste arquivo, preste atenção aos seguintes parâmetros críticos:
log_format: Defina comoRAWpara obter informações detalhadas sem pré-processamento.max_log_file: Define o tamanho máximo de cada arquivo de log em MB. Um valor entre 64 e 128 é recomendado para equilibrar retenção e uso de disco.space_left_action: Ação a tomar quando o espaço em disco restante atingir o limite definido porspace_left. Recomenda-seSYSLOGouEMAILpara alertas precoces.admin_space_left_action: Ação crítica quando o espaço fica extremamente baixo. Defina comoKILLpara parar processos que tentam escrever logs, evitando a corrupção do sistema.
Após ajustar as configurações, é fundamental garantir que a configuração seja aplicada imediatamente sem precisar reiniciar o serviço completamente, ou melhor, recarregar a configuração:
sudo service auditd restart
3. Definindo Regras de Auditoria (Audit Rules)
A verdadeira força do auditd reside nas regras definidas em /etc/audit/rules.d/. Os arquivos neste diretório são carregados sequencialmente. A convenção comum é usar o arquivo 99-finalize.rules ou criar um arquivo específico como 01-basic-audit.rules.
Criamos regras baseadas em três pilares: acesso a arquivos sensíveis, mudanças na configuração do audit e execução de comandos privilegiados.
3.1. Monitoramento de Arquivos Sensíveis
Você deve auditar qualquer alteração nos arquivos que controlam a autenticação e as permissões do sistema. Adicione as seguintes linhas ao seu arquivo de regras:
# Auditoria de arquivos de senha e grupo
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/gshadow -p wa -k identity
# Auditoria de configurações de login
-w /etc/login.defs -p wa -k login_changes
-w /etc/securetty -p wa -k login_changes
-w /etc/sudoers -p wa -k sudoers_changes
-w /etc/sudoers.d/ -p wa -k sudoers_changes
Nesta sintaxe:
-w: Define o caminho (watch) do arquivo ou diretório.-p wa: Especifica as permissões a auditar.wé escrita,aé acesso de atributo. Você pode adicionarrpara leitura expara execução.-k: Atribui uma chave (key) ao evento. Isso permite filtrar logs futuros facilmente usando a chave identificada (ex:identity).
3.2. Monitoramento de Mudanças no Próprio Auditd
Um invasor sofisticado tentará desativar ou modificar o sistema de auditoria para cobrir seus rastros. Você deve monitorar qualquer tentativa de alterar as regras do audit ou o daemon em si.
# Monitorar alterações nas regras de auditoria
-a always,exit -F arch=b64 -S open -F dir=/etc/audit -F perm=w -k audit_config
-a always,exit -F arch=b32 -S open -F dir=/etc/audit -F perm=w -k audit_config
# Monitorar mudanças na configuração do daemon
-w /etc/audit/auditd.conf -p wa -k audit_daemon_config
-w /etc/audit/rules.d/ -p wa -k audit_config
3.3. Monitoramento de Comandos Privilegiados (Syscalls)
Além de arquivos, você pode monitorar chamadas de sistema específicas. Por exemplo, qualquer tentativa de alterar a data ou hora do sistema pode indicar manipulação de logs por um atacante.
# Monitorar alterações no tempo
-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_changes
-a always,exit -F arch=b32 -S adjtimex -S settimeofday -S stime -k time_changes
Outro exemplo crítico é o monitoramento do comando sudo. Embora o sudoers já logue no syslog, o auditd captura os detalhes de nível inferior.
# Auditar chamadas de sistema relacionadas ao sudo
-a always,exit -F arch=b64 -S execve -F euid=0 -k privilege_escalation
Após adicionar suas regras, carregue-as para a memória do kernel:
sudo augenrules --load
Para verificar se as regras estão ativas, use o comando auditctl:
sudo auditctl -l
4. Monitoramento de Invasão e Análise de Logs
Com o sistema rodando, os logs são gerados em /var/log/audit/audit.log. No entanto, ler este arquivo bruto com um editor de texto é ineficiente. Utilize a ferramenta aureport para gerar relatórios estruturados.
4.1. Relatórios de Eventos Críticos
Para ver um resumo de todos os eventos de falha (ex: tentativas de login falhas ou acesso negado), use:
aureport --failed
Para ver apenas eventos relacionados à chave identity (alterações em arquivos de senha):
aureport -k identity
Para gerar um relatório de auditoria completo com datas e horários:
aureport --start today
4.2. Integração com Fail2ban para Mitigação DDoS e Ataques Brutos
O auditd não bloqueia ataques; ele registra. Para criar uma defesa ativa, integre o auditd ao Fail2ban. O Fail2ban pode monitorar logs de auditoria específicos para detectar padrões de ataque.
No entanto, é mais comum e eficiente usar o Fail2ban para monitorar logs de SSH (/var/log/auth.log) ou Apache/Nginx. O auditd entra em cena quando você precisa investigar a profundidade do incidente após o bloqueio pelo Fail2ban ou UFW.
Se você estiver implementando uma estratégia avançada de mitigação DDoS, lembre-se que o auditd consome I/O de disco. Em ataques volumosos, a geração excessiva de logs pode saturar o disco, impedindo novas escritas. Por isso, configure limites claros no auditd.conf e monitore o uso do disco.
5. Boas Práticas de Hardening Linux com SSH Keys
A auditoria é mais eficaz quando combinada com outras práticas de segurança. Uma das primeiras camadas a ser endurecida é o acesso SSH.
- Desative a autenticação por senha: Configure o
/etc/ssh/sshd_configpara permitir apenas chaves SSH. Isso elimina a vulnerabilidade de força bruta básica, que seria registrada pelo auditd como tentativas falhas. - Use chaves SSH fortes: Gere chaves Ed25519 ou RSA de 4096 bits.
- Mude a porta padrão: Embora não seja uma segurança por si só (security through obscurity), ajuda a reduzir o ruído nos logs e ataques automatizados simples.
Exemplo de configuração segura no sshd_config:
PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin prohibit-password
Após alterar o SSH, reinicie o serviço:
sudo systemctl restart sshd
6. Manutenção e Rotação de Logs
O arquivo /var/log/audit/audit.log pode crescer rapidamente. É essencial configurar a rotação de logs para evitar o preenchimento do disco, o que poderia travar seu servidor.
O utilitário logrotate geralmente cuida disso automaticamente em instalações padrão. Verifique se existe um arquivo de configuração em /etc/logrotate.d/audit.
Se necessário, ajuste manualmente para garantir que os logs antigos sejam compactados e removidos após um período seguro (ex: 30 dias):
/var/log/audit/audit.log {
weekly
rotate 52
compress
delaycompress
missingok
notifempty
create 0640 root root
}
Teste a configuração do logrotate para garantir que não há erros:
sudo logrotate -d /etc/logrotate.d/audit
7. Conclusão e Próximos Passos
A implementação do auditd é um passo fundamental para qualquer profissional de TI que leve a segurança de sua VPS segura a sério. Ele fornece a visibilidade necessária para detectar atividades maliciosas, garantir conformidade com normas como PCI-DSS ou LGPD e investigar incidentes de segurança com precisão forense.
Lembre-se:
- O
auditdnão é uma solução "set and forget". Monitore os logs regularmente. - Combine o uso do
auditdcom ferramentas de firewall como UFW e sistemas de detecção de intrusão como Fail2ban. - Mantenha suas regras de auditoria minimalistas. Regras excessivas podem impactar severamente o desempenho do sistema, especialmente em I/O intensivo.
Agora que seu sistema está auditando, considere automatizar a análise desses logs com ferramentas como o aureport scripts personalizados ou integradores SIEM (Security Information and Event Management) para obter alertas em tempo real. A segurança é um processo contínuo de hardening linux e adaptação às novas ameaças.