10 min de leitura · Guia técnico
Detectar e isolar servidor comprometido requer ação imediata e metodológica para conter danos e preservar evidências. Os primeiros passos incluem identificar sinais de invasão, isolar o sistema da rede e documentar atividades suspeitas antes de iniciar a recuperação. Este guia apresenta procedimentos essenciais para resposta rápida a incidentes de segurança em servidores Linux.
Pré-requisitos
- Acesso root ou sudo ao servidor comprometido
- Terminal SSH ou console físico disponível
- Conhecimento básico de comandos Linux
- Servidor secundário para análise forense (recomendado)
- Backup recente dos dados críticos
Identificação inicial de comprometimento do servidor
A detecção precoce de invasão é fundamental para minimizar danos. Sinais comuns incluem processos desconhecidos, conexões de rede suspeitas e alterações não autorizadas em arquivos do sistema.
Primeiro, verifique processos ativos em execução:
ps aux --sort=-%cpu | head -20
Output esperado mostra processos ordenados por uso de CPU. Procure por nomes suspeitos, caminhos incomuns ou processos consumindo recursos excessivos.
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1234 85.2 2.1 12345 6789 ? R 10:30 5:23 /tmp/.hidden/miner
www-data 5678 12.1 1.5 8901 4567 ? S 09:15 1:45 php /var/www/shell.php
Examine conexões de rede estabelecidas:
netstat -tulpn | grep ESTABLISHED
Verifique últimos logins e tentativas de acesso:
last -n 20
lastb -n 10
Analise logs de autenticação para atividades suspeitas:
tail -100 /var/log/auth.log | grep -E "(Failed|Invalid|Illegal)"
Isolamento imediato da rede
O isolamento de rede previne propagação do ataque e comunicação com servidores de comando e controle. Execute estas ações sem desligar o servidor para preservar evidências na memória.
Atenção: O isolamento interromperá conexões legítimas. Certifique-se de ter acesso físico ou console antes de prosseguir.
Desconecte interfaces de rede externas mantendo apenas loopback:
ip link set eth0 down
ip link set eth1 down
Alternativamente, bloqueie todo tráfego externo via iptables:
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
Verifique o isolamento confirmando que conexões externas foram interrompidas:
ping -c 3 8.8.8.8
Output esperado deve mostrar falha na conectividade:
ping: connect: Network is unreachable
Documentação e preservação de evidências
A coleta adequada de evidências é crucial para análise forense e possível investigação legal. Documente o estado atual do sistema antes de qualquer alteração.
Capture informações do sistema e processos ativos:
date > /tmp/incident_$(date +%Y%m%d_%H%M%S).log
uname -a >> /tmp/incident_$(date +%Y%m%d_%H%M%S).log
ps auxf >> /tmp/incident_$(date +%Y%m%d_%H%M%S).log
netstat -tulpn >> /tmp/incident_$(date +%Y%m%d_%H%M%S).log
Documente arquivos modificados recentemente:
find / -type f -mtime -1 -ls 2>/dev/null | head -50 >> /tmp/incident_$(date +%Y%m%d_%H%M%S).log
Capture hash de arquivos críticos do sistema:
md5sum /bin/bash /bin/sh /usr/bin/sudo >> /tmp/incident_$(date +%Y%m%d_%H%M%S).log
Copie logs importantes antes que sejam alterados:
cp /var/log/auth.log /tmp/auth_backup_$(date +%Y%m%d_%H%M%S).log
cp /var/log/syslog /tmp/syslog_backup_$(date +%Y%m%d_%H%M%S).log
Análise de arquivos e diretórios suspeitos
Invasores frequentemente deixam rastros em diretórios temporários e locais com permissões de escrita. A análise sistemática destes locais revela artefatos maliciosos.
Examine diretórios temporários por arquivos suspeitos:
ls -la /tmp/ /var/tmp/ /dev/shm/
Procure por arquivos ocultos e scripts maliciosos:
find /tmp -name ".*" -type f -exec file {} \;
Verifique diretórios web por shells e backdoors:
find /var/www -name "*.php" -exec grep -l "eval\|base64_decode\|shell_exec" {} \;
Analise crontabs de todos os usuários:
for user in $(cut -f1 -d: /etc/passwd); do
echo "=== $user ==="
crontab -u $user -l 2>/dev/null
done
Examine arquivos de inicialização do sistema:
ls -la /etc/rc*.d/
systemctl list-unit-files --state=enabled
Contenção de processos maliciosos
Após identificar processos suspeitos, contenha-os imediatamente para impedir danos adicionais. Documente antes de terminar para análise posterior.
Identifique o PID do processo malicioso e colete informações:
lsof -p [PID_SUSPEITO]
cat /proc/[PID_SUSPEITO]/cmdline
ls -la /proc/[PID_SUSPEITO]/exe
Termine processos maliciosos identificados:
kill -STOP [PID_SUSPEITO] # Pausa o processo primeiro
kill -TERM [PID_SUSPEITO] # Tentativa de término gracioso
kill -KILL [PID_SUSPEITO] # Força término se necessário
Remova arquivos executáveis maliciosos após documentação:
mv /caminho/arquivo_malicioso /tmp/evidence_$(date +%Y%m%d_%H%M%S)
Para processos persistentes, verifique se há reinicialização automática:
grep -r "arquivo_malicioso" /etc/cron* /var/spool/cron*
Backup de dados críticos
Antes de iniciar limpeza extensiva, faça backup dos dados importantes que não foram comprometidos. Priorize bases de dados e arquivos de configuração.
Identifique e faça backup de bancos de dados:
mysqldump --all-databases > /backup/mysql_backup_$(date +%Y%m%d_%H%M%S).sql
Para PostgreSQL:
pg_dumpall > /backup/postgres_backup_$(date +%Y%m%d_%H%M%S).sql
Backup de configurações importantes do sistema:
tar -czf /backup/config_backup_$(date +%Y%m%d_%H%M%S).tar.gz \
/etc/passwd /etc/shadow /etc/group /etc/hosts \
/etc/ssh/sshd_config /etc/apache2/ /etc/nginx/
Backup de dados de usuários (após verificação de integridade):
rsync -av --exclude="*.php" /home/ /backup/home_backup_$(date +%Y%m%d_%H%M%S)/
Problemas comuns e como resolver
Sintoma: Servidor não responde após isolamento de rede
Causa: Perda de conectividade SSH sem acesso físico alternativo.
Solução: Use console de emergência do provedor ou acesso KVM. Configure regras de firewall menos restritivas permitindo apenas IPs administrativos específicos.
Sintoma: Processos maliciosos reiniciam automaticamente
Causa: Scripts de persistência em cron, systemd ou init.d não foram removidos.
Solução: Examine todos os mecanismos de inicialização automática. Use systemctl disable nome_servico para serviços systemd e remova entradas de crontab maliciosas.
Sintoma: Arquivos importantes foram criptografados
Causa: Ataque de ransomware em andamento.
Solução: Isole imediatamente, não pague resgate. Restaure de backups limpos anteriores à infecção. Se não houver backups, consulte ferramentas de descriptografia disponíveis para a variante específica.
Sintoma: Logs de sistema foram apagados
Causa: Invasor tentou ocultar rastros removendo evidências.
Solução: Verifique logs remotos se configurados. Examine arquivos de log rotacionados em /var/log/. Configure log centralizado para futuros incidentes.
Perguntas frequentes sobre detectar e isolar servidor comprometido
Como saber se meu servidor foi comprometido?
Sinais incluem processos desconhecidos rodando, conexões de rede suspeitas, arquivos modificados sem autorização, uso anormal de CPU/RAM e logs com tentativas de acesso não autorizadas. Use comandos como ps aux, netstat -tulpn e last para verificar atividades suspeitas.
Devo desligar o servidor imediatamente se detectar invasão?
Não desligue abruptamente. Primeiro isole a rede desconectando interfaces externas, documente evidências dos logs e processos ativos, depois faça backup dos dados críticos antes de qualquer ação drástica. O desligamento abrupto pode destruir evidências importantes.
É possível recuperar um servidor comprometido sem formatação?
Sim, dependendo do nível de comprometimento. Se apenas alguns arquivos foram alterados e o kernel não foi modificado, é possível limpar malwares, restaurar arquivos de backup e reforçar a segurança. Casos severos com rootkits no kernel exigem reinstalação completa.
Quanto tempo leva para recuperar um servidor invadido?
Varia de 2-4 horas para casos simples até 24-48 horas para comprometimentos severos. O tempo depende do tamanho dos dados, complexidade da invasão, disponibilidade de backups recentes e necessidade de investigação forense antes da recuperação.
Como prevenir futuras invasões após a recuperação?
Implemente autenticação por chave SSH, configure firewall restritivo, mantenha sistema atualizado, use fail2ban, monitore logs regularmente, faça backups automatizados e aplique princípio de menor privilégio para usuários. Auditorias de segurança periódicas também são essenciais.
Conclusão
- Aja rapidamente mas de forma metódica ao detectar comprometimento, priorizando isolamento e preservação de evidências
- Documente todas as ações e achados para análise forense posterior e melhoria dos procedimentos de segurança
- Implemente medidas preventivas robustas após a recuperação para evitar reincidências e fortalecer a postura de segurança
Precisa de ajuda com segurança do servidor?
A AviraHost oferece servidores VPS com recursos avançados de segurança e monitoramento 24/7. Nossa equipe técnica especializada pode auxiliar na implementação de medidas preventivas e resposta a incidentes.