Como Configurar Firewall Avançado para Servidor de MU Online
Guia técnico completo para configurar o Windows Firewall e regras de porta para proteger seu servidor privado de MU Online contra ataques e acessos não autorizados.
Por que o Firewall é Crítico para Servidores de MU Online
Servidores privados de MU Online são alvos frequentes de ataques DDoS, tentativas de conexão não autorizada e varreduras de porta. Uma configuração incorreta pode expor o SQL Server, permitir acesso ao painel administrativo sem autenticação ou derrubar o servidor com floods de pacotes. Este guia cobre a configuração do Windows Firewall com Segurança Avançada em servidores Windows Server 2012/2016/2019, que são os ambientes mais comuns para hospedar MuServer Season 6 a Season 13.
Etapa 1: Mapeamento de Portas do MuServer
Antes de criar qualquer regra, documente todas as portas que seu servidor utiliza. A estrutura padrão do MuServer é:
| Componente | Porta | Protocolo | Exposição |
|---|---|---|---|
| ConnectServer | 44405 | TCP | Pública (jogadores) |
| GameServer 1 | 55901 | TCP | Pública (jogadores) |
| GameServer 2 | 55902 | TCP | Pública (jogadores) |
| GameServer N | 5590N | TCP | Pública (jogadores) |
| DataServer | 55980 | TCP | Interna apenas |
| EventServer | 55960 | TCP | Interna apenas |
| SQL Server | 1433 | TCP | Interna apenas |
| RDP/Admin | 3389 | TCP | IP restrito |
| Painel Web | 80/443 | TCP | Pública ou restrita |
Verifique os arquivos de configuração do seu ConnectServer para confirmar as portas exatas:
GameServer/Setup/ConnectServer.ini
[CONNECT_SERVER_INFO]
ServerPort=44405
ServerListenIP=0.0.0.0
[GAME_SERVER_GROUP]
ServerCount=2
E em GameServer/Setup/GameServerInfo.cfg:
[GameServer_1]
ServerPort=55901
InternalPort=55901
Etapa 2: Bloquear Todo o Tráfego de Entrada por Padrão
O princípio correto é: bloqueie tudo, libere apenas o necessário. Execute os comandos abaixo como Administrador no PowerShell ou Prompt de Comando:
1. Configurar política padrão de bloqueio:
netsh advfirewall set allprofiles firewallpolicy blockinbound,allowoutbound
2. Garantir que o firewall está ativo em todos os perfis:
netsh advfirewall set allprofiles state on
Etapa 3: Criar Regras de Entrada para os Componentes do MuServer
3. Liberar ConnectServer (porta 44405 — acesso público):
netsh advfirewall firewall add rule name="MU - ConnectServer" dir=in action=allow protocol=TCP localport=44405 profile=any
4. Liberar GameServers (portas 55901 e 55902):
netsh advfirewall firewall add rule name="MU - GameServer 1" dir=in action=allow protocol=TCP localport=55901 profile=any
netsh advfirewall firewall add rule name="MU - GameServer 2" dir=in action=allow protocol=TCP localport=55902 profile=any
Se tiver mais GameServers, repita para cada porta. Para múltiplos servidores em sequência, use o formato de intervalo:
netsh advfirewall firewall add rule name="MU - GameServers" dir=in action=allow protocol=TCP localport=55901-55910 profile=any
5. Liberar acesso HTTP/HTTPS para o painel web:
netsh advfirewall firewall add rule name="MU - Web HTTP" dir=in action=allow protocol=TCP localport=80 profile=any
netsh advfirewall firewall add rule name="MU - Web HTTPS" dir=in action=allow protocol=TCP localport=443 profile=any
6. Liberar RDP apenas para seu IP de administração (substitua 203.0.113.10 pelo seu IP real):
netsh advfirewall firewall add rule name="Admin - RDP Restrito" dir=in action=allow protocol=TCP localport=3389 remoteip=203.0.113.10 profile=any
Etapa 4: Bloquear Explicitamente Portas Internas
Portas do SQL Server e componentes internos nunca devem ser acessíveis externamente:
7. Bloquear SQL Server externamente:
netsh advfirewall firewall add rule name="BLOCK - SQL Server Externo" dir=in action=block protocol=TCP localport=1433 profile=any
8. Bloquear DataServer e EventServer externamente:
netsh advfirewall firewall add rule name="BLOCK - DataServer Externo" dir=in action=block protocol=TCP localport=55980 profile=any
netsh advfirewall firewall add rule name="BLOCK - EventServer Externo" dir=in action=block protocol=TCP localport=55960 profile=any
127.0.0.1 e não em 0.0.0.0. Acesse: SQL Server Configuration Manager → SQL Server Network Configuration → Protocols for MSSQLSERVER → TCP/IP → IP Addresses → desabilite todos os IPs exceto IPLoopback/127.0.0.1.Etapa 5: Proteção contra Flood com Limite de Conexões
O Windows Firewall padrão não oferece rate-limiting nativo. Para complementar, use o PowerShell para criar um script de monitoramento que bloqueia IPs com conexões excessivas:
9. Criar script de proteção anti-flood em C:\MuServer\Scripts\AntiFlood.ps1:
# AntiFlood.ps1 - Monitora conexoes na porta 44405 e bloqueia IPs com excesso
$porta = 44405
$limiteConexoes = 15
$intervaloSegundos = 30
while ($true) {
$conexoes = Get-NetTCPConnection -LocalPort $porta -State Established -ErrorAction SilentlyContinue
$grupoIP = $conexoes | Group-Object -Property RemoteAddress | Where-Object { $_.Count -ge $limiteConexoes }
foreach ($grupo in $grupoIP) {
$ip = $grupo.Name
$regraExistente = Get-NetFirewallRule -DisplayName "AUTOBLOCK - $ip" -ErrorAction SilentlyContinue
if (-not $regraExistente) {
New-NetFirewallRule -DisplayName "AUTOBLOCK - $ip" -Direction Inbound -Action Block -RemoteAddress $ip -Protocol TCP
Write-Output "$(Get-Date) - IP bloqueado: $ip ($($grupo.Count) conexoes)"
}
}
Start-Sleep -Seconds $intervaloSegundos
}
10. Registrar o script como serviço ou tarefa agendada:
schtasks /create /tn "MU AntiFlood Monitor" /tr "powershell -ExecutionPolicy Bypass -File C:\MuServer\Scripts\AntiFlood.ps1" /sc onstart /ru SYSTEM /f
Etapa 6: Proteção do Banco de Dados via SQL Server
Adicione uma camada de segurança no SQL Server para registrar tentativas de login suspeitas:
11. Ativar auditoria de logins falhos no SQL Server Management Studio:
-- Verificar configuracao atual de auditoria
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
-- Ativar login auditing (2 = falhas e sucesso, 1 = apenas falhas)
EXEC xp_instance_regwrite
N'HKEY_LOCAL_MACHINE',
N'Software\Microsoft\MSSQLServer\MSSQLServer',
N'AuditLevel',
REG_DWORD,
2;
12. Criar tabela de log de tentativas suspeitas no banco MuOnline:
USE MuOnline;
GO
CREATE TABLE dbo.SecurityLog (
LogID INT IDENTITY(1,1) PRIMARY KEY,
LogDate DATETIME DEFAULT GETDATE(),
AccountID VARCHAR(10),
IPAddress VARCHAR(15),
EventType VARCHAR(50),
Details VARCHAR(255)
);
GO
13. Criar trigger para registrar tentativas de login excessivas na tabela MEMB_INFO:
USE MuOnline;
GO
CREATE TRIGGER trg_LoginFailed
ON dbo.MEMB_INFO
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF UPDATE(block_code)
BEGIN
INSERT INTO dbo.SecurityLog (AccountID, EventType, Details)
SELECT i.memb___id, 'ACCOUNT_BLOCKED',
'Conta bloqueada automaticamente - tentativas excessivas'
FROM inserted i
INNER JOIN deleted d ON i.memb___id = d.memb___id
WHERE i.block_code <> d.block_code AND i.block_code = 1;
END
END;
GO
Etapa 7: Verificação e Auditoria das Regras
14. Listar todas as regras de firewall criadas:
netsh advfirewall firewall show rule name=all dir=in | findstr "MU\|BLOCK\|AUTOBLOCK\|Admin"
15. Verificar portas abertas e em escuta:
netstat -ano | findstr "LISTENING" | findstr "44405\|55901\|55902\|1433\|3389"
16. Exportar configuração atual como backup:
netsh advfirewall export "C:\MuServer\Backups\firewall-backup-%date:~-4,4%%date:~-10,2%%date:~-7,2%.wfw"
netsh advfirewall import "C:\MuServer\Backups\firewall-backup-AAAAMMDD.wfw"Etapa 8: Configuração do Windows Firewall via GUI (alternativa)
Se preferir a interface gráfica, acesse wf.msc e:
- Vá em Regras de Entrada → Nova Regra
- Selecione Porta → TCP → insira a porta específica
- Selecione Permitir a conexão
- Marque todos os perfis (Domínio, Privado, Público)
- Nomeie como
MU - [ComponenteName]
Para restringir por IP na GUI: após criar a regra, clique com botão direito → Propriedades → aba Escopo → em "Endereço IP remoto" selecione "Esses endereços IP" e adicione os IPs permitidos.
Troubleshooting
Jogadores não conseguem conectar após aplicar regras: Verifique se a regra do ConnectServer está correta com netsh advfirewall firewall show rule name="MU - ConnectServer". Confirme que Action=Allow e Direction=In.
RDP cortado acidentalmente: Use o console KVM do seu provedor de VPS. Execute netsh advfirewall reset para restaurar o padrão e reaplique as regras na ordem correta, começando sempre pela regra de RDP.
Script AntiFlood bloqueando jogadores legítimos: Ajuste o valor $limiteConexoes para um número maior (ex: 30) ou adicione uma whitelist de IPs confiáveis no script antes do loop de bloqueio.
Perguntas frequentes
Quais portas o MU Online precisa abertas?
ConnectServer usa a porta 44405 (TCP). GameServer usa 55901-55910 (TCP, uma por servidor). DataServer usa 55980 (TCP, comunicação interna). WebEngine/painel web usa 80 e 443. Nunca exponha a porta 1433 do SQL Server diretamente à internet.
Como bloquear ataques de força bruta no login?
Combine regras de firewall com rate-limiting: bloqueie IPs que tentarem mais de 10 conexões simultâneas na porta 44405 usando netsh advfirewall, e crie uma trigger no SQL Server na tabela MEMB_INFO para registrar falhas e chamar xp_cmdshell para banir o IP via netsh.
O que fazer se o servidor ficar inacessível após aplicar as regras?
Acesse o VPS via console (KVM/IPMI, não RDP) para não perder acesso caso bloqueie a porta 3389. Execute 'netsh advfirewall reset' para restaurar as configurações padrão e reconfigure as regras uma a uma para identificar qual causou o bloqueio.
Como proteger o painel web (webEngineNET/PHP) junto com o firewall?
Restrinja o acesso à pasta /admin via IP no IIS (applicationHost.config ou web.config com <ipSecurity>), habilite HTTPS com certificado autoassinado ou Let's Encrypt, e bloqueie a porta 80 no firewall externo deixando apenas 443.