Plan de Respuesta a DDoS en Capas para Servidores de MU Online
Arma un plan de respuesta a ataques DDoS en capas para tu servidor de MU Online, desde el filtrado en el borde de red hasta la comunicación con los jugadores durante el incidente, con métricas y checklist de activación.
Un ataque de denegación de servicio distribuido (DDoS) es, para la mayoría de los administradores de servidores de MU Online, una cuestión de cuándo, no de si ocurrirá. La competencia entre proyectos, los rencores con jugadores baneados e incluso los ataques por diversión hacen de los puertos del Ga
Un ataque de denegación de servicio distribuido (DDoS) es, para la mayoría de los administradores de servidores de MU Online, una cuestión de cuándo, no de si ocurrirá. La competencia entre proyectos, los rencores con jugadores baneados e incluso los ataques por diversión hacen de los puertos del GameServer y ConnectServer blancos frecuentes. La diferencia entre un servidor que sobrevive a estos ataques con la credibilidad intacta y uno que pierde su base de jugadores está en tener un plan de respuesta en capas preparado antes del incidente, no improvisado durante él. Este tutorial presenta un plan estructurado en cinco capas de defensa, los roles de cada persona del equipo durante el ataque, y los pasos de comunicación con la comunidad, todo pensado para la realidad de servidores privados de tamaño mediano.
Por qué los servidores de MU son blancos frecuentes
MU Online privado tiene una dinámica competitiva poco común: los servidores compiten directamente por la misma base de jugadores, y los rankings de población mueven ingresos por donaciones. Esto crea un incentivo real para el sabotaje. Además, los jugadores baneados por hacer trampa o por comportamiento tóxico a menudo tienen el conocimiento técnico suficiente para contratar "boosters" (servicios de stress/DDoS) baratos y disponibles públicamente. Los eventos de lanzamiento, los reinicios de temporada y los fines de semana con eventos pagos son los momentos de mayor riesgo, porque es cuando el daño de un ataque se maximiza.
Las cinco capas de defensa
La idea central de un plan "en capas" es que ninguna capa por sí sola resuelve todo; cada una cubre un tipo de ataque diferente y reduce la superficie que llega a la siguiente capa.
| Capa | Qué protege | Herramienta típica |
|---|---|---|
| 1. Borde de red (upstream) | Volumétrico (UDP flood, amplificación) | Protección del datacenter/proveedor (OVH, Voxility, Path.net) |
| 2. Proxy de juego | Puertos TCP del GameServer/ConnectServer | Proxy dedicado con scrubbing (TCPShield, Iptables anycast) |
| 3. Firewall local | Conexiones anómalas por IP | iptables/ipset, fail2ban, limitación de SYN |
| 4. Aplicación (emulador) | Flood de login/paquetes malformados | Límite de tasa en el ConnectServer, filtro de protocolo |
| 5. Comunicación y operación | Percepción de la comunidad | Página de estado, Discord, plan de compensación |
Capa 1 — Protección en el borde de red (upstream)
Esta es la defensa contra ataques volumétricos (cientos de Mbps a varios Gbps), que tu servidor nunca podrá absorber por sí solo, sin importar el firewall local. La solución es contratar hosting con anti-DDoS incluido en la capa de red: proveedores como OVH (con el "Game" anti-DDoS), Voxility o servicios de scrubbing dedicados a juegos. La configuración típica implica anunciar tu IP vía BGP a través del proveedor de protección, que filtra el tráfico malicioso antes de enrutar el tráfico limpio hasta tu servidor real.
Un error común es pensar que un VPS genérico de nube (sin anti-DDoS de juego) resuelve el problema solo porque tiene "protección DDoS básica"; esa protección generalmente cubre HTTP/HTTPS, no el tráfico de juego en puertos personalizados como 44405 (ConnectServer) o 55901+ (GameServer).
Capa 2 — Proxy de juego dedicado
Entre internet y tu GameServer real, coloca un proxy que absorba y filtre las conexiones antes de pasarlas al servidor de juego. Esto oculta la IP real de tu servidor (dificultando ataques dirigidos) y permite cortar conexiones sospechosas sin sobrecargar el proceso del emulador. Una configuración común usa iptables con una IP de proxy inverso en un VPS barato dedicado solo a esa función, redirigiendo con DNAT:
# Ejemplo simplificado de DNAT para redirigir el tráfico del proxy al servidor real
iptables -t nat -A PREROUTING -p tcp --dport 44405 -j DNAT --to-destination 10.0.0.5:44405
iptables -t nat -A POSTROUTING -j MASQUERADE
Si el proxy cae bajo ataque, cambias la IP pública y actualizas el DNS/launcher rápidamente; el servidor real nunca queda expuesto directamente.
Capa 3 — Firewall local y limitación de conexiones
Aunque tengas protección upstream, configura límites locales para contener ataques de menor escala (flood de conexiones, intentos masivos de login). Un ejemplo de regla con iptables limitando nuevas conexiones por IP en el puerto del ConnectServer:
iptables -A INPUT -p tcp --dport 44405 -m connlimit --connlimit-above 10 -j DROP
iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 5 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP
Complementa con fail2ban monitoreando los logs del ConnectServer para banear IPs que intenten autenticación repetida en un intervalo corto, un patrón común tanto de bots de cuentas como de pruebas de flood.
Capa 4 — Ajustes en la aplicación (emulador)
La mayoría de los emuladores (IGCN, MuEMU, X-Team) tienen parámetros de límite de paquetes por segundo y de conexiones simultáneas por IP en el ConnectServer. Actívalos aunque el valor predeterminado parezca suficiente; en un ataque real, el volumen de conexiones falsas puede saturar el proceso antes de que el firewall reaccione. Configura también un límite de intentos de login por IP por minuto, para impedir que un ataque de flood de autenticación derribe la base de datos de cuentas.
Roles del equipo durante el incidente
Un ataque real dura desde minutos hasta días; tener roles definidos evita decisiones de pánico.
| Rol | Responsabilidad | Cuándo actúa |
|---|---|---|
| Responsable de infraestructura | Activa las capas 1-3, contacta al proveedor/anti-DDoS | Inmediatamente al detectar el ataque |
| Responsable del emulador | Ajusta los límites de la capa 4, reinicia servicios trabados | En paralelo, si el servidor de juego se cuelga |
| Comunicación/Community Manager | Publica el estado en el Discord/página de estado | Cada 15-30 min durante el incidente |
| Administrador general | Decide sobre la compensación y prioriza recursos | Durante y después del incidente |
Playbook de activación paso a paso
- Detectar: el monitoreo señala un pico inusual de ancho de banda/conexiones (idealmente con alerta automática vía Zabbix, Grafana o un script simple de umbral).
- Confirmar: diferenciar un DDoS real de un pico legítimo de jugadores (ej.: lanzamiento con fila grande) revisando las IPs de origen y el patrón de tráfico.
- Aislar: si el proxy de juego (capa 2) está activo, cambiar la IP pública expuesta y actualizar el launcher/DNS.
- Escalar: abrir un ticket con el proveedor de anti-DDoS informando la IP atacada y la firma del ataque, si es identificable.
- Comunicar: publicar en el canal de estado el primer mensaje dentro de los 10 minutos del inicio percibido.
- Mitigar localmente: aplicar reglas temporales de firewall más agresivas (capa 3) mientras se estabiliza la mitigación upstream.
- Monitorear la recuperación: confirmar la caída del tráfico malicioso antes de reabrir totalmente el acceso.
- Registrar: documentar la duración, el vector de ataque y las acciones tomadas para el post-mortem.
Métricas para monitorear continuamente
| Métrica | Herramienta sugerida | Umbral de alerta sugerido |
|---|---|---|
| Ancho de banda de entrada (Mbps) | Panel del proveedor / vnstat | 3x el promedio histórico |
| Conexiones simultáneas por IP | netstat/ss + script de conteo | Por encima de 15-20 |
| Latencia interna (ping al GameServer) | Script de ping programado | Por encima de 200ms sostenido |
| Tasa de desconexión de jugadores | Log del ConnectServer | Pico anormal en 5 min |
| CPU/red del proceso del emulador | htop / monitoreo de procesos | Por encima de 85% sostenido |
Comunicación con la comunidad durante el ataque
Nunca dejes que el silencio sea el mensaje predeterminado. Los jugadores toleran mucho mejor la inestabilidad técnica que la sensación de abandono. Ten un canal de estado fuera de la infraestructura potencialmente atacada: un webhook de Discord publicando en un canal fijo, o una página de estado en un servicio externo (ej.: un status.io o una página estática alojada en otro proveedor). Publica actualizaciones regulares aunque no haya novedades concretas: "ataque en mitigación, proveedor contactado, sin previsión exacta" ya reduce la ansiedad y evita rumores de "el servidor cerró".
Plan de compensación posterior al incidente
Para servidores con sistema de VIP o paquetes pagos, define de antemano la política de compensación; esto evita decisiones improvisadas bajo la presión de jugadores insatisfechos. Una escala común:
| Duración de la caída | Compensación sugerida |
|---|---|
| Hasta 1 hora | Ninguna acción formal, aviso en Discord |
| 1 a 4 horas | Extensión del VIP por el tiempo de caída |
| 4 a 12 horas | Extensión del VIP + ítem simbólico de evento |
| Más de 12 horas | Extensión del VIP + compensación en Zen/Jewel + comunicado formal |
Post-mortem y prevención de recurrencia
Después de cada incidente relevante, produce un resumen breve (aunque sea interno) con: hora de inicio/fin, vector identificado, capas que funcionaron, capas que fallaron y acciones de mejora. Los servidores que sufren ataques recurrentes del mismo agente deben considerar medidas adicionales como whitelisting geográfico temporal o una alianza con un proveedor de anti-DDoS más robusto; el costo de la mejora suele ser menor que el de otro incidente prolongado.
Errores comunes y soluciones
| Síntoma | Causa probable | Solución |
|---|---|---|
| El servidor cae aunque haya anti-DDoS contratado | La protección cubre solo HTTP, no los puertos de juego | Contratar anti-DDoS específico para puertos TCP/UDP de juego |
| El firewall local no evita el lag durante el ataque | El ataque volumétrico satura el enlace antes de que el firewall filtre | Depender de la capa 1 (upstream); el firewall local no resuelve la volumetría |
| Los jugadores acusan al servidor de "estar caído por incompetencia" | Falta de comunicación proactiva durante el incidente | Publicar estado cada 15-30 min en un canal externo |
| La IP real del servidor queda expuesta y es atacada repetidamente | Ausencia de un proxy de juego dedicado | Implementar la capa 2 y cambiar la IP expuesta tras el incidente |
| La base de datos de cuentas se traba durante el ataque | Flood de intentos de login sin límite | Configurar límite de intentos por IP en el ConnectServer |
Checklist de preparación para respuesta a DDoS
- Contrato de anti-DDoS de capa de red específico para juegos activo.
- Proxy de juego dedicado configurado y probado.
- Reglas de firewall local (connlimit, rate limit) aplicadas en los puertos críticos.
- Límites de conexión/login configurados en el ConnectServer.
- Roles del equipo definidos y documentados.
- Canal de estado externo a la infraestructura principal creado.
- Política de compensación posterior al incidente definida antes del primer ataque.
- Proceso de post-mortem documentado para cada incidente relevante.
Con el plan en capas armado, el siguiente paso es revisar la resiliencia general de tu infraestructura, incluyendo backups y failover, para que un ataque no sea el único escenario de riesgo cubierto. Consulta también el tutorial de creación de servidor de MU Online para revisar la base de infraestructura sobre la que debe construirse este plan de respuesta.
Preguntas frecuentes
¿Cuál es la primera señal de un ataque DDoS en el servidor de MU?
Generalmente es lag repentino y generalizado, desconexiones masivas (error '10054' o timeout) y picos de tráfico en la interfaz de red sin un aumento correspondiente de jugadores en línea. El monitoreo de ancho de banda y de conexiones simultáneas por IP es la primera alerta, incluso antes de que los jugadores se quejen.
¿La protección anti-DDoS de Cloudflare resuelve todo por sí sola?
Resuelve buena parte del tráfico HTTP/web (sitio, panel, launcher), pero el protocolo de juego de MU corre en TCP/UDP directo en los puertos del GameServer y ConnectServer, que no pasan por el proxy HTTP de Cloudflare. Para esos puertos necesitas un proxy de juego dedicado (ej.: OVH Game, TCPShield o túnel GRE) o un proveedor con anti-DDoS en la capa de red.
¿Vale la pena pagar por protección anti-DDoS antes de sufrir el primer ataque?
Sí, es la recomendación de este tutorial. Los servidores de MU son blancos recurrentes de ataques motivados por rivalidad entre proyectos o jugadores insatisfechos. Contratar la protección de forma preventiva cuesta una fracción de la pérdida por horas de caída en un lanzamiento o evento pago.
¿Cómo aviso a los jugadores durante un ataque sin que parezca que el servidor cayó definitivamente?
Ten un canal de estado fuera de la infraestructura atacada: un Discord con bot propio, una página de estado alojada en otro proveedor, o una cuenta de Twitter/X dedicada. Publica actualizaciones cada 15-30 minutos aunque el mensaje sea solo 'ataque en mitigación, sin previsión exacta'.
¿Debo compensar a los jugadores después de un ataque DDoS prolongado?
Es una práctica común y recomendada para servidores con VIP/donación: extender la vigencia de los paquetes VIP por el tiempo de caída, o distribuir un ítem de compensación simbólico. Esto preserva la confianza de la comunidad incluso cuando el problema no fue causado por un fallo del administrador.