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

Cómo segmentar la red del GameServer para proteger tu servidor de MU Online

Aísla el GameServer, ConnectServer y base de datos de tu servidor de MU Online en segmentos de red separados, reduciendo la superficie de ataque contra DDoS, intrusiones y explotación de puertos expuestos.

RO Rodrigo · Actualizado el 16 abr 2015 · ⏱ 15 min de lectura
Respuesta rápida

Un servidor de MU Online privado típico expone, sin darse cuenta, mucho más de lo que debería: es común ver GameServer, ConnectServer, base de datos e incluso el panel administrativo web corriendo en la misma red plana, todos accesibles desde internet en los mismos puertos. Esto convierte cualquier

Un servidor de MU Online privado típico expone, sin darse cuenta, mucho más de lo que debería: es común ver GameServer, ConnectServer, base de datos e incluso el panel administrativo web corriendo en la misma red plana, todos accesibles desde internet en los mismos puertos. Esto convierte cualquier vulnerabilidad en un componente en una puerta de entrada para todos los demás. Segmentar la red —aislando cada componente en su propia zona, con reglas de firewall explícitas sobre quién puede hablar con quién— es una de las medidas de seguridad más efectivas y menos aplicadas por los administradores de servidores privados. Este tutorial muestra cómo planificar e implementar esa segmentación, desde el diseño de la topología hasta las reglas de firewall específicas.

Por qué la red plana es un riesgo

En una red plana, si un atacante compromete el servidor web (generalmente el componente más expuesto y más atacado, por correr un CMS o panel PHP), obtiene acceso de red directo a la base de datos y al GameServer, porque no hay ninguna barrera entre ellos. Una vulnerabilidad en un formulario de login del sitio se convierte, en pocos pasos, en un volcado completo de la base de cuentas e ítems. La segmentación de red rompe esa cadena: aunque un componente sea comprometido, el atacante no puede "saltar" lateralmente a los demás sin pasar por una regla de firewall explícita.

Componentes típicos de un servidor de MU y su exposición ideal

ComponenteFunciónExposición recomendada
ConnectServerPunto de entrada del cliente del juegoPúblico (puerto ~44405)
GameServerLógica del juego, personajes, ítemsSolo red interna
Base de datosCuentas, personajes, ítems, logSolo red interna, acceso restringido al GameServer
Panel web/sitioRegistro, ranking, tiendaPúblico (puertos 80/443), pero aislado del GameServer
DataServer (si aplica)Intermediario entre GameServer y base de datosSolo red interna

La regla general: solo el ConnectServer y el sitio necesitan estar accesibles directamente desde internet. Todo lo demás debe vivir detrás de un firewall que bloquea por defecto y libera solo lo necesario.

Diseñando los segmentos de red

Una topología de referencia con tres segmentos:

[ Internet ]
     |
[ Segmento Público ]  -- ConnectServer, Sitio/Panel Web
     |  (regla: solo puertos específicos liberados)
[ Segmento de Aplicación ]  -- GameServer, DataServer
     |  (regla: solo el GameServer habla con la base de datos)
[ Segmento de Base de Datos ]  -- MSSQL/MySQL

Cada flecha representa una regla de firewall explícita, no una vía abierta. El tráfico entre segmentos debe ser una excepción documentada, nunca la norma.

Implementando con VPC y Security Groups (nube)

Si el servidor corre en un proveedor de nube (AWS, Azure, GCP, u otros proveedores con VPC), la segmentación se hace vía subredes privadas y grupos de seguridad. Un ejemplo de estructura en una VPC:

VPC: 10.0.0.0/16
├── Subred Pública:    10.0.1.0/24  → ConnectServer, Sitio
├── Subred Aplicación: 10.0.2.0/24  → GameServer, DataServer
└── Subred Base de Datos: 10.0.3.0/24  → MSSQL/MySQL

El ConnectServer en la subred pública tiene IP accesible desde internet (o detrás de un Load Balancer); GameServer y base de datos quedan en subredes privadas, sin ruta directa a internet, accesibles solo vía IP interna.

Reglas de firewall por segmento

La siguiente tabla resume las reglas mínimas necesarias entre segmentos:

OrigenDestinoPuertoMotivo
InternetConnectServer44405/TCPEl cliente del juego se conecta al ConnectServer
InternetSitio/Panel Web443/TCPAcceso HTTPS al sitio
ConnectServerGameServerPuerto interno del protocoloEl ConnectServer redirige la sesión al GameServer
GameServerBase de datos1433/TCP (MSSQL) o 3306/TCP (MySQL)El GameServer consulta/escribe datos de cuenta y personaje
Sitio/Panel WebBase de datosPuerto de la base de datos, solo lectura si es posibleEl sitio muestra ranking, datos de cuenta (sin escritura directa en ítem/personaje)
Cualquier otro origenBase de datosNingunoBloqueo por defecto —nada más debe alcanzar la base de datos

Nota que el sitio tiene su propio camino hasta la base de datos, idealmente con una cuenta de base de datos con permisos restringidos (solo SELECT en tablas de ranking, nunca UPDATE/DELETE).

Configurando con iptables (servidor Linux dedicado)

Si los componentes corren en servidores Linux propios (no en nube gestionada), iptables o nftables cumplen el mismo papel. Un ejemplo de reglas en el servidor de base de datos, aceptando conexiones solo desde la IP interna del GameServer:

# Política por defecto: bloquear todo
iptables -P INPUT DROP

# Permitir loopback
iptables -A INPUT -i lo -j ACCEPT

# Permitir solo al GameServer en el puerto de MySQL
iptables -A INPUT -p tcp -s 10.0.2.10 --dport 3306 -j ACCEPT

# Permitir SSH solo desde una IP de gestión conocida
iptables -A INPUT -p tcp -s 198.51.100.5 --dport 22 -j ACCEPT

# Log y drop del resto
iptables -A INPUT -j LOG --log-prefix "IPTABLES-DROPPED: "
iptables -A INPUT -j DROP

Guarda las reglas con iptables-save y asegúrate de que se restauren en el arranque, o un reinicio dejará al servidor sin protección.

Aislando el panel administrativo web

El panel administrativo (donde los GMs gestionan cuentas, ítems, eventos) es un objetivo particularmente sensible —generalmente tiene permisos de escritura directa en la base de datos. Nunca lo expongas en la misma URL/puerto público del sitio de jugadores. Recomendaciones:

  • Coloca el panel en un subdominio o puerto separado, protegido por VPN o lista de IPs permitidas.
  • Usa autenticación de dos factores para las cuentas de administrador.
  • Restringe la cuenta de base de datos usada por el panel a las tablas estrictamente necesarias.

Segmentando también la red de gestión (SSH/RDP)

Un error común es segmentar bien los servicios del juego pero dejar el acceso administrativo (SSH, RDP, paneles de hosting) abierto a internet sin restricción. Trata el acceso de gestión como un segmento más: libera SSH/RDP solo desde una VPN de administración o una lista fija de IPs de confianza, nunca 0.0.0.0/0.

Monitoreando y auditando las reglas

La segmentación sin monitoreo es una falsa sensación de seguridad. Configura logs de firewall (bloqueos y liberaciones) y revísalos periódicamente:

Qué monitorearFrecuenciaAcción si es anómalo
Intentos de conexión bloqueados a la base de datosDiaria (automatizada)Investigar el origen; considerar bloqueo de IP
Nuevas reglas de firewall agregadasCon cada cambioRevisión por una segunda persona antes de aplicar en producción
Puertos abiertos en los servidores internosSemanal (escaneo interno)Cerrar puertos no documentados de inmediato
Accesos al panel administrativoDiariaConfirmar que todos los accesos vinieron de las IPs/VPN esperadas

Probando la segmentación

Después de implementarla, valida activamente que la segmentación funciona como se espera, intentando conexiones que deberían fallar:

  1. Desde internet pública, intenta conectarte directamente al puerto de la base de datos —debe fallar (timeout o connection refused).
  2. Desde el segmento público (ConnectServer), intenta conectarte al puerto de la base de datos —debe fallar, porque solo el GameServer tiene permiso.
  3. Desde el GameServer, confirma que la conexión a la base de datos funciona normalmente.
  4. Corre un escáner de puertos (nmap) desde fuera de la red contra la IP pública —confirma que solo aparecen abiertos los puertos esperados (ConnectServer, sitio).

Errores comunes y soluciones

SíntomaCausa probableSolución
Base de datos accesible directamente desde internetRegla de firewall liberando el origen 0.0.0.0/0 en el puerto de la base de datosRestringe el origen a la IP interna exacta del GameServer
El GameServer no se conecta a la base de datos tras la segmentaciónRegla de firewall bloqueando también el tráfico legítimoConfirma la IP interna correcta del GameServer en la regla de liberación
Panel administrativo comprometido expone toda la base de datosPanel en la misma red/permisos que el sitio públicoAísla el panel en su propio segmento con VPN y cuenta de base de datos restringida
Las reglas de firewall se pierden tras un reinicioReglas no persistidas (iptables sin save)Configura la persistencia vía iptables-save/servicio systemd equivalente
Ataque lateral tras comprometer el sitioRed plana sin separación entre sitio y GameServer/base de datosImplementa la segmentación en segmentos distintos según este tutorial

Lista de verificación de segmentación de red

  • Topología de segmentos diseñada (público, aplicación, base de datos).
  • Solo ConnectServer y sitio expuestos directamente a internet.
  • Reglas de firewall explícitas por origen/destino/puerto, bloqueo por defecto.
  • Panel administrativo aislado con VPN o lista de IPs y 2FA.
  • Acceso de gestión (SSH/RDP) restringido a VPN o IPs de confianza.
  • Persistencia de las reglas de firewall configurada (sobrevive a reinicios).
  • Pruebas activas de segmentación realizadas (intentos de conexión que deben fallar).
  • Monitoreo y logs de firewall configurados con revisión periódica.

Con la red del GameServer debidamente segmentada, el siguiente paso lógico es aplicar el mismo rigor a la capa de datos —consulta el tutorial de segregación de red de la base de datos para profundizar específicamente en la protección del componente más sensible de todo el servidor.

Preguntas frecuentes

¿Segmentar la red protege contra DDoS?

No elimina el DDoS, pero reduce el impacto al concentrar la exposición pública solo en el ConnectServer y/o proxy, manteniendo el GameServer y la base de datos totalmente inaccesibles desde internet. Para mitigar el DDoS de verdad, combina la segmentación con un servicio de protección (Cloudflare Spectrum, OVH Anti-DDoS o similar) delante del punto de entrada público.

¿Necesito hardware de red caro para segmentar (VLANs físicas)?

No, en la mayoría de los casos. Con un proveedor de nube (VPS/cloud), la segmentación se hace vía redes privadas virtuales (VPC) y reglas de firewall/security groups, sin necesidad de switches gestionados físicos. Las VLANs físicas tienen más sentido cuando los componentes corren en hardware propio en la misma sala de servidores.

¿El ConnectServer realmente necesita estar expuesto a internet?

Sí, es el punto de entrada que el cliente del juego contacta primero para obtener la lista de servidores y redirigir la conexión. Por eso debe ser el único componente expuesto —todo lo demás (GameServer, base de datos, panel web administrativo) debe quedar detrás de él, inaccesible directamente desde internet.

¿Cómo se comunica el GameServer con la base de datos si están en segmentos diferentes?

A través de una regla de firewall específica que libera solo el puerto de la base de datos (ej. 1433 para MSSQL, 3306 para MySQL) y solo desde la IP interna del GameServer, nunca abierta a la red pública ni a otros segmentos. Esa es exactamente la definición de segmentación: comunicación permitida solo entre puntos específicos, con todo lo demás bloqueado por defecto.

¿La segmentación de red reemplaza el backup y otras prácticas de seguridad?

No. La segmentación reduce la superficie de ataque, pero debe combinarse con backups regulares, actualizaciones de seguridad del sistema operativo, contraseñas fuertes y monitoreo de logs. Es una capa de defensa, no la única.

RO
Fundador y editor jefe

Rodrigo mantiene ViciadosMU desde los inicios del portal. Especialista en creación y administración de servidores de MU Online, historia del juego y la evolución de las seasons — escribió buena parte del archivo antes de 2024.

Sigue leyendo

Artículos relacionados