Seguridad y protección para servidores Minecraft
Guía completa para proteger tu servidor Minecraft contra ataques, griefing, exploits y accesos no autorizados. Firewall, anti-cheat, backups y más.
Tabla de contenidos
Introducción
La seguridad de un servidor Minecraft no es opcional. Desde jugadores malintencionados hasta bots de ataque DDoS, hay múltiples amenazas que pueden arruinar tu servidor. En esta guía cubriremos todas las capas de protección necesarias: desde el firewall del sistema hasta plugins anti-exploit y estrategias de backup.
1. Seguridad del sistema (VPS/Linux)
Firewall con UFW
El firewall es tu primera línea de defensa. Solo debe permitir tráfico en los puertos necesarios:
# Configuración básica
ufw default deny incoming
ufw default allow outgoing
# Puertos esenciales
ufw allow 2222/tcp # SSH (puerto personalizado, no 22)
ufw allow 25565/tcp # Minecraft
ufw allow 25575/tcp # RCON (solo desde IPs específicas si es posible)
# Rate limiting para SSH (evita fuerza bruta)
ufw limit 2222/tcp
# Habilitar firewall
ufw --force enable
ufw status numbered
SSH seguro
# /etc/ssh/sshd_config
Port 2222 # Puerto no estándar
PermitRootLogin prohibit-password # No permitir root con contraseña
PasswordAuthentication no # Solo claves SSH
PubkeyAuthentication yes
AllowUsers minecraft # Solo un usuario específico
MaxAuthTries 3 # Máximo 3 intentos
ClientAliveInterval 60 # Timeout de inactividad
ClientAliveCountMax 3
# Aplicar cambios
sudo systemctl restart sshd
Fail2Ban para Minecraft
Fail2Ban analiza los logs del servidor y bloquea IPs que muestren comportamiento malicioso:
sudo apt install fail2ban
Crea un filtro para el servidor Minecraft:
sudo nano /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 3600
[minecraft]
enabled = true
logpath = /home/minecraft/server/logs/latest.log
maxretry = 5
bantime = 86400
findtime = 600
Monitoreo de recursos
# Instalar htop y netdata para monitoreo visual
sudo apt install htop netdata
# Ver procesos por uso de CPU/RAM
htop
# Monitorear conexiones de red activas
netstat -tunapl
# Ver intentos de conexión fallidos
sudo journalctl -u ssh | grep "Failed password"
2. Protección anti-exploit (Server Side)
Configuración de Paper
Paper incluye docenas de parches de seguridad. Estos son los ajustes más importantes:
# paper.yml
anticheat:
anti-xray:
enabled: true
engine-mode: 2 # Modo 2 es más seguro
hidden-blocks:
- chest
- diamond_ore
- ancient_debris
- deepslate_diamond_ore
- emerald_ore
- gold_ore
- iron_ore
- lapis_ore
- redstone_ore
- coal_ore
- copper_ore
- nether_gold_ore
- nether_quartz_ore
settings:
packet-limiter:
all:
action: KICK_MESSAGE
interval: 7.0
max-packet-rate: 1000.0
overrides:
ServerboundPlaceRecipePacket:
action: DROP
interval: 4.0
max-packet-rate: 5.0
book-size:
page-max: 2560
total-multiplier: 0.98
spam-limiter:
tab-spam-increment: 1
tab-spam-limit: 15
Plugins anti-exploit esenciales
| Plugin | Protege contra |
|---|---|
| ExploitFixer | Dupe glitches, crash exploits, inventory hacks |
| PacketLimiter | Lag machines, packet spam, BookBan |
| AntiCrash | Crash exploits, invalid items, NBT exploits |
| IllegalStack | Items apilados ilegalmente, enchanted items inválidos |
| Grim | Anti-cheat (movimiento, combate, reach) |
Configuración de ExploitFixer
# config.yml
exploits:
command-spam:
enabled: true
max-commands: 10
time: 5 # 10 comandos en 5 segundos = kick
book-exploit:
enabled: true
max-pages: 50
max-characters: 5000
sign-exploit:
enabled: true
max-characters: 100
invalid-names:
enabled: true
pattern: "^[a-zA-Z0-9_]{3,16}$"
crash-exploits:
enabled: true
dupe-exploits:
enabled: true
3. Anti-cheat: Grim
Grim es un anti-cheat open-source enfocado en precisión y rendimiento. Detecta flight, speed, killaura, reach, scaffold y muchos más.
Instalación
cd ~/server/plugins
wget https://github.com/GrimAnticheat/Grim/releases/latest/download/Grim.jar
sudo systemctl restart minecraft
Configuración básica
# config.yml
alerts:
enabled: true
notify-permissions: "grim.alerts"
verbose: false
punishments:
kick-on-flag: false # No expulsar inmediatamente
ban-on-flag: false # Configurar después de pruebas
checks:
reach:
enabled: true
max-reach: 3.0
threshold: 5
killaura:
enabled: true
threshold: 10
fly:
enabled: true
threshold: 7
speed:
enabled: true
threshold: 8
scaffold:
enabled: true
threshold: 5
nuker:
enabled: true
threshold: 3
Comandos útiles
/grim alerts — Activa/desactiva alertas
/grim profile <jug> — Ver perfil de un jugador
/grim debug <check> — Activa debug de un check específico
/grim logs <jug> — Historial de infracciones
/grim reload — Recarga configuración
Buenas prácticas con anti-cheat
- Empieza en modo alerta — No castigues automáticamente al principio
- Analiza los falsos positivos — Algunos jugadores con buena conexión pueden saltar checks
- Ajusta thresholds — Cada servidor tiene una latencia base diferente
- Combínalo con supervisión manual — Los anti-cheat no son perfectos
4. Autenticación de jugadores
AuthMe Reloaded (para servidores offline)
Si tu servidor tiene online-mode=false (servidores crackeados), necesitas un sistema de autenticación:
# config.yml
registration:
enabled: true
force: true
max-players: 100
security:
min-password-length: 8
password-hash: "bcrypt"
auto-kick: true
sessions:
enabled: true
timeout: 300 # 5 minutos de sesión
limbo:
enabled: true
max-players: 50
Comandos de AuthMe
/login <contraseña> — Iniciar sesión
/register <pass> <pass> — Registrarse
/changepassword <old> <new> — Cambiar contraseña
/unregister <pass> — Desregistrarse
/authme purge <días> — Limpiar usuarios inactivos
Nota: Siempre que sea posible, usa
online-mode=true. Los servidores offline son inherentemente menos seguros.
5. Backups automáticos
Las copias de seguridad son tu seguro contra desastres. Un buen sistema de backups debe ser automático, frecuente y almacenarse en una ubicación diferente.
Script de backup con cron y rsync
#!/bin/bash
# /home/minecraft/scripts/backup.sh
BACKUP_DIR="/backups/minecraft"
WORLD_DIR="/home/minecraft/server"
DATE=$(date +%Y%m%d_%H%M%S)
RETENTION_DAYS=7
mkdir -p $BACKUP_DIR
# Backup del mundo (con compresión)
tar -czf "$BACKUP_DIR/world_$DATE.tar.gz" \
-C $WORLD_DIR world world_nether world_the_end
# Backup de configuración
tar -czf "$BACKUP_DIR/config_$DATE.tar.gz" \
-C $WORLD_DIR server.properties paper.yml spigot.yml bukkit.yml \
commands.yml permissions.yml plugins/*/config.yml
# Backup de la base de datos (si usas SQLite)
if [ -f "$WORLD_DIR/plugins/Essentials/userdata.db" ]; then
cp "$WORLD_DIR/plugins/Essentials/userdata.db" "$BACKUP_DIR/essentials_$DATE.db"
fi
# Eliminar backups antiguos
find $BACKUP_DIR -name "*.tar.gz" -mtime +$RETENTION_DAYS -delete
# Log
echo "[$(date)] Backup completado: world_$DATE.tar.gz ($(du -sh $BACKUP_DIR/world_$DATE.tar.gz | cut -f1))" >> $BACKUP_DIR/backup.log
Configurar cron para ejecución automática
# Editar crontab
crontab -e
# Backup cada 6 horas
0 */6 * * * /home/minecraft/scripts/backup.sh
# Backup diario a las 4 AM (más completo)
0 4 * * * /home/minecraft/scripts/backup.sh full
# Limpiar logs viejos cada semana
0 3 * * 0 find /home/minecraft/server/logs -name "*.log.gz" -mtime +14 -delete
Backup remoto (s3/rclone)
Para protección extra, almacena copias en un servicio externo:
# Usando rclone (configurar con Google Drive, S3, etc.)
rclone copy /backups/minecraft remote:minecraft-backups
# O via rsync a otro servidor
rsync -avz /backups/minecraft user@backup-server:/backups/
6. Protección DDoS básica
Cloudflare TCP (Recomendado)
Cloudflare ofrece protección DDoS gratuita para el tráfico TCP:
- Configura tu dominio con Cloudflare (DNS)
- Activa Cloudflare Spectrum (requiere plan Pro+)
- Redirige el tráfico de Minecraft a través de Cloudflare
Alternativa gratuita: TCPShield (tcp.shield).
TCPShield (Gratis)
TCPShield es un proxy DDoS específico para Minecraft:
- Regístrate en tcp.shield
- Configura tu servidor como backend
- Cambia la IP de tu servidor a la proporcionada por TCPShield
- Opcional: activa el modo BungeeCord para ver IPs reales
Configuración en el VPS
# Límites de conexión con iptables
# Límite de conexiones por IP
iptables -A INPUT -p tcp --syn --dport 25565 -m connlimit \
--connlimit-above 10 -j REJECT --reject-with tcp-reset
# Límite de paquetes por segundo (previene flood)
iptables -A INPUT -p tcp --dport 25565 -m limit \
--limit 1000/s -j ACCEPT
iptables -A INPUT -p tcp --dport 25565 -j DROP
7. Protección de recursos del sistema
Limitar recursos por proceso (systemd)
Añade estos límites al servicio de Minecraft:
# /etc/systemd/system/minecraft.service
[Service]
# Límites de recursos
CPUQuota=300% # Máximo 3 núcleos
MemoryMax=8G # Máximo 8GB de RAM
MemoryHigh=6G # Warning a los 6GB
TasksMax=200 # Máximo de procesos hijo
# Protección del sistema
ProtectSystem=strict
ProtectHome=true
PrivateTmp=true
NoNewPrivileges=true
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
Monitoreo con alertas
#!/bin/bash
# /home/minecraft/scripts/healthcheck.sh
THRESHOLD_TPS=18.0
THRESHOLD_MEM=80
WEBHOOK="https://discord.com/api/webhooks/tu_webhook"
# Verificar TPS
TPS=$(/home/minecraft/server/minecraft command "tps" | grep -oP '\d+\.\d+' | head -1)
if (( $(echo "$TPS < $THRESHOLD_TPS" | bc -l) )); then
curl -H "Content-Type: application/json" \
-d "{\"content\": \"⚠️ **ALERTA**: TPS bajo: $TPS\"}" \
$WEBHOOK
fi
# Verificar memoria
MEM=$(free | grep Mem | awk '{print $3/$2 * 100.0}')
if (( $(echo "$MEM > $THRESHOLD_MEM" | bc -l) )); then
curl -H "Content-Type: application/json" \
-d "{\"content\": \"⚠️ **ALERTA**: Memoria al $MEM%\"}" \
$WEBHOOK
fi
Rotación de logs
Los logs de Minecraft pueden crecer rápidamente. Configura rotación automática:
sudo nano /etc/logrotate.d/minecraft
/home/minecraft/server/logs/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
copytruncate
}
8. Permisos y control de acceso
LuckPerms: configuración de seguridad
# Configuración de permisos estrictos
# Grupos de staff con permisos mínimos necesarios
# Solo admins pueden usar comandos peligrosos
/lp group default permission set minecraft.command.stop false
/lp group default permission set minecraft.command.save-all false
/lp group default permission set minecraft.command.op false
/lp group default permission set minecraft.command.deop false
/lp group default permission set minecraft.command.ban false
/lp group default permission set minecraft.command.pardon false
/lp group default permission set minecraft.command.whitelist false
# Staff commands
/lp group helper permission set minecraft.command.kick true
/lp group helper permission set coreprotect.lookup true
/lp group mod permission set minecraft.command.ban true
/lp group mod permission set minecraft.command.pardon true
/lp group admin permission set "*"
Restricciones de comandos
# EssentialsX/config.yml
# Desactivar comandos peligrosos para no-admins
disabled-commands:
- /stop
- /reload
- /pl
- /plugins
- /bukkit:?
- /minecraft:?
- /me
- /tell
- /seed
- /debug
- /timings
Comandos blockeados recomendados
| Comando | Por qué bloquearlo |
|---|---|
/pl o /plugins | Revela tu stack de plugins a atacantes |
/seed | Revela la semilla del mundo |
/version | Revela la versión del servidor |
/me | Puede usarse para spam o exploits sociales |
/tell | Alternativa a /msg, difícil de moderar |
/calc | Posible vector de ataque (evalúa expresiones) |
9. Verificación de integridad
Plugins de monitoreo de archivos
| Plugin | Función |
|---|---|
| CoreProtect | Registra todos los cambios de bloques |
| LogBlock | Similar a CoreProtect, con más detalle |
| Prism | Registro y restauración de cambios |
| HawkEye | Registro avanzado con búsqueda web |
| OreAnnouncer | Notifica cuando alguien encuentra menas valiosas |
Auditoría de plugins
Revisa regularmente:
- Plugins desconocidos — Verifica que cada .jar en plugins/ sea legítimo
- Configuraciones modificadas — Comprueba si archivos de configuración cambiaron
- Usuarios no autorizados — Revisa el archivo ops.json y whitelist.json
- Logs sospechosos — Busca patrones de ataque
# Comandos de auditoría
find plugins/ -name "*.jar" -mtime -7 # Plugins modificados en los últimos 7 días
cat ops.json # Lista de operadores
cat banned-players.json # Jugadores baneados
journalctl -u minecraft | grep -i "exploit\|crash\|dupe" # Logs sospechosos
10. Plan de respuesta a incidentes
Si sospechas que tu servidor ha sido comprometido, sigue estos pasos:
Inmediato
- Guarda los logs — No los borres, serán evidencia
- Detén el servidor —
sudo systemctl stop minecraft - Cambia contraseñas — SSH, Discord, web hosting
- Revoca tokens — API keys, webhooks de Discord
Investigación
- Revisa los logs del servidor en busca de actividad sospechosa
- Usa CoreProtect para ver qué cambió y quién lo hizo
- Analiza plugins recién instalados (podrían tener backdoors)
- Verifica archivos de configuración modificados
Recuperación
- Rastrea el backup más reciente anterior al incidente
- Restaura el mundo y la configuración desde el backup
- NO reinstales plugins sospechosos
- Notifica a los jugadores del incidente (transparencia)
Conclusión
La seguridad de un servidor Minecraft es multicapa. No confíes en una sola medida: combina firewall de sistema, configuración de Paper, plugins anti-exploit, anti-cheat, backups y monitoreo constante.
Checklist de seguridad semanal:
- Revisar logs del servidor en busca de actividad sospechosa
- Verificar que los backups se están ejecutando correctamente
- Comprobar actualizaciones de Paper y plugins
- Analizar el uso de recursos (CPU, RAM, disco)
- Revisar la lista de operadores y admins
- Probar la restauración de un backup (al menos una vez al mes)
- Actualizar el sistema operativo (
apt update && apt upgrade) - Rotar logs viejos
Recuerda: Un servidor seguro es un servidor que da tranquilidad. Invertir tiempo en seguridad hoy te ahorrará dolores de cabeza mañana.
Revers Studio
7 de junio de 2026
Guías relacionadas
Configurar un proxy Velocity para tu red de servidores
Guía completa para instalar y configurar Velocity como proxy, conectar servidores backend, configurar forwarding y resolver problemas comunes.
ServidoresGestión de mundos en Minecraft
Aprende a gestionar múltiples mundos, pre-generar terreno, controlar bordes y optimizar el Nether y el End en tu servidor.
ServidoresCómo crear un servidor Minecraft desde cero
Guía paso a paso para montar tu propio servidor Minecraft con Paper en un VPS o dedicado. Desde la elección del hosting hasta la configuración inicial.