Se você quiser induzir o usuário ofensivo a pensar que ele ainda passa despercebido por você, use o módulo de limite de solicitações do nginx ( http://wiki.nginx.org/HttpLimitReqModule ).
Primeiro defina uma zona de limite de solicitação:
http {
limit_req_zone $binary_remote_addr zone=spammers:1m rate=30r/m;
}
Essa zona usará o endereço IP do agressor para identificar e limitar as solicitações em 30 por minuto (1/2 segundo). Observe que o tamanho da memória da região está definido como 1 MiB, o que significa que ele pode lidar com 1 MiB / 64 bytes por requisição = 16384 endereços de spammer (o que talvez seja um exagero para o nosso caso). Ajuste respectivamente, se necessário.
Em seguida, definimos a diretiva que realmente encaminhará o agressor através do limitador usando um caso (mau, infelizmente):
location / {
if ($remote_addr = 1.2.3.4) {
limit_req zone=spammer burst=5;
}
}
Você pode assistir os frutos do seu trabalho no log de acesso do servidor.
Observe que esse hack não é bem dimensionado, pois você precisará atualizar o arquivo de configuração sempre que o agressor alterar o IP (sem falar em incluir mais IPs, o que significa mais se houver casos), mas funciona.