Bloquear y securizar ataques DDos limitando conexiones simultáneas usando nginx

Tiempo de lectura: 2 minutos

Hoy vamos a evitar ataques DDos eliminando conexiones simultáneas a nuestro servidor nginx.

Speed limit -pexels

Primero tenemos que ir al archivo nginx.conf

Y añadimos lo siguiente:

http {
    limit_conn_zone $binary_remote_addr zone=addr:10m;

    server {

        location / {
            if ($http_user_agent ~* (curl|bot|crawler|spider)) {
                return 403;
            }

            limit_conn addr 10;
...
        }
    }
}

La directiva limit_conn_zone y el uso de limit_conn en la configuración de Nginx son para controlar y limitar el número de conexiones simultáneas que un cliente puede hacer a tu servidor.

1. limit_conn_zone

limit_conn_zone $binary_remote_addr zone=addr:10m;
  • limit_conn_zone define una «zona de memoria» donde se almacenan los estados de las conexiones. En este caso, está usando la variable $binary_remote_addr, que representa la dirección IP del cliente en formato binario. Esto permite contar las conexiones por dirección IP.
  • zone=addr:10m asigna un área de memoria de 10MB para almacenar esta información, y la llama addr. La cantidad de memoria utilizada depende de cuántas direcciones IP diferentes se conecten.

2. limit_conn

limit_conn addr 10;
  • limit_conn se usa para limitar el número de conexiones simultáneas permitidas desde una única dirección IP (en este caso, representada por la variable addr que se definió antes). En este ejemplo, limita a 10 conexiones simultáneas por dirección IP.

Esto significa que si un cliente (con una IP específica) intenta hacer más de 10 conexiones simultáneas al servidor, Nginx rechazará las conexiones adicionales y podría devolver un error 503 (Service Unavailable) o similar.

¿Por qué usar estas directivas?

  • Prevenir abusos: Limitar la cantidad de conexiones por IP puede ser útil para evitar ataques como el DDoS (Distributed Denial of Service), donde muchos clientes intentan sobrecargar el servidor con un número elevado de conexiones.
  • Evitar sobrecarga de servidor: Si muchos usuarios intentan acceder a tu aplicación al mismo tiempo, estas directivas aseguran que tu servidor no se sobrecargue con un número infinito de conexiones desde una sola IP.
  • Controlar tráfico no deseado: Si deseas evitar que ciertos bots o servicios automatizados hagan demasiadas solicitudes simultáneas, estas directivas pueden ayudar a limitar ese tráfico.

Deja un comentario