Capítulo 9.4 - Auditoria e Monitoramento de Segurança
Objetivos de Aprendizagem
Ao final deste capítulo, você será capaz de:
- Utilizar as ferramentas de auditoria do Linux
- Monitorar tentativas de acesso
- Analisar os logs de segurança
- Detectar atividades suspeitas
- Configurar alertas de segurança
- Compreender as ferramentas de auditoria de sistema
Auditoria Linux (auditd)
Instalação
# Ubuntu/Debian
sudo apt install auditd audispd-plugins
# Red Hat/CentOS
sudo yum install audit
Serviço
# Status
sudo systemctl status auditd
# Iniciar
sudo systemctl start auditd
# Ativar
sudo systemctl enable auditd
Regras de Auditoria
Ver Regras
# Listar regras
sudo auditctl -l
# Ver regras carregadas
sudo ausearch -i
Adicionar Regras
# Auditar acesso a arquivo
sudo auditctl -w /etc/passwd -p rwxa -k passwd_access
# Auditar comandos sudo
sudo auditctl -w /usr/bin/sudo -p x -k sudo_commands
# Auditar conexões de rede
sudo auditctl -a always,exit -F arch=b64 -S connect -k network_connect
# Auditar alterações de permissões
sudo auditctl -w /etc -p wa -k etc_changes
Regras Permanentes
# Arquivo: /etc/audit/rules.d/audit.rules
# Formato:
-w /etc/passwd -p rwxa -k passwd_access
-w /etc/shadow -p rwxa -k shadow_access
-w /usr/bin/sudo -p x -k sudo_commands
Recarregar:
sudo systemctl restart auditd
Pesquisa em Logs
ausearch
# Pesquisar por chave
sudo ausearch -k passwd_access
# Pesquisar por usuário
sudo ausearch -ua user1
# Pesquisar por tipo
sudo ausearch -m USER_LOGIN
# Pesquisar recente
sudo ausearch -ts recent
# Pesquisar período
sudo ausearch -ts 01/01/2024 00:00:00 -te 01/02/2024 00:00:00
aureport
# Relatório resumido
sudo aureport
# Relatório por usuário
sudo aureport -u
# Relatório por tipo de evento
sudo aureport -e
# Relatório de falhas
sudo aureport --failed
# Relatório de conexões
sudo aureport -au
Monitoramento de Logs
Logs de Segurança
# Ubuntu/Debian
sudo tail -f /var/log/auth.log
# Red Hat/CentOS
sudo tail -f /var/log/secure
# Tentativas falhas
sudo grep "Failed password" /var/log/auth.log
# Conexões SSH
sudo grep "sshd" /var/log/auth.log
# sudo
sudo grep "sudo" /var/log/auth.log
last e lastlog
# Histórico de conexões
last
last -n 20 # Últimas 20
# Último login por usuário
lastlog
# Usuário específico
lastlog -u user1
who e w
# Usuários conectados
who
w
# Detalhes
w -f
Detecção de Intrusão
Script de Monitoramento
#!/bin/bash
# Monitoramento de segurança
LOG_FILE="/var/log/security-monitor.log"
log_event() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" >> "$LOG_FILE"
}
# Tentativas de SSH falhas
FAILED_SSH=$(grep "Failed password" /var/log/auth.log | wc -l)
if [ "$FAILED_SSH" -gt 10 ]; then
log_event "ALERTA: $FAILED_SSH tentativas de SSH falhas"
fi
# Novos usuários
NEW_USERS=$(lastlog | grep -v "Never logged in" | wc -l)
log_event "Usuários ativos: $NEW_USERS"
# Arquivos modificados recentemente
MODIFIED=$(find /etc -type f -mtime -1 2>/dev/null | wc -l)
if [ "$MODIFIED" -gt 0 ]; then
log_event "ATENÇÃO: $MODIFIED arquivos modificados em /etc"
fi
Alertas Automáticos
#!/bin/bash
# Alertas de segurança por email
# Configuração
ALERT_EMAIL="admin@example.com"
THRESHOLD=10
# Tentativas de SSH falhas
FAILED=$(grep "Failed password" /var/log/auth.log | tail -20 | wc -l)
if [ "$FAILED" -ge "$THRESHOLD" ]; then
echo "ALERTA: $FAILED tentativas de SSH falhas" | \
mail -s "Alerta de Segurança SSH" "$ALERT_EMAIL"
fi
Ferramentas de Monitoramento
fail2ban
Proteção contra brute force:
# Instalar
sudo apt install fail2ban
# Configuração
sudo nano /etc/fail2ban/jail.local
# Ativar
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# Status
sudo fail2ban-client status
sudo fail2ban-client status sshd
rkhunter
Detecção de rootkits:
# Instalar
sudo apt install rkhunter
# Atualizar base de dados
sudo rkhunter --update
# Scan
sudo rkhunter --check
# Scan rápido
sudo rkhunter --check --skip-keypress
chkrootkit
Detecção de rootkits:
# Instalar
sudo apt install chkrootkit
# Scan
sudo chkrootkit
Relatórios de Segurança
Script de Relatório
#!/bin/bash
# Relatório de segurança diário
REPORT="/var/log/security-report-$(date +%Y%m%d).txt"
{
echo "=== RELATÓRIO DE SEGURANÇA $(date) ==="
echo
echo "=== Conexões ==="
last -n 20
echo
echo "=== Tentativas falhas ==="
grep "Failed password" /var/log/auth.log | tail -10
echo
echo "=== Usuários com sudo ==="
sudo -l | grep -E "^User|^Runas"
echo
echo "=== Serviços ativos ==="
systemctl list-units --type=service --state=running | head -20
echo
echo "=== Portas abertas ==="
ss -tuln | grep LISTEN
} > "$REPORT"
# Enviar por email
mail -s "Relatório de Segurança $(date +%Y-%m-%d)" admin@example.com < "$REPORT"
Cron para Monitoramento
# /etc/cron.daily/security-check
#!/bin/bash
# Verificação de segurança diária
# Scan de rootkit
rkhunter --check --skip-keypress
# Verificar integridade de arquivos
# (se AIDE instalado)
# aide --check
# Relatório
/usr/local/bin/security-report.sh
Resumo
Neste capítulo, você aprendeu:
auditd: Sistema de auditoria do Linux, regras, logs
Pesquisa: ausearch, aureport para analisar logs
Monitoramento: Logs auth, last, who, w
Detecção: Scripts de monitoramento, alertas
Ferramentas: fail2ban, rkhunter, chkrootkit
Relatórios: Automação de relatórios de segurança
Prática: Monitoramento contínuo, alertas, relatórios
Próximos Passos
Módulo 10: Gerenciamento de Pacotes
Módulo 11: Monitoramento e Logs
Capítulo criado em: Dezembro 2024