![NGINX: Como lidar com tráfego obviamente falso em um servidor que emite um redirecionamento geral incondicional?](https://rvso.com/image/717735/NGINX%3A%20Como%20lidar%20com%20tr%C3%A1fego%20obviamente%20falso%20em%20um%20servidor%20que%20emite%20um%20redirecionamento%20geral%20incondicional%3F.png)
Me deparei com um problema bastante interessante ao tentar configurar o NGinx. Eu executo um pequeno servidor web que serve tudo via HTTPS com NGinx 1.13.8. Como é típico dessa configuração, ele também escuta na porta 80 e emite um redirecionamento geral para todas as solicitações para a porta 443 com o mesmo URI, usando o seguinte fragmento de configuração para conseguir isso:
location / {
return 301 https://$server_name$request_uri;
}
Isso por si só funcionou muito bem para o que eu preciso. No entanto, comecei a receber algum tráfego obviamente falso e facilmente identificável (períodos aleatórios de cerca de 5 minutos em que recebo milhares de novas conexões de IPs aparentemente aleatórios, todos com um prefixo comum no cabeçalho User-Agent, todos fazendo exatamente a mesma solicitação ( HEAD / HTTP/1.1
), todos deixando a conexão aberta até atingir o tempo limite e nunca seguindo o redirecionamento).
Idealmente, eu gostaria de fechar essas conexões assim que forem identificadas para minimizar a quantidade de recursos que desperdiçam. Atualmente, criei este fragmento de configuração modificado para fazer isso:
location / {
return 301 https://$server_name$request_uri;
}
location = / {
if ($method = "HEAD") {
set $drop M;
}
if ($http_user_agent ~* "Dalvik/2.1.0 (Linux U ") {
set $drop "U${drop}";
}
if ($drop = "UM") {
return 444;
}
}
No entanto, isso parece não funcionar (já que os logs ainda mostram esses picos de tráfego retornando inteiramente 301. Também tentei correspondências menos específicas (apenas correspondências gerais no cabeçalho User-Agent ou no método) dentro do primeiro local bloquear, e isso também não parece funcionar.
Então, eu tenho duas perguntas:
- Por que isso não funciona?
- Existe uma maneira melhor de lidar com esse tráfego que não envolva potencialmente a inspeção profunda de pacotes no firewall?