Límite de velocidad de bots mal configurados

Límite de velocidad de bots mal configurados

Tenemos un Nginx/PHP-FPM detrás de un equilibrador de carga que se elimina periódicamente. Muchos de los scrapers golpean con fuerza la página 404 de nuestra aplicación.

¿Hay alguna manera en Nginx, posiblemente con elmódulo de limitación de velocidad¿O un módulo diferente, para bloquear todo el tráfico basado en x-forward-for después de alcanzar errores 404 a más de 100 solicitudes por minuto?

La documentación que encontré paramódulo-requisito-límiteParece que se basa en el recurso y no en el estado de retorno de la página.

Hay suficiente tráfico, cada nodo ve suficiente tráfico 404 y no deberían necesitar comunicarse sobre a quién bloquear colectivamente.

Respuesta1

Ciertamente puedes hacer esto en nginx con el módulo limit_req_zone.

En nginx.conf configure una zona:

limit_req_zone $binary_remote_addr zone=one:1000m   rate=100r/m;

También puedes usar X_Forwarded_Foren lugar de binary_remote_addrtambién.

En el bloque de ubicación de configuración de su sitio, simplemente haga referencia a la zona:

limit_req zone=one burst=10 nodelay;

doc: http://nginx.org/en/docs/http/ngx_http_limit_req_module.html

Respuesta2

Puede usar fail2ban y seguir jail con nginx para limitar los bots mal configurados

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local y agregue esto en la parte inferior

[nginx-req-limit]

enabled = true
filter = nginx-req-limit
action = iptables-multiport[name=ReqLimit, port="http,https", protocol=tcp]
logpath = /var/log/nginx/*error.log
findtime = 600
bantime = 7200
maxretry = 10

referencias:https://rtcamp.com/tutorials/nginx/fail2ban

información relacionada