Cómo proteger su VPS de ataques DDoS: Guía práctica
Guía completa sobre la protección de su VPS de ataques DDoS usando firewalls, limitación de velocidad y otros métodos probados.

Los ataques DDoS (Denegación de servicio distribuida) pueden dejar su servidor fuera de línea en minutos, llevando a pérdida de ingresos, insatisfacción del cliente y daño a la reputación. En 2026, tales ataques se han vuelto más sofisticados y accesibles. Afortunadamente, los métodos de protección modernos también han evolucionado. Esta guía le mostrará cómo proteger su VPS Hiddence de los tipos más comunes de ataques DDoS.
¿Qué es un ataque DDoS?
Un ataque DDoS ocurre cuando múltiples computadoras (botnet) envían simultáneamente solicitudes a su servidor, abrumando sus recursos y haciéndolo no disponible para usuarios legítimos.
Tipos principales de ataques DDoS
- Ataques volumétricos (L3/L4): Inundación UDP, ICMP, inundación SYN — abruman el ancho de banda de red
- Ataques de capa de aplicación (L7): Inundación HTTP, Slowloris — apuntan a la capa de aplicación
- Ataques de protocolo: Explotan vulnerabilidades en protocolos de red
Protección integrada de Hiddence
Todos los VPS Hiddence incluyen protección básica DDoS de capa 3-4 (nivel de red). Esto filtra automáticamente la mayoría de los ataques volumétricos. Sin embargo, los ataques de capa 7 (aplicación) requieren configuración adicional.
Paso 1: Configuración del firewall
La primera línea de defensa es la configuración adecuada del firewall. UFW (Uncomplicated Firewall) es una herramienta simple y efectiva para Ubuntu/Debian.
# Instalar UFW
sudo apt update && sudo apt install ufw -y
# Permitir SSH (¡IMPORTANTE! Haga esto antes de habilitar UFW)
sudo ufw allow 22/tcp
# Permitir HTTP y HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Habilitar UFW
sudo ufw enable
# Comprobar estado
sudo ufw status verbose
# Reglas de protección avanzadas:
# Limitar conexiones SSH (protección contra fuerza bruta)
sudo ufw limit 22/tcp
# Bloquear inundaciones de ping ICMP
sudo nano /etc/ufw/before.rules
# Añadir después de *filter:
-A ufw-before-input -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
-A ufw-before-input -p icmp --icmp-type echo-request -j DROP
# Protección contra inundación SYN
sudo nano /etc/sysctl.conf
# Añadir:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5
# Aplicar cambios
sudo sysctl -pPaso 2: Instalar Fail2Ban
Fail2Ban bloquea automáticamente direcciones IP que muestran actividad sospechosa (múltiples intentos de inicio de sesión fallidos, escaneo de puertos).
# Instalar
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# Configuración para protección SSH y HTTP
# Crear configuración local
sudo nano /etc/fail2ban/jail.local
# Añadir:
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
banaction = ufw
[sshd]
enabled = true
port = 22
logpath = /var/log/auth.log
[nginx-http-auth]
enabled = true
filter = nginx-http-auth
port = http,https
logpath = /var/log/nginx/error.log
[nginx-limit-req]
enabled = true
filter = nginx-limit-req
port = http,https
logpath = /var/log/nginx/error.log
# Reiniciar Fail2Ban
sudo systemctl restart fail2ban
# Comprobar estado
sudo fail2ban-client statusPaso 3: Protección Nginx
Si está usando Nginx, configure limitación de velocidad para proteger contra ataques de inundación HTTP.
sudo nano /etc/nginx/nginx.conf
# Añadir al bloque http:
http {
# Límite de solicitudes: 10 solicitudes por segundo por IP
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
# Límite de conexión
limit_conn_zone $binary_remote_addr zone=addr:10m;
# Protección Slowloris
client_body_timeout 10s;
client_header_timeout 10s;
keepalive_timeout 5s 5s;
send_timeout 10s;
# Resto de configuración...
}
# En bloque servidor añadir:
server {
location / {
# Aplicar límite de solicitudes
limit_req zone=one burst=20 nodelay;
# Límite de conexión: máximo 10 por IP
limit_conn addr 10;
# Su configuración...
}
}
# Probar configuración y recargar
sudo nginx -t
sudo systemctl reload nginxPaso 4: Usar CDN
Para máxima protección, use un servicio CDN como Cloudflare. CDN actúa como proxy, ocultando la IP real de su servidor y absorbiendo la mayoría de los ataques DDoS. Beneficios: ocultar IP real, filtrado automático de tráfico malicioso, distribución de carga, SSL/TLS gratuito, WAF para protección L7.
- Regístrese en cloudflare.com (plan gratuito disponible)
- Añada su dominio y cambie registros NS en su registrador
- Habilite modo 'Proxy' (nube naranja) para registros DNS
- Establezca modo SSL a 'Completo (estricto)' en sección SSL/TLS
- Habilite 'Protección DDoS' y 'Modo de lucha contra bots' en configuración de seguridad
Paso 5: Monitoreo
El monitoreo regular ayuda a detectar ataques temprano.
# Monitorear conexiones activas
watch -n 1 'ss -s'
# Ver IPs principales por conteo de conexión
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
# Ver registros en tiempo real
sudo tail -f /var/log/nginx/access.log
sudo journalctl -u nginx -f
# Comprobar IPs bloqueadas en Fail2Ban
sudo fail2ban-client status sshdMedidas de emergencia
Si un ataque ya está en curso, tome las siguientes medidas:
- Identificar la fuente: Use 'netstat' o registros para identificar IPs atacantes
- Bloqueo temporal: sudo ufw insert 1 deny from IP_ATACANTE
- Bloquear subredes enteras: sudo ufw deny from 123.45.0.0/16
- Limitar límite de velocidad: Reduzca temporalmente límites de Nginx a 1-5 req/s
- Contactar soporte: Comuníquese con soporte Hiddence para activación de protección avanzada
- Habilite 'Modo bajo ataque' en Cloudflare (si está usando)
Mejores prácticas
- Nunca publique la IP real de su servidor si usa CDN
- Actualice regularmente el sistema: sudo apt update && sudo apt upgrade
- Use claves SSH en lugar de contraseñas para acceso al servidor
- Cambie puerto SSH por defecto (22) a uno no estándar
- Configure copias de seguridad automáticas para recuperación rápida
- Use IPs separadas para servicios críticos
- Habilite registro y revise regularmente registros para actividad sospechosa
- Considere usar bloqueo geográfico si su servicio no es global