El mayor portal de MU Online de Brasil — desde 2003
Tutorial Avanzado Tutoriais

Cómo Configurar Firewall Avanzado para Servidor de MU Online

Guía técnica completa para configurar el Windows Firewall y reglas de puertos para proteger tu servidor privado de MU Online contra ataques y accesos no autorizados.

EQ Equipo ViciadosMU · Actualizado el 3 jul 2026 · ⏱ 12 min de lectura

Por qué el Firewall es Crítico para Servidores de MU Online

Los servidores privados de MU Online son objetivos frecuentes de ataques DDoS, intentos de conexión no autorizada y escaneos de puertos. Una configuración incorrecta puede exponer SQL Server a internet, permitir acceso sin autenticación al panel de administración o tumbar el servidor con floods de paquetes. Esta guía cubre la configuración del Windows Firewall con Seguridad Avanzada en Windows Server 2012/2016/2019, los entornos de hospedaje más comunes para MuServer Season 6 hasta Season 13.

Nota: Esta guía asume que ya tienes MuServer instalado y funcionando. Aplica todas las reglas en un entorno de pruebas antes de producción. Ten siempre acceso a la consola KVM de tu VPS antes de modificar las reglas de firewall.

Paso 1: Mapear Todos los Puertos del MuServer

Antes de crear cualquier regla, documenta todos los puertos que usa tu servidor. La estructura estándar de MuServer es:

ComponentePuertoProtocoloExposición
ConnectServer44405TCPPública (jugadores)
GameServer 155901TCPPública (jugadores)
GameServer 255902TCPPública (jugadores)
GameServer N5590NTCPPública (jugadores)
DataServer55980TCPSolo interna
EventServer55960TCPSolo interna
SQL Server1433TCPSolo interna
RDP/Admin3389TCPIP restringida
Panel Web80/443TCPPública o restringida

Verifica los puertos exactos en el archivo de configuración de tu ConnectServer:

GameServer/Setup/ConnectServer.ini
[CONNECT_SERVER_INFO]
ServerPort=44405
ServerListenIP=0.0.0.0

[GAME_SERVER_GROUP]
ServerCount=2

Y en GameServer/Setup/GameServerInfo.cfg:

[GameServer_1]
ServerPort=55901
InternalPort=55901

Paso 2: Bloquear Todo el Tráfico Entrante por Defecto

El principio correcto es: bloquear todo por defecto, luego permitir solo lo necesario. Ejecuta los siguientes comandos como Administrador en PowerShell o Símbolo del sistema:

1. Configurar política predeterminada de bloqueo para tráfico entrante:

netsh advfirewall set allprofiles firewallpolicy blockinbound,allowoutbound

2. Asegurarse de que el firewall está activo en todos los perfiles:

netsh advfirewall set allprofiles state on
Atenção: Ejecuta este paso solo si ya tienes una regla que permite RDP (puerto 3389) desde tu IP. De lo contrario, perderás el acceso remoto al servidor de inmediato. Si eso ocurre, usa la consola KVM de tu proveedor de VPS para recuperar el acceso.

Paso 3: Crear Reglas de Entrada para los Componentes del MuServer

3. Permitir ConnectServer (puerto 44405 — acceso público):

netsh advfirewall firewall add rule name="MU - ConnectServer" dir=in action=allow protocol=TCP localport=44405 profile=any

4. Permitir GameServers (puertos 55901 y 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

Para múltiples GameServers, repite para cada puerto o usa el formato de rango:

netsh advfirewall firewall add rule name="MU - GameServers" dir=in action=allow protocol=TCP localport=55901-55910 profile=any

5. Permitir HTTP/HTTPS para el panel 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. Permitir RDP solo desde tu IP de administración (reemplaza 203.0.113.10 con tu IP real):

netsh advfirewall firewall add rule name="Admin - RDP Restringido" dir=in action=allow protocol=TCP localport=3389 remoteip=203.0.113.10 profile=any

Paso 4: Bloquear Explícitamente los Puertos Internos

SQL Server y los componentes internos nunca deben ser accesibles desde internet:

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 y 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
Dica: En el Administrador de configuración de SQL Server, también configura SQL Server para escuchar únicamente en 127.0.0.1 en lugar de 0.0.0.0. Navega a: Administrador de configuración de SQL Server → Configuración de red de SQL Server → Protocolos de MSSQLSERVER → TCP/IP → Direcciones IP → deshabilita todas las entradas de IP excepto el loopback (127.0.0.1).

Paso 5: Protección Anti-Flood con Límite de Conexiones

El Windows Firewall estándar no ofrece limitación de tasa nativa. Usa PowerShell para crear un script de monitoreo que bloquee IPs con conexiones simultáneas excesivas:

9. Crear el script anti-flood en C:\MuServer\Scripts\AntiFlood.ps1:

# AntiFlood.ps1 - Monitorea conexiones en el puerto 44405 y bloquea IPs excesivas
$puerto = 44405
$limiteConexiones = 15
$intervaloSegundos = 30

while ($true) {
    $conexiones = Get-NetTCPConnection -LocalPort $puerto -State Established -ErrorAction SilentlyContinue
    $grupoIPs = $conexiones | Group-Object -Property RemoteAddress | Where-Object { $_.Count -ge $limiteConexiones }

    foreach ($grupo in $grupoIPs) {
        $ip = $grupo.Name
        $reglaExistente = Get-NetFirewallRule -DisplayName "AUTOBLOCK - $ip" -ErrorAction SilentlyContinue
        if (-not $reglaExistente) {
            New-NetFirewallRule -DisplayName "AUTOBLOCK - $ip" -Direction Inbound -Action Block -RemoteAddress $ip -Protocol TCP
            Write-Output "$(Get-Date) - IP bloqueada: $ip ($($grupo.Count) conexiones)"
        }
    }

    Start-Sleep -Seconds $intervaloSegundos
}

10. Registrar el script como tarea programada que se ejecuta al inicio del sistema:

schtasks /create /tn "MU AntiFlood Monitor" /tr "powershell -ExecutionPolicy Bypass -File C:\MuServer\Scripts\AntiFlood.ps1" /sc onstart /ru SYSTEM /f

Paso 6: Seguridad a Nivel de Base de Datos en SQL Server

Agrega una capa de seguridad dentro de SQL Server para registrar intentos de login sospechosos:

11. Habilitar auditoría de logins fallidos en SQL Server Management Studio:

-- Verificar configuración actual de auditoría
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;

-- Activar auditoría de login (2 = fallos y éxitos, 1 = solo fallos)
EXEC xp_instance_regwrite 
    N'HKEY_LOCAL_MACHINE',
    N'Software\Microsoft\MSSQLServer\MSSQLServer',
    N'AuditLevel',
    REG_DWORD,
    2;

12. Crear tabla de registro de seguridad en la base de datos 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. Crear un trigger para registrar bloqueos automáticos de cuentas en la tabla 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', 
               'Cuenta bloqueada automáticamente - intentos excesivos fallidos'
        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

Paso 7: Verificar y Auditar Todas las Reglas

14. Listar todas las reglas de firewall creadas para MU Online:

netsh advfirewall firewall show rule name=all dir=in | findstr "MU\|BLOCK\|AUTOBLOCK\|Admin"

15. Comprobar los puertos en escucha para confirmar que solo los esperados están abiertos:

netstat -ano | findstr "LISTENING" | findstr "44405\|55901\|55902\|1433\|3389"

16. Exportar la configuración actual del firewall como copia de seguridad:

netsh advfirewall export "C:\MuServer\Backups\firewall-backup-%date:~-4,4%%date:~-10,2%%date:~-7,2%.wfw"
Dica: Programa una exportación semanal de las reglas del firewall usando el Programador de tareas de Windows. Si necesitas revertir tras un cambio problemático, simplemente ejecuta: netsh advfirewall import "C:\MuServer\Backups\firewall-backup-AAAAMMDD.wfw"

Paso 8: Configuración Alternativa por Interfaz Gráfica via wf.msc

Si prefieres la interfaz gráfica, abre wf.msc y:

  1. Ve a Reglas de entradaNueva regla
  2. Selecciona PuertoTCP → ingresa el número de puerto específico
  3. Selecciona Permitir la conexión
  4. Marca todos los perfiles (Dominio, Privado, Público)
  5. Asígnale el nombre MU - [NombreComponente]

Para restringir por IP en la GUI: tras crear la regla, clic derecho → Propiedades → pestaña Ámbito → en "Dirección IP remota" selecciona "Estas direcciones IP" y agrega las IPs permitidas.


Solución de Problemas

Los jugadores no pueden conectarse tras aplicar las reglas: Verifica que la regla del ConnectServer es correcta con netsh advfirewall firewall show rule name="MU - ConnectServer". Confirma que Action=Allow y Direction=In.

RDP bloqueado accidentalmente: Usa la consola KVM de tu proveedor de VPS. Ejecuta netsh advfirewall reset para restaurar los valores predeterminados, luego reaplica las reglas en el orden correcto, empezando siempre por la regla de RDP para tu IP.

El script AntiFlood bloquea jugadores legítimos: Aumenta el valor de $limiteConexiones (por ejemplo a 30), o agrega una lista blanca de IPs de confianza al inicio del script antes del bucle de bloqueo.

Atenção: Nunca ejecutes MuServer con la cuenta SYSTEM o Administrador en producción. Crea una cuenta de servicio dedicada con permisos mínimos necesarios. El firewall es solo una capa de seguridad — combínalo con antivirus, actualizaciones de Windows y monitoreo de logs para una protección efectiva del servidor.

Perguntas frequentes

¿Qué puertos necesita abiertos MU Online?

ConnectServer usa el puerto 44405 (TCP). Cada GameServer usa 55901-55910 (TCP, uno por instancia de servidor). DataServer usa 55980 (TCP, solo comunicación interna). El panel web usa 80 y 443. Nunca expongas el puerto 1433 de SQL Server directamente a internet.

¿Cómo bloquear ataques de fuerza bruta al login?

Combina reglas de firewall con limitación de tasa: bloquea IPs que intenten más de 10 conexiones simultáneas en el puerto 44405 usando netsh advfirewall, y crea un trigger en SQL Server sobre la tabla MEMB_INFO para registrar fallos y opcionalmente llamar xp_cmdshell para banear el IP via netsh.

¿Qué hacer si el servidor queda inaccesible tras aplicar las reglas?

Accede al VPS mediante consola KVM/IPMI (no RDP) para no perder el acceso aunque se bloquee el puerto 3389. Ejecuta 'netsh advfirewall reset' para restaurar la configuración predeterminada y reaplica las reglas de una en una para identificar cuál causó el bloqueo.

¿Cómo proteger el panel web (webEngineNET/PHP) junto con el firewall?

Restringe el acceso al directorio /admin por IP en IIS (vía applicationHost.config o web.config con <ipSecurity>), habilita HTTPS con certificado autofirmado o Let's Encrypt, y bloquea el puerto 80 en el firewall externo dejando solo el 443 abierto.

EQ

Equipo ViciadosMU

Equipe editorial do ViciadosMU — portal de MU Online no ar desde 2003.

Sigue leyendo

Artículos relacionados