Estou tentando criar um filtro fail2ban que banirá o host quando enviar mais de 100 solicitações POST por um intervalo de 30 segundos.
jail.local:
[nginx-postflood]
enabled = false
filter = nginx-postflood
action = myaction
logpath = /var/log/nginx/access.log
findtime = 30
bantime = 100
maxretry = 100
nginx-postflood.conf
[Definition]
failregex = ^<HOST>.*"POST.*
ignoreregex =
Usando o GREP, pude testar as expressões regulares e, de fato, ele corresponde às solicitações do Host e do POST.
O problema é que ele proíbe qualquer Host que realize pelo menos uma solicitação POST . Isso significa que provavelmente não está levando em consideração as opções findttime ou maxretry . Na minha opinião, é questão de timestamp.
Linha de amostra do log nginx:
5.5.5.5 - user [05/Aug/2014:00:00:09 +0200] "POST /auth HTTP/1.1" 200 6714 "http://referer.com" "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0"
Alguma ajuda?