Nginx: regla de seguridad mod para ataque lento de DoS http

1

La única regla relacionada en mod-security para DoS lento es modsecurity_crs_11_slow_dos_protection , y es solo para Apache. ¿Hay alguna regla para Nginx?

    
pregunta Be1inda 27.11.2018 - 10:47
fuente

1 respuesta

1

Según mi conocimiento, NGINX no incluye nada como describir, pero podemos implementar el nuestro. Como entiendo Apache 2 modsecurity_crs_11_slow_dos_protection, limita el número de conexiones. NGINX tiene una página web, Cómo mitigar los ataques DDoS con NGINX y NGINX Más que menciona varios métodos para DDoS. Tres ideas de su sitio web vienen a la mente:

Limitar la tasa de solicitudes

  

Puede limitar la velocidad a la que NGINX y NGINX Plus aceptan las llamadas entrantes   Solicitudes a un valor típico para usuarios reales. Por ejemplo, usted podría   decide que un usuario real que accede a una página de inicio de sesión solo puede realizar una solicitud   cada 2 segundos Puede configurar NGINX y NGINX Plus para permitir una   Dirección IP de un solo cliente para intentar iniciar sesión solo cada 2 segundos   (equivalente a 30 solicitudes por minuto):

limit_req_zone $binary_remote_addr zone=one:10m rate=30r/m;

server {
    # ...
    location /login.html {
        limit_req zone=one;
    # ...
    }
}
     

La directiva limit_req_zone configura una zona de memoria compartida llamada   uno para almacenar el estado de las solicitudes de la clave especificada, en este caso   la dirección IP del cliente ($ binary_remote_addr). La directiva limit_req   en el bloque de ubicación para /login.html hace referencia a la memoria compartida   zona.

Limitar el número de conexiones

  

Puede limitar el número de conexiones que puede abrir una sola   Dirección IP del cliente, nuevamente a un valor apropiado para usuarios reales. por   Por ejemplo, puede permitir que la dirección IP de cada cliente se abra no más de 10   conexiones al área / tienda de su sitio web:

limit_conn_zone $binary_remote_addr zone=addr:10m;

server {
    # ...
    location /store/ {
        limit_conn addr 10;
        # ...
    }
}
     

La directiva limit_conn_zone configura una zona de memoria compartida llamada   addr para almacenar las solicitudes de la clave especificada, en este caso (como en el   ejemplo anterior) la dirección IP del cliente, $ binary_remote_addr. los   La directiva limit_conn en el bloque de ubicación para / store hace referencia al   zona de memoria compartida y establece un máximo de 10 conexiones de cada uno   dirección IP del cliente.

Cerrar conexiones lentas

  

Puedes cerrar conexiones que escriben datos con poca frecuencia,   que puede representar un intento de mantener las conexiones abiertas, siempre y cuando   posible (reduciendo así la capacidad del servidor para aceptar nuevos   conexiones). Slowloris es un ejemplo de este tipo de ataque. los   La directiva client_body_timeout controla cuánto tiempo espera NGINX entre   escrituras del cuerpo del cliente y la directiva client_header_timeout   controla cuánto tiempo espera NGINX entre las escrituras de los encabezados de los clientes. los   El valor predeterminado para ambas directivas es de 60 segundos. Este ejemplo configura   NGINX no esperará más de 5 segundos entre las escrituras del cliente   ya sea para encabezados o cuerpo:

server {
    client_body_timeout 5s;
    client_header_timeout 5s;
    # ...
}

Observe que solo demoramos las conexiones para una DDoS, mientras que DoS debemos mitigar cerrando (o rechazando) las conexiones que consideramos maliciosas. Tenga en cuenta que las mitigaciones de ataque mencionadas anteriormente son la mitigación DDoS de la capa de aplicación. Por lo tanto, los recursos (CPU y memoria) todavía se pueden utilizar. Consulte, encapsulation y Conjunto de IP (TCP / IP) con respecto al uso de recursos, ya que se necesitan recursos para encapsular y desencapsular (marco - > paquete (o datagrama) - > segmento - > PDU).

    
respondido por el safesploit 27.11.2018 - 13:05
fuente

Lea otras preguntas en las etiquetas