Hardening de VPS Linux: Auditoria com Auditd e UFW

10 min de leitura Segurança Linux
Hardening de VPS Linux: Auditoria com Auditd e UFW

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 como RAW para 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 por space_left. Recomenda-se SYSLOG ou EMAIL para alertas precoces.
  • admin_space_left_action: Ação crítica quando o espaço fica extremamente baixo. Defina como KILL para 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 adicionar r para leitura e x para 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.

  1. Desative a autenticação por senha: Configure o /etc/ssh/sshd_config para permitir apenas chaves SSH. Isso elimina a vulnerabilidade de força bruta básica, que seria registrada pelo auditd como tentativas falhas.
  2. Use chaves SSH fortes: Gere chaves Ed25519 ou RSA de 4096 bits.
  3. 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 auditd não é uma solução "set and forget". Monitore os logs regularmente.
  • Combine o uso do auditd com 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.

Compartilhar: Link copiado!
Esse tutorial foi útil?

Comentários (0)

Seja o primeiro a comentar.

Deixe seu comentário

Seu comentário será analisado antes de ser publicado.

0/2000