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-Content-Type-Options "nosniff";
        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 system y vendor.
  • 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:

  1. Localice el archivo nginx.conf : Según su instalación, el archivo nginx.conf puede estar ubicado en diferentes lugares, como /etc/nginx/nginx.conf, /usr/local/nginx/conf/nginx.conf o /etc/nginx/sites-available/default.

  2. Abra el archivo nginx.conf : Utilice un editor de texto o un editor de línea de comandos como nano, vim o emacs para abrir el archivo.

  3. Agregue la configuración en el bloque http : Dentro del bloque http, que define los parámetros del servidor HTTP, inserte la configuración proporcionada. Este bloque suele estar cerca del inicio del archivo nginx.conf.

  4. Inserte la configuración proporcionada : Pegue toda la configuración anterior dentro del bloque http. Asegúrese de reemplazar los valores predeterminados como example.com, votre_ip_admin y votre_serveur_backend con su información específica.

  5. Guarde y cierre el archivo : Después de integrar la configuración, guarde los cambios y cierre el editor.

  6. Verifique la configuración de Nginx : Antes de reiniciar Nginx, se recomienda probar la configuración para detectar posibles errores de sintaxis ejecutando :

    nginx -t

    Si todo está correcto, recibirá un mensaje indicando que la prueba del archivo de configuración fue exitosa.

  7. Reinicie Nginx : Para aplicar los cambios, reinicie Nginx con el comando :

    sudo service nginx restart

    Si 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.