Como fazer o hardening do Windows Server para MU Online
Blinde o Windows Server do seu MU Online: RDP seguro, contas endurecidas, superfície de portas mínima, SQL protegido, logs e monitoramento contra invasões.
Servidores de MU Online são alvos frequentes — de scanners automatizados que varrem a internet atrás de RDP e SQL expostos, e de rivais que atacam para tirar a concorrência do ar. Um Windows Server que sobe funcional depois da instalação ainda está longe de estar seguro: portas abertas demais, conta
Servidores de MU Online são alvos frequentes — de scanners automatizados que varrem a internet atrás de RDP e SQL expostos, e de rivais que atacam para tirar a concorrência do ar. Um Windows Server que sobe funcional depois da instalação ainda está longe de estar seguro: portas abertas demais, contas com nomes previsíveis, RDP escancarado e SQL sem restrição são convites para invasão. Hardening é o processo de reduzir essa superfície de ataque ao mínimo necessário para o jogo funcionar. Este guia cobre RDP, contas, firewall, SQL, atualizações, logs e monitoramento, sempre com o cuidado de não perder o acesso durante o processo. Portas, nomes e caminhos são exemplos e variam por ambiente e versão.
Pré-requisitos
- Windows Server já instalado e com o MuServer funcional (veja o guia de como criar um servidor de MU Online se ainda não chegou aqui).
- Acesso Administrador via RDP.
- Acesso ao console/VNC do provedor da VPS — essencial para recuperar o acesso caso uma regra de firewall bloqueie o RDP.
- Capacidade de fazer um snapshot da máquina antes de começar.
- Um IP administrativo fixo (o seu, de onde você gerencia o servidor) para restringir o RDP e o SQL.
- SSMS instalado para as etapas de proteção do SQL Server.
Parte 1 — Endurecer o acesso remoto (RDP)
O RDP é o ponto de entrada mais atacado em um Windows Server público. As tentativas de força bruta na porta 3389 são constantes.
Passo 1: Restringir o RDP ao seu IP administrativo
A defesa mais eficaz é permitir RDP apenas da sua rede. Substitua o IP de exemplo pelo seu IP fixo:
# Remover a regra genérica de RDP (se existir) e criar uma restrita
Remove-NetFirewallRule -DisplayName "RDP-Custom" -ErrorAction SilentlyContinue
New-NetFirewallRule -DisplayName "RDP-Admin-Only" `
-Direction Inbound -Protocol TCP -LocalPort 3389 `
-RemoteAddress "203.0.113.10" -Action Allow
# Bloquear RDP de qualquer outra origem
New-NetFirewallRule -DisplayName "RDP-Block-All" `
-Direction Inbound -Protocol TCP -LocalPort 3389 `
-Action Block
Se seu IP for dinâmico, use uma VPN com IP fixo ou um serviço de DDNS combinado a um script que atualize a regra.
Passo 2: Ativar Network Level Authentication (NLA)
O NLA exige autenticação antes de estabelecer a sessão, cortando muitos ataques cedo:
# Exigir NLA para conexões RDP
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" `
-Name "UserAuthentication" -Value 1
Passo 3: Trocar a porta do RDP (ofuscação complementar)
Mudar a porta não é segurança de verdade, mas reduz o volume de ruído dos scanners. Faça-o junto com a restrição por IP, nunca no lugar dela:
# Mudar a porta do RDP para uma porta alta (exemplo: 33890)
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" `
-Name "PortNumber" -Value 33890
# Abrir a nova porta apenas para seu IP e reiniciar o serviço depois
New-NetFirewallRule -DisplayName "RDP-Alt-Admin" -Direction Inbound `
-Protocol TCP -LocalPort 33890 -RemoteAddress "203.0.113.10" -Action Allow
Parte 2 — Endurecer contas e senhas
Passo 4: Renomear e desativar contas previsíveis
O nome Administrator é o primeiro alvo de qualquer ataque. Renomeie-o e crie um administrador nomeado:
# Renomear a conta Administrator embutida
Rename-LocalUser -Name "Administrator" -NewName "adm_mu_root"
# Desativar a conta Guest, se estiver ativa
Disable-LocalUser -Name "Guest"
Passo 5: Aplicar política de senha forte e bloqueio de conta
Defina exigências mínimas e bloqueio após tentativas falhas para frear força bruta:
# Tamanho mínimo, complexidade e histórico via net accounts
net accounts /minpwlen:14 /maxpwage:90 /uniquepw:5
# Bloqueio após 5 tentativas, por 30 minutos
net accounts /lockoutthreshold:5 /lockoutduration:30 /lockoutwindow:30
Habilite a complexidade em secpol.msc → Políticas de Conta → Política de Senha → "A senha deve satisfazer a requisitos de complexidade" = Habilitada.
Passo 6: Princípio do menor privilégio
Não rode tarefas do dia a dia como administrador. Crie uma conta separada para operações rotineiras (reiniciar serviços, ler logs) sem poderes administrativos totais, e reserve a conta admin para mudanças estruturais.
Parte 3 — Minimizar a superfície de portas
Passo 7: Auditar o que está exposto
Antes de fechar portas, veja o que está realmente ouvindo e em quais interfaces:
# Listar portas em escuta e o processo dono de cada uma
Get-NetTCPConnection -State Listen |
Select-Object LocalAddress, LocalPort, OwningProcess |
Sort-Object LocalPort
Cruze cada porta com o processo esperado. Qualquer porta ouvindo em 0.0.0.0 que não seja do MU (44405, faixa do GameServer, painel web) ou do RDP restrito é candidata a ser fechada.
Passo 8: Manter apenas o essencial aberto
A tabela abaixo é um exemplo de superfície mínima para um servidor de MU típico. Portas exatas variam por pacote.
| Porta | Serviço | Exposição recomendada |
|---|---|---|
| 33890 (RDP alt.) | Acesso remoto | Apenas IP administrativo |
| 44405 | ConnectServer | Pública |
| 55901-55910 | GameServer | Pública |
| 55960 | DataServer | Pública (ou local, se possível) |
| 80 / 443 | Painel web | Pública |
| 1433 | SQL Server | Nunca pública — apenas local |
# Garantir que o SQL nunca aceite conexões externas: bloquear a 1433 de fora
New-NetFirewallRule -DisplayName "SQL-Block-External" -Direction Inbound `
-Protocol TCP -LocalPort 1433 -RemoteAddress Any -Action Block
Lembre-se de replicar a política de mínimo no firewall do provedor, no painel da VPS.
Parte 4 — Proteger o SQL Server
O SQL guarda contas, itens e economia do servidor — comprometê-lo é comprometer tudo.
Passo 9: Desativar ou renomear o login sa
O sa é o alvo padrão de ataques ao SQL. Se o servidor usa um login dedicado (como recomendado), desative o sa:
-- Desativar o login sa (use um login dedicado no MuServer)
ALTER LOGIN sa DISABLE;
GO
-- Se precisar mantê-lo, ao menos renomeie
ALTER LOGIN sa WITH NAME = [adm_sql_bkp];
GO
Passo 10: Reforçar autenticação e permissões
Garanta que o login do MuServer tenha apenas as permissões necessárias e que senhas sigam a política:
-- Forçar a política de senha no login do servidor
ALTER LOGIN muserver_user WITH CHECK_POLICY = ON;
GO
-- Revisar quem tem papéis de servidor perigosos (sysadmin)
SELECT p.name, p.type_desc, r.name AS role_name
FROM sys.server_role_members m
JOIN sys.server_principals p ON m.member_principal_id = p.principal_id
JOIN sys.server_principals r ON m.role_principal_id = r.principal_id
WHERE r.name = 'sysadmin';
GO
Passo 11: Confiar apenas em conexões locais
Se o GameServer e o SQL estão na mesma máquina, force o SQL a escutar apenas em 127.0.0.1 no SQL Server Configuration Manager, ou mantenha o bloqueio externo da 1433 do passo 8. Assim, mesmo que a senha vaze, não há como conectar de fora.
Parte 5 — Atualizações, logs e monitoramento
Passo 12: Manter o sistema atualizado sem quedas
Falhas de segurança conhecidas são exploradas em massa. Aplique atualizações, mas controle o reinício para não derrubar jogadores:
# Verificar updates pendentes (requer módulo PSWindowsUpdate)
# Aplique em janela de manutenção anunciada aos jogadores
Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 10
Configure o Windows Update para baixar e notificar, reiniciando manualmente em horário de baixo movimento.
Passo 13: Ativar auditoria de logon
Habilite o registro de tentativas de logon para enxergar ataques:
# Auditar sucesso e falha de logon
auditpol /set /category:"Logon/Logoff" /success:enable /failure:enable
Passo 14: Revisar logs de segurança periodicamente
Monitore picos de falha de logon (evento 4625), que indicam força bruta:
# Contar falhas de logon recentes (evento 4625)
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625; StartTime=(Get-Date).AddHours(-24)} `
-ErrorAction SilentlyContinue | Measure-Object | Select-Object Count
Um volume anormal a partir de um mesmo IP é sinal de ataque; combine a restrição de firewall com bloqueio desse endereço. Considere também scripts que banem automaticamente IPs com muitas falhas.
Passo 15: Backup regular e testado
Segurança inclui recuperação. Mantenha backups automáticos do banco em local separado da VPS (armazenamento externo ou nuvem), e teste a restauração periodicamente — backup que nunca foi restaurado não é backup, é esperança.
Erros comuns e soluções
| Erro | Risco | Solução |
|---|---|---|
| Fechar RDP sem acesso alternativo | Perda total de acesso | Garantir console do provedor e snapshot antes |
| Só trocar a porta do RDP | Falsa sensação de segurança | Restringir por IP + NLA + senha forte |
Deixar sa ativo com senha fraca | SQL invadido | Desativar/renomear sa, usar login dedicado |
| Expor a 1433 à internet | Vazamento do banco | Bloquear 1433 externamente, escutar em local |
| Desligar o antivírus | Mineradores e backdoors | Manter Defender com exclusões pontuais |
| Não atualizar o Windows | Exploração de falhas conhecidas | Atualizar mensalmente em janela de manutenção |
| Ignorar logs de logon | Ataques passam despercebidos | Ativar auditoria e revisar evento 4625 |
| Backup só na própria VPS | Perda total em incidente | Backup externo e restauração testada |
Checklist de lançamento
- Snapshot e acesso ao console do provedor garantidos
- RDP restrito ao IP administrativo
- NLA ativado no RDP
- Porta do RDP alterada (complemento) e testada
- Conta Administrator renomeada e Guest desativada
- Política de senha forte e bloqueio de conta aplicados
- Conta de operação sem privilégios totais criada
- Portas em escuta auditadas
- Superfície de portas reduzida ao mínimo (Windows e provedor)
- Porta 1433 bloqueada externamente
- Login
sadesativado ou renomeado - Permissões do SQL revisadas
- Windows Update em modo baixar e notificar
- Auditoria de logon ativada
- Rotina de revisão de logs definida
- Backup externo automático e restauração testada
Conclusão
Hardening não é uma tarefa que se faz uma vez e esquece — é a disciplina de manter a superfície de ataque pequena enquanto o servidor cresce. Ao restringir o RDP ao seu IP, endurecer contas e senhas, fechar toda porta que não seja essencial, blindar o SQL Server e manter olhos nos logs, você tira o seu MU Online da lista de alvos fáceis que scanners e rivais exploram diariamente. Aplique cada etapa com cuidado, sempre com uma via de recuperação aberta, faça um snapshot antes de mexer no firewall e trate atualizações, revisão de logs e backups como rotina contínua. Um servidor seguro é aquele que continua de pé no dia em que o ataque chega — e ele sempre chega.
Perguntas frequentes
Devo mudar a porta padrão do RDP?
Mudar a 3389 para uma porta alta reduz o ruído de scanners automatizados, mas é apenas ofuscação, não segurança real. O que realmente protege é restringir o RDP por IP no firewall, exigir senha forte, ativar o Network Level Authentication e, idealmente, colocar o acesso atrás de uma VPN. A porta customizada é um complemento, não a defesa principal.
Preciso de antivírus se já fiz o hardening?
Sim. Hardening reduz a superfície de ataque, mas não substitui a detecção de malware. Mantenha o Windows Defender ativo com exclusões apenas para as pastas do MuServer. Desligar o antivírus para 'evitar falso positivo' é um erro comum que abre a porta para mineradores e backdoors em VPS públicas.
Como bloquear ataques de força bruta no RDP e no SQL?
Restrinja os dois por IP no firewall para que só sua rede administrativa alcance essas portas. Para o RDP, ative bloqueio de conta após tentativas falhas via política de senha. Para o SQL, nunca exponha a 1433 à internet e desative o login sa ou renomeie-o. Monitore o Event Viewer em busca de picos de logon negado.
O hardening pode derrubar meu servidor por engano?
Pode, se você aplicar tudo de uma vez sem testar. O risco maior é fechar a porta do RDP e perder o acesso. Sempre garanta o acesso via console do provedor antes de mexer no firewall, aplique as mudanças em etapas e valide a conexão a cada passo. Faça um snapshot antes de começar.
Com que frequência devo revisar a segurança do servidor?
Aplique atualizações de segurança mensalmente, revise as regras de firewall e contas a cada mudança de equipe e leia os logs de logon semanalmente. Após qualquer incidente ou pico anormal de tentativas de acesso, faça uma revisão completa. Segurança é manutenção contínua, não uma tarefa única de lançamento.