![Ratenbegrenzung für falsch konfigurierte Bots](https://rvso.com/image/658338/Ratenbegrenzung%20f%C3%BCr%20falsch%20konfigurierte%20Bots.png)
Wir haben ein Nginx / PHP-FPM hinter einem Load Balancer, der regelmäßig gescrapt wird. Viele der Scraper treffen die 404-Seite unserer Anwendung ziemlich hart.
Gibt es eine Möglichkeit in Nginx, evtl. mit demRatenbegrenzungsmoduloder ein anderes Modul, um den gesamten Datenverkehr basierend auf x-forward-for zu blockieren, nachdem bei über 100 Anfragen pro Minute 404-Fehler aufgetreten sind?
Die Dokumentation, die ich gefunden habe fürLimit-Anforderungsmodules scheint, als ob es eher auf der Ressource als auf dem Seitenrückgabestatus basiert.
Es herrscht ausreichend Verkehr, sodass jeder Knoten ausreichend 404-Verkehr sieht, sodass keine Kommunikation darüber erforderlich sein sollte, wer kollektiv blockiert werden soll.
Antwort1
Sie können dies in Nginx sicherlich mit dem Modul limit_req_zone tun.
Richten Sie in nginx.conf eine Zone ein:
limit_req_zone $binary_remote_addr zone=one:1000m rate=100r/m;
Sie können auch X_Forwarded_For
anstelle von binary_remote_addr
„too“ verwenden.
Verweisen Sie in Ihrem Site-Konfigurationsstandortblock einfach auf die Zone:
limit_req zone=one burst=10 nodelay;
Dokument: http://nginx.org/en/docs/http/ngx_http_limit_req_module.html
Antwort2
Sie können fail2ban verwenden und das folgende Jail mit nginx verwenden, um die Rate falsch konfigurierter Bots zu begrenzen
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local und füge dies unten hinzu
[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