auditd: auditoria de eventos do sistema Linux
auditd é o subsistema de auditoria do kernel Linux — registra chamadas de sistema, acesso a arquivos, uso de sudo, mudanças de autenticação e execução de binários privilegiados. Em um ambiente de produção, é a diferença entre "algo aconteceu" e "aqui está exatamente o que, quando, quem e como".
Instalação e configuração inicial
Instalar auditd e configurar parâmetros básicos:
bash
# Instalar auditd:
sudo apt update && sudo apt install auditd audispd-plugins
# Iniciar e habilitar:
sudo systemctl enable auditd
sudo systemctl start auditd
# Verificar status:
sudo auditctl -s
# Saída: enabled=1 significa que auditoria está ativa
# Configuração principal: /etc/audit/auditd.conf
# Parâmetros importantes:
sudo tee /etc/audit/auditd.conf << 'EOF'
log_file = /var/log/audit/audit.log
log_format = ENRICHED # incluir nomes de usuário (não apenas UIDs)
log_group = adm
priority_boost = 4
flush = INCREMENTAL_ASYNC
freq = 50
max_log_file = 50 # MB por arquivo de log
num_logs = 10 # manter 10 arquivos rotacionados
max_log_file_action = ROTATE
space_left = 500 # MB livres antes de alertar
space_left_action = SYSLOG
admin_space_left = 100
admin_space_left_action = SUSPEND # parar auditoria se disco cheio
disk_full_action = SUSPEND
disk_error_action = SUSPEND
EOF
sudo systemctl restart auditdRegras de auditoria com auditctl
Definir o que monitorar: arquivos, syscalls e comandos:
bash
# Adicionar regras temporárias (perdidas no reboot):
# Para persistir: adicionar em /etc/audit/rules.d/audit.rules
# Monitorar acesso a arquivos sensíveis:
sudo auditctl -w /etc/passwd -p rwxa -k identity
sudo auditctl -w /etc/shadow -p rwxa -k identity
sudo auditctl -w /etc/sudoers -p rwxa -k sudo-config
sudo auditctl -w /etc/ssh/sshd_config -p rwxa -k ssh-config
# Monitorar diretório inteiro:
sudo auditctl -w /etc/cron.d -p rwa -k cron-config
sudo auditctl -w /root -p rwxa -k root-access
# Monitorar execução de comandos críticos:
sudo auditctl -a always,exit -F arch=b64 -S execve -F path=/usr/bin/passwd -k passwd-use
# Monitorar escalonamento de privilégios:
sudo auditctl -a always,exit -F arch=b64 -S setuid -k priv-escalation
# Criar arquivo de regras persistentes:
sudo tee /etc/audit/rules.d/hardening.rules << 'EOF'
# Remover todas as regras ao carregar:
-D
# Aumentar buffer para evitar perda de eventos:
-b 8192
# Identidade e autenticação:
-w /etc/passwd -p rwxa -k identity
-w /etc/shadow -p rwxa -k identity
-w /etc/group -p rwxa -k identity
-w /etc/sudoers -p rwa -k sudo-config
-w /etc/sudoers.d -p rwa -k sudo-config
# SSH:
-w /etc/ssh/sshd_config -p rwxa -k ssh-config
-w /root/.ssh -p rwxa -k root-ssh
# Sudo e comandos privilegiados:
-a always,exit -F arch=b64 -S execve -F euid=0 -k root-commands
# Imutabilizar regras (impede alteração em runtime até reboot):
-e 2
EOF
sudo augenrules --loadConsultar e interpretar logs
Usar ausearch e aureport para extrair informações:
bash
# ausearch: buscar eventos por critério:
# Todos os eventos de uma chave de auditoria:
sudo ausearch -k identity --interpret | head -50
# Eventos de sudo nas últimas 24h:
sudo ausearch -k sudo-config -ts today --interpret
# Eventos de login (falhas):
sudo ausearch -m USER_AUTH -sv no --interpret | head -30
# Buscar por usuário:
sudo ausearch -ua root --interpret -ts recent
# Buscar por arquivo específico:
sudo ausearch -f /etc/passwd --interpret
# aureport: relatórios resumidos:
# Relatório de autenticações:
sudo aureport -au --summary
# Relatório de eventos de falha:
sudo aureport --failed --summary
# Relatório de execuções de comandos:
sudo aureport -x --summary | head -20
# Relatório de logins:
sudo aureport -l --summary
# Relatório completo do dia:
sudo aureport -ts todayDetectar eventos suspeitos
Queries para identificar atividade maliciosa:
bash
# Detectar criação de arquivos SUID (possível escalonamento de privilégio):
sudo ausearch -m SYSCALL -sv yes --interpret | grep -E "SUID|chmod.*4[0-9]{3}" | head -20
# Detectar execução como root por usuário normal (sudo abuse):
sudo ausearch -m USER_CMD --interpret | grep "res=success" | head -30
# Detectar mudanças em authorized_keys (backdoor SSH):
sudo ausearch -f authorized_keys --interpret
# Detectar adição de usuário ao sistema:
sudo ausearch -k identity --interpret | grep "useradd|adduser"
# Detectar acesso a /etc/shadow (tentativa de dump de hashes):
sudo ausearch -k identity -f /etc/shadow --interpret
# Script de alerta para eventos críticos (rodar via cron):
cat << 'SCRIPT' > /usr/local/bin/audit-check.sh
#!/bin/bash
EVENTOS=$(ausearch -ts "$(date -d '1 hour ago' '+%m/%d/%Y %H:%M:%S')" -k identity -k sudo-config -k ssh-config -sv yes --interpret 2>/dev/null | wc -l)
if [ "$EVENTOS" -gt 0 ]; then
echo "⚠️ $EVENTOS eventos de auditoria críticos na última hora" | mail -s "Auditoria Linux: alerta" admin@seudominio.com.br
fi
SCRIPT
chmod +x /usr/local/bin/audit-check.sh
echo "0 * * * * root /usr/local/bin/audit-check.sh" >> /etc/cron.d/audit-checkEnviar logs para sistema centralizado
Exportar logs do auditd para Loki, Elasticsearch ou syslog remoto:
bash
# Opção 1: audispd → syslog → Loki (via Promtail):
# /etc/audit/plugins.d/syslog.conf:
sudo sed -i 's/active = no/active = yes/' /etc/audit/plugins.d/syslog.conf
sudo systemctl restart auditd
# Opção 2: audispd → audisp-remote (envio direto para servidor de logs):
# /etc/audisp/plugins.d/au-remote.conf:
sudo tee /etc/audisp/plugins.d/au-remote.conf << 'EOF'
active = yes
direction = out
path = /sbin/audisp-remote
type = always
format = string
EOF
# /etc/audisp/audisp-remote.conf:
sudo tee /etc/audisp/audisp-remote.conf << 'EOF'
remote_server = 10.0.0.5 # servidor de logs centralizado
port = 60
EOF
# Opção 3: Vector (moderno, com transformações):
# /etc/vector/vector.toml:
# [sources.auditd]
# type = "file"
# include = ["/var/log/audit/audit.log"]
# [sinks.loki]
# type = "loki"
# endpoint = "http://loki:3100"
# labels = { host = "{{ host }}", job = "auditd" }$ runstack deploy --plan starter
Não quer configurar manualmente?
Não quer configurar manualmente? Implante o VPS Linux em menos de 3 minutos com a Runstack. Infraestrutura da OPEN DATACENTER, com servidores no Brasil.