rkhunter: detectar rootkits na VPS
Rootkits são softwares maliciosos que se ocultam no sistema — substituem binários do sistema (ls, ps, netstat), escondem processos e conexões de rede. rkhunter (Rootkit Hunter) verifica hashes de binários críticos, detecta backdoors conhecidos e identifica sinais de comprometimento que ferramentas convencionais de monitoramento não enxergam.
Instalar e configurar o rkhunter
Instalação e configuração inicial do rkhunter:
# Instalar rkhunter e chkrootkit:
sudo apt install -y rkhunter chkrootkit
# IMPORTANTE: executar o update ANTES do primeiro scan
# para criar baseline dos hashes dos binários do sistema:
sudo rkhunter --update # atualizar banco de dados de rootkits
sudo rkhunter --propupd # criar baseline dos arquivos do sistema
# Configurar /etc/rkhunter.conf:
sudo nano /etc/rkhunter.conf
# Configurações importantes:
# MAIL-ON-WARNING=admin@seudominio.com.br
# MAIL_CMD=mail -s "[rkhunter] Warning found for ${HOST_NAME}"
# CRON_DAILY_RUN=yes # habilitar scan diário via cron
# APT_AUTOGEN=yes # atualizar após apt upgrade
# Executar scan completo:
sudo rkhunter --check --sk # --sk = skip keyboard, modo não-interativo
# Ver apenas os warnings:
sudo rkhunter --check --sk --rwo # --rwo = report warnings onlyInterpretar os resultados do rkhunter
Entender os resultados e distinguir falsos positivos:
# Tipos de resultado:
# [ OK ] — sem problemas
# [ Warning ] — potencial problema (pode ser falso positivo)
# [ Not found ] — ferramenta/arquivo não encontrado
# Ver log completo:
sudo cat /var/log/rkhunter.log | grep -E "Warning|INFECTED|ROOTKIT"
# Exemplos de warnings comuns (falsos positivos):
# "Checking for hidden files and directories [ Warning ]"
# → pode ser de VPS providers que criam arquivos ocultos
# "The file properties have changed: /usr/bin/awk"
# → acontece após apt upgrade, executar --propupd depois de cada update
# Atualizar baseline após atualização do sistema:
sudo apt upgrade -y
sudo rkhunter --propupd # obrigatório após qualquer apt upgrade!
# Se rkhunter reportar mudança em binário crítico sem apt upgrade:
# ALERTA REAL — investigar imediatamente
# Verificar hash do binário:
sha256sum /usr/bin/ls
dpkg -S /usr/bin/ls # verificar pacote dono
dpkg --verify coreutils # verificar integridade do pacotechkrootkit: segunda opinião
Usar chkrootkit para complementar o rkhunter:
# Executar chkrootkit:
sudo chkrootkit
# Verificar resultado limpo:
sudo chkrootkit | grep -v "not infected" | grep -v "not found"
# Interpretar resultados:
# "INFECTED" — rootkit potencialmente detectado (verificar manualmente)
# "nothing found" — sem problemas
# Falso positivo comum: "sniffer?" em interfaces legítimas de VPN
# Scan de rootkits específicos:
sudo chkrootkit -q lrk5 t0rn rexedcs
# Executar via cron semanalmente:
echo "0 4 * * 0 root /usr/sbin/chkrootkit -q 2>&1 | mail -s '[chkrootkit] Report' admin@seudominio.com.br" \
| sudo tee /etc/cron.d/chkrootkit
# Combinação de detecção:
# rkhunter: melhor em verificar hashes de binários e configurações
# chkrootkit: melhor em detectar rootkits específicos e LKMsAutomação e alertas via cron
Configurar scan automático diário com alertas:
#!/bin/bash
# /opt/scripts/scan-seguranca.sh
LOG_FILE="/var/log/security_scan.log"
TELEGRAM_TOKEN="SEU_TOKEN"
TELEGRAM_CHAT_ID="SEU_CHAT_ID"
HOSTNAME=$(hostname -f)
echo "=== Scan de Segurança — $(date) ===" > "$LOG_FILE"
# 1. rkhunter
echo "--- rkhunter ---" >> "$LOG_FILE"
sudo rkhunter --check --sk --rwo >> "$LOG_FILE" 2>&1
RKHUNTER_WARNINGS=$(grep -c "Warning" "$LOG_FILE" || true)
# 2. chkrootkit
echo "--- chkrootkit ---" >> "$LOG_FILE"
sudo chkrootkit -q >> "$LOG_FILE" 2>&1
INFECTED=$(grep -c "INFECTED" "$LOG_FILE" || true)
# Enviar alerta se houver problemas:
if [ "$RKHUNTER_WARNINGS" -gt 0 ] || [ "$INFECTED" -gt 0 ]; then
MSG="⚠️ Scan de segurança em ${HOSTNAME}:%0A"
MSG+="rkhunter warnings: ${RKHUNTER_WARNINGS}%0A"
MSG+="chkrootkit infected: ${INFECTED}%0A"
MSG+="Ver: /var/log/security_scan.log"
curl -s -X POST \
"https://api.telegram.org/bot$TELEGRAM_TOKEN/sendMessage" \
-d "chat_id=$TELEGRAM_CHAT_ID" \
-d "text=$MSG"
fi
# Cron — executar às 3h diariamente:
# 0 3 * * * root /opt/scripts/scan-seguranca.shO que fazer se rootkit for detectado
Procedimento de resposta a incidente de rootkit:
# Procedimento de resposta a incidente — NÃO execute comandos no servidor comprometido
# pois o rootkit pode ter substituído ferramentas como ps, ls, netstat
# 1. ISOLAR — desconectar a VPS da internet (no painel do provedor)
# 2. EVIDÊNCIAS — tirar snapshot do disco antes de qualquer mudança
# 3. ANÁLISE forense via Live CD ou console do provedor:
# - Montar o disco comprometido como somente leitura
# - Verificar com ferramentas de um sistema limpo
# 4. VERIFICAR hashes com binários externos:
# Comparar hashes dos binários suspeitos com os do pacote original:
debsums -c coreutils # verificar integridade de coreutils
debsums -c openssh-server # verificar sshd
# 5. IDENTIFICAR backdoors:
sudo rkhunter --check --sk 2>&1 | grep "Warning|FOUND"
sudo netstat -tlnp # se netstat não foi comprometido
# 6. DECISÃO: remediar vs reconstruir
# Para rootkits confirmados: SEMPRE reconstruir o servidor do zero
# Rootkits modificam múltiplos binários e você nunca tem certeza
# do que mais foi alterado.
# 7. RECONSTRUIR: destruir VPS, criar nova, restaurar dados do backup
# (não restaurar binários ou configs da VPS comprometida)$ runstack deploy --plan starter
Não quer configurar manualmente?
Não quer configurar manualmente? Implante o VPS em menos de 3 minutos com a Runstack. Infraestrutura da OPEN DATACENTER, com servidores no Brasil.