![Límite de velocidad de bots mal configurados](https://rvso.com/image/658338/L%C3%ADmite%20de%20velocidad%20de%20bots%20mal%20configurados.png)
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_For
en lugar de binary_remote_addr
tambié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