Como recuperar um servidor de MU Online após uma invasão (hack)
Plano de ação completo para recuperar um servidor de MU Online após uma invasão: conter o ataque, identificar o vetor, restaurar backups, resetar credenciais e comunicar a comunidade sem gerar pânico.
Uma invasão bem-sucedida é o pior dia na vida de um administrador de servidor de MU Online — itens duplicados, contas roubadas, banco de dados corrompido ou, no pior caso, dados de jogadores vazados. O que diferencia um incidente administrado de um desastre permanente é a velocidade e a ordem das aç
Uma invasão bem-sucedida é o pior dia na vida de um administrador de servidor de MU Online — itens duplicados, contas roubadas, banco de dados corrompido ou, no pior caso, dados de jogadores vazados. O que diferencia um incidente administrado de um desastre permanente é a velocidade e a ordem das ações nas primeiras horas. Este tutorial apresenta um plano de resposta a incidente adaptado à realidade de servidores privados, cobrindo contenção, diagnóstico, restauração e comunicação.
Reconhecendo os sinais de uma invasão
Antes de agir, confirme que realmente há uma invasão e não um bug ou pico de tráfego legítimo. Sinais típicos incluem: quantidade anormal de Zen ou itens raros aparecendo do nada, logins administrativos em horários e IPs incomuns, contas de jogadores sendo esvaziadas em sequência, o painel web ou GameServer respondendo de forma anômala, ou alertas de ferramentas de monitoramento (CPU/banco disparados sem motivo aparente).
Passo 1 — Conter o ataque imediatamente
A prioridade zero é parar o dano em andamento, não investigar a causa. Isso geralmente significa:
- Colocar o GameServer e o ConnectServer offline imediatamente.
- Bloquear o acesso externo ao painel administrativo web.
- Se possível, isolar o banco de dados da rede externa (regra de firewall temporária).
- Revogar tokens/sessões ativas de administradores no painel.
Não pule esse passo para "investigar primeiro" — cada minuto online com o atacante ativo é dano adicional.
Passo 2 — Preservar evidências antes de qualquer limpeza
Antes de restaurar qualquer coisa, copie os logs relevantes para um local seguro fora do servidor comprometido: logs do GameServer, logs do MySQL (general_log, slow_query_log se ativos), logs de acesso do painel web (Apache/Nginx) e logs do sistema operacional (auth.log/eventos de login). Esses arquivos são a única forma de identificar o vetor de ataque depois.
mkdir -p /root/incidente_2026-03-14
cp /var/log/mysql/*.log /root/incidente_2026-03-14/
cp /var/log/nginx/access.log /root/incidente_2026-03-14/
cp -r /path/to/gameserver/logs /root/incidente_2026-03-14/
Passo 3 — Identificar o vetor de ataque
Com os logs preservados, cruze horários. Os vetores mais comuns em servidores de MU privado são:
| Vetor | Evidência típica | Como confirmar |
|---|---|---|
| SQL Injection no painel web | Queries anômalas nos logs de aplicação | Buscar por UNION, --, OR 1=1 nos logs |
| Credencial de admin vazada | Login válido de IP nunca visto antes | Comparar IP de login com histórico do admin |
| Exploit conhecido do emulador | Comportamento repetido documentado pela comunidade | Checar changelog/CVE do emulador usado |
| Senha fraca em RDP/SSH | Múltiplas tentativas de login antes do sucesso | Verificar logs de autenticação do SO |
| Plugin/mod de terceiro comprometido | Arquivo modificado com timestamp suspeito | Comparar hash de arquivos com backup limpo |
Passo 4 — Avaliar a extensão do dano
Antes de restaurar, entenda o escopo: quantas contas foram afetadas, quais itens/Zen foram duplicados ou roubados, se houve exclusão de tabelas, e se dados sensíveis (e-mails, hashes de senha) foram exfiltrados. Uma query simples ajuda a mapear atividade anômala por horário:
SELECT memb___id, appl_date, appl_ip
FROM MEMB_INFO
WHERE appl_date BETWEEN '2026-03-14 18:00:00' AND '2026-03-14 23:00:00'
ORDER BY appl_date;
Passo 5 — Restaurar a partir de backup limpo
Identifique o backup mais recente anterior ao início confirmado do ataque — não ao momento em que você percebeu, que geralmente é depois do início real. Restaure o banco de dados nesse ponto e reaplique, se possível e seguro, apenas as transações legítimas identificadas manualmente entre o backup e o incidente (compras confirmadas, progresso validado). Nunca restaure sobre o mesmo servidor comprometido sem antes reinstalar o sistema operacional ou, no mínimo, revisar todos os binários e configurações quanto a backdoors.
Passo 6 — Resetar credenciais em massa
Depois da restauração, resete: senha de todos os administradores e GMs, senha de acesso ao banco de dados (MySQL root e usuários de aplicação), chaves de API do painel web, e force reset de senha para jogadores se houver qualquer indício de exfiltração de hashes. Comunique o reset forçado de senha de jogadores com antecedência e instruções claras de como redefinir.
Passo 7 — Corrigir a causa raiz antes de reabrir
Reabrir o servidor sem corrigir a vulnerabilidade identificada é o erro mais recorrente pós-incidente — o mesmo atacante volta em dias. Dependendo do vetor:
- SQL Injection: aplique prepared statements no painel, atualize ou substitua o CMS vulnerável.
- Credencial vazada: ative 2FA para administradores, revise política de senha forte.
- Exploit do emulador: aplique patch da comunidade ou atualize para versão corrigida.
- RDP/SSH fraco: troque para autenticação por chave, restrinja por IP/VPN, mude a porta padrão.
Passo 8 — Comunicar a comunidade com transparência
Publique um comunicado claro no site e Discord explicando o que aconteceu (sem detalhes técnicos exploráveis), o que foi feito para conter, o impacto para os jogadores (reset de senha, reversão de itens duplicados) e o prazo estimado de retorno. Transparência controlada preserva a confiança da comunidade; silêncio ou minimização gera desconfiança e êxodo de jogadores.
Prevenção contínua pós-incidente
| Medida | Frequência recomendada |
|---|---|
| Backup completo do banco de dados | A cada 4-6 horas |
| Revisão de logs de acesso administrativo | Diária |
| Auditoria de permissões de usuários do banco | Mensal |
| Teste de restauração de backup | Mensal |
| Atualização de patches do emulador/painel | Assim que disponíveis |
| Revisão de firewall e regras de acesso | Trimestral |
Erros comuns e soluções
| Sintoma | Causa provável | Solução |
|---|---|---|
| Ataque se repete dias depois | Causa raiz não corrigida antes de reabrir | Confirme patch/correção antes do relançamento |
| Backup restaurado também está comprometido | Backup feito depois do início real do ataque | Verifique logs para achar o ponto real de início |
| Jogadores desconfiam mesmo após correção | Comunicação tardia ou minimizada | Publique comunicado transparente assim que possível |
| Mesma vulnerabilidade em outro painel | Falta de auditoria ampla pós-incidente | Revise todos os sistemas conectados, não só o afetado |
| Perda de dados legítimos na restauração | Ausência de backups frequentes | Aumente frequência de backup para reduzir janela de perda |
| Admin não percebe login suspeito | Falta de alerta automatizado | Configure alertas de login administrativo por e-mail/Discord |
Checklist de recuperação pós-invasão
- Servidor colocado offline imediatamente após detecção.
- Logs preservados antes de qualquer limpeza.
- Vetor de ataque identificado com evidências.
- Extensão do dano mapeada (contas, itens, dados).
- Backup limpo restaurado em ambiente revisado.
- Credenciais de admin, banco e painel resetadas.
- Causa raiz corrigida antes de reabrir ao público.
- Comunicado transparente publicado para a comunidade.
Depois de recuperar o servidor, revisite os fundamentos de configuração segura desde a origem para reduzir a chance de um novo incidente — o tutorial de criação de servidor de MU Online é um bom ponto de partida para reforçar a base antes de reabrir ao público.
Perguntas frequentes
Devo desligar o servidor assim que percebo a invasão?
Sim, na maioria dos casos. Colocar o servidor offline imediatamente interrompe o dano em andamento (duplicação de itens, exclusão de dados, exfiltração de senhas) mesmo que isso irrite jogadores momentaneamente. Prejuízo de reputação por downtime é menor que prejuízo por dano contínuo.
Como sei se o ataque veio por SQL injection ou por credencial vazada?
Analise os logs do banco e do painel web no horário do incidente: SQL injection deixa rastro de queries anômalas nos logs de aplicação; credencial vazada aparece como login administrativo válido vindo de IP incomum. Ferramentas como fail2ban e logs do MySQL general_log ajudam a diferenciar.
Restaurar backup apaga o progresso dos jogadores desde o último backup?
Sim, restaurar para um ponto anterior à invasão significa perder dados posteriores a esse ponto, incluindo progresso legítimo de jogadores. Por isso backups frequentes (a cada poucas horas) reduzem a janela de perda quando um incidente exige rollback.
É preciso avisar os jogadores sobre a invasão?
Sim, transparência é importante para manter confiança, mesmo que a notícia seja ruim. Comunique o que aconteceu, o que foi feito para conter, e o que muda para os jogadores (senhas resetadas, itens revertidos), sem expor detalhes técnicos que ajudem outros atacantes.
Como evitar que a mesma vulnerabilidade seja explorada de novo?
Depois de conter e restaurar, faça uma auditoria específica do vetor identificado (patch de SQL injection, rotação de credenciais, atualização do emulador) antes de voltar ao ar publicamente. Reabrir sem corrigir a causa raiz é o erro mais comum pós-incidente.