Ratenbegrenzung für falsch konfigurierte Bots

Ratenbegrenzung für falsch konfigurierte Bots

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_Foranstelle 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

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

verwandte Informationen