NGINX: Como lidar com tráfego obviamente falso em um servidor que emite um redirecionamento geral incondicional?

NGINX: Como lidar com tráfego obviamente falso em um servidor que emite um redirecionamento geral incondicional?

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:

  1. Por que isso não funciona?
  2. Existe uma maneira melhor de lidar com esse tráfego que não envolva potencialmente a inspeção profunda de pacotes no firewall?

informação relacionada