Pular para o conteúdo principal

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