Limite de taxa de bots mal configurados

Limite de taxa de bots mal configurados

Temos um Nginx/PHP-FPM por trás de um balanceador de carga que é periodicamente raspado. Muitos dos scrapers atingiram com força a página 404 do nosso aplicativo.

Existe uma maneira no Nginx, possivelmente com omódulo limitador de taxaou um módulo diferente, para bloquear todo o tráfego com base em x-forward-for após atingir erros 404 em mais de 100 solicitações por minuto?

A documentação que encontrei paralimite-req-móduloparece que se baseia no recurso e não no status de retorno da página.

Há tráfego suficiente, para que cada nó esteja vendo tráfego 404 suficiente para que eles não precisem se comunicar sobre quem bloquear coletivamente.

Responder1

Você certamente pode fazer isso no nginx com o módulo limit_req_zone.

No nginx.conf configure uma zona:

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

Você também pode usar X_Forwarded_Forem vez de binary_remote_addrtambém.

No bloco de localização de configuração do seu site, apenas faça referência à zona:

limit_req zone=one burst=10 nodelay;

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

Responder2

Você pode usar fail2ban e seguir a prisão com nginx para limitar a taxa de bots mal configurados

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local e adicione isto na 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

referências:https://rtcamp.com/tutorials/nginx/fail2ban

informação relacionada