Descubre cómo utilizar el servidor web Nginx para bloquear ciertos ataques DDoS mediante una configuración segura. Este enfoque ayudará a tu servidor a protegerse contra ataques DDoS frecuentes. Mejorando la configuración de Nginx, puedes proteger tu servidor contra varios tipos de ataques.
OuiHeberg ofrece protección Anti-DDoS gratuita contra ciertos ataques dirigidos. Al utilizar nuestros servidores VPS o dedicados, obtendrás protección Anti-DDoS sin costos adicionales. Sin embargo, las capacidades de mitigación, los métodos utilizados y el filtrado pueden variar según la ubicación que elijas.
Requisitos previos
- Nginx : Asegúrate de tener Nginx instalado en tu servidor.
- Conocimientos básicos : Debes estar familiarizado con los comandos básicos de Linux y saber cómo acceder a los archivos de configuración de Nginx.
- Servidor VPS o dedicado : Un servidor virtual privado o dedicado, o una máquina virtual en tu host local.
- Protección DDoS : Tu proveedor de alojamiento debe ofrecer alguna forma de protección DDoS para poder mitigar ataques más sofisticados.
- Linux : Cualquier distribución compatible con Nginx.
Limitaciones
Esta guía no es una solución completa para defenderse contra todos los ataques DDoS. Probablemente ayudará a mitigar algunos ataques comunes y a mantener tu servidor operativo. Sin embargo, para algunos ataques DDoS complejos, es necesario que tu proveedor de alojamiento ofrezca una protección DDoS adecuada para bloquearlos y prevenirlos. Esta configuración no puede proteger contra todas las formas de ataques en tu servidor; está diseñada para prevenir y bloquear ciertos tipos de ataques, pero no será efectiva sin la protección DDoS de tu proveedor.
Advertencia
OuiHeberg te desaconseja aplicar esta configuración directamente en tu servidor de producción sin haberla probado previamente. Declinamos toda responsabilidad por los posibles problemas que esto pueda causar. Asegúrate de seguir las buenas prácticas en seguridad de servidores y realiza copias de seguridad antes de cualquier modificación, en caso de que sea necesaria una restauración. Consulta la documentación de Nginx sobre la protección DDoS para comprender bien su funcionamiento.
Fortalecer Nginx para prevenir ataques DDoS
Para proteger Nginx contra ataques DDoS y fortalecer su resistencia contra ataques comunes, es necesario implementar diversas estrategias de mitigación y prevención. Aquí te mostramos cómo configurar Nginx para mejorar su seguridad:
1. Actualizar Nginx
Asegúrate de estar utilizando la versión estable más reciente de Nginx para aprovechar las correcciones de seguridad y las últimas mejoras.
2. Limitar las conexiones
Utiliza el módulo limit_conn para restringir el número de conexiones provenientes de una misma dirección IP. Esto ayuda a prevenir ataques DDoS que intentan saturar tu servidor con un gran número de conexiones simultáneas.
http {
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=1r/s;
server {
limit_req zone=req_limit_per_ip burst=5;
# Otras configuraciones del servidor...
}
}
3. Gestión de listas blancas y negras de IP
Utiliza las directivas allow y deny para permitir direcciones IP confiables y bloquear las maliciosas.
http {
# Permitir direcciones IP de confianza
allow 192.168.1.0/24;
deny all;
# Otras configuraciones del servidor...
}
4. Instalar un firewall de aplicaciones web (WAF)
Integra módulos de terceros como ModSecurity con Nginx para detectar y bloquear tráfico HTTP malicioso.
5. Activar HTTPS
Utiliza HTTPS para cifrar las comunicaciones entre los clientes y el servidor, lo que previene la interceptación de datos y los ataques de tipo hombre en el medio.
6. Desactivar módulos no utilizados
Desactiva los módulos de Nginx que no necesitas para reducir la superficie de ataque y optimizar el rendimiento.
./configure --without-http_autoindex_module --without-http_ssi_module
7. Optimizar la configuración de Nginx
Ajusta los parámetros de configuración de Nginx, como los procesos de trabajo, las conexiones de trabajo y los tiempos de espera, según los recursos hardware de tu servidor y el volumen de tráfico anticipado.
8. Monitoreo y registro
Revisa regularmente los logs del servidor para detectar cualquier actividad sospechosa y establece sistemas de alerta para informar a los administradores sobre posibles ataques.
9. Utilizar servicios de protección DDoS
Considera utilizar servicios o dispositivos especializados en protección DDoS antes de Nginx, como Cloudflare, AWS Shield o Akamai.
10. Realizar copias de seguridad regulares
Asegúrate de hacer copias de seguridad con frecuencia de los datos esenciales para minimizar los impactos en caso de ataques exitosos.
No olvides que la seguridad es un proceso continuo. Es fundamental mantenerse informado sobre las últimas amenazas y las mejores prácticas en seguridad para proteger eficazmente tu servidor contra posibles ataques.
Configuración de protección DDoS para Nginx
Aquí tienes una configuración que puedes agregar a tu archivo nginx.conf para reforzar la seguridad:
# Definir una zona para rastrear las conexiones de cada IP
http {
limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
# Definir una zona para rastrear las solicitudes de cada IP
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=10r/s;
server {
listen 80;
server_name example.com;
# Limitar la tasa de solicitudes
limit_req zone=req_limit_per_ip burst=20;
# Limitar el número máximo de conexiones desde una sola IP
limit_conn conn_limit_per_ip 20;
# Rechazar solicitudes con cuerpos de solicitud grandes para mitigar ciertos tipos de ataques
client_body_buffer_size 1k;
client_header_buffer_size 1k;
client_max_body_size 1k;
large_client_header_buffers 2 1k;
# Activar la compresión Gzip para ahorrar ancho de banda
gzip on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_proxied any;
gzip_vary on;
add_header X-XSS-Protection "1; mode=block";
add_header X-Frame-Options "SAMEORIGIN";
add_header Referrer-Policy "same-origin";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# Bloque les User-Agents vulnérables courants
if ($http_user_agent ~* (wget|curl) ) {
return 403;
}
# Bloque l'accès aux fichiers cachés
location ~ /\. {
deny all;
}
# Bloque l'accès à certains types de fichiers
location ~* \.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|^#.*#$|\.php_ {
deny all;
return 403;
}
# Mettre en liste blanche votre IP pour l'accès à l'administration
location /admin {
allow votre_ip_admin;
deny all;
}
# Interdire l'accès à certains répertoires
location ~ /(system|vendor) {
deny all;
return 403;
}
# Proxy pour transférer les requêtes à votre serveur d'application
location / {
proxy_pass http://votre_serveur_backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
Esta configuración realiza las siguientes acciones:
- Límite de velocidad : Restringe cada dirección IP a 10 solicitudes por segundo con una ráfaga permitida de 20 solicitudes.
- Límite de conexiones : Limita cada dirección IP a un máximo de 20 conexiones simultáneas.
- Límite de tamaño del cuerpo de las solicitudes : Restringe el tamaño de los cuerpos de las solicitudes para mitigar los ataques que envían grandes cantidades de datos.
- Compresión Gzip : Activa la compresión gzip para ahorrar ancho de banda.
- Encabezados de seguridad : Agrega encabezados para reforzar la seguridad.
- Bloqueo de User-Agents vulnerables : Bloquea las solicitudes provenientes de User-Agents comúnmente utilizados para actividades maliciosas.
- Bloqueo de archivos ocultos : Prohíbe el acceso a archivos y directorios ocultos.
- Lista blanca para acceso admin : Permite únicamente que su dirección IP acceda al área de administración.
- Prohibición de acceso a ciertos directorios : Bloquea el acceso a directorios sensibles como
systemyvendor. - Proxy Pass : Transfiere las solicitudes a su servidor de aplicación.
Asegúrese de adaptar esta configuración según sus necesidades específicas, especialmente los nombres de dominio, las direcciones del servidor backend y las direcciones IP para la administración. Además, monitoree regularmente los registros de su servidor y ajuste las configuraciones según la evolución de las amenazas.
Cómo integrar esta configuración en Nginx
Aquí están los pasos a seguir para agregar esta configuración:
-
Localice el archivo
nginx.conf: Según su instalación, el archivonginx.confpuede estar ubicado en diferentes lugares, como/etc/nginx/nginx.conf,/usr/local/nginx/conf/nginx.confo/etc/nginx/sites-available/default. -
Abra el archivo
nginx.conf: Utilice un editor de texto o un editor de línea de comandos comonano,vimoemacspara abrir el archivo. -
Agregue la configuración en el bloque
http: Dentro del bloquehttp, que define los parámetros del servidor HTTP, inserte la configuración proporcionada. Este bloque suele estar cerca del inicio del archivonginx.conf. -
Inserte la configuración proporcionada : Pegue toda la configuración anterior dentro del bloque
http. Asegúrese de reemplazar los valores predeterminados comoexample.com,votre_ip_adminyvotre_serveur_backendcon su información específica. -
Guarde y cierre el archivo : Después de integrar la configuración, guarde los cambios y cierre el editor.
-
Verifique la configuración de Nginx : Antes de reiniciar Nginx, se recomienda probar la configuración para detectar posibles errores de sintaxis ejecutando :
nginx -tSi todo está correcto, recibirá un mensaje indicando que la prueba del archivo de configuración fue exitosa.
-
Reinicie Nginx : Para aplicar los cambios, reinicie Nginx con el comando :
sudo service nginx restartSi no está utilizando
systemd, es posible que deba usar otro comando para reiniciar Nginx.
Siguiendo estos pasos, integrará la configuración propuesta en su servidor Nginx, fortaleciendo así su seguridad con protección DDoS y otras medidas de seguridad. Esta guía le ayudará a prevenir ataques DDoS en Nginx configurándolo correctamente.
OuiHeberg se compromete a ofrecerle las mejores soluciones para asegurar sus servicios en línea. No dude en contactarnos si tiene alguna pregunta o necesita asistencia adicional.

