nginx post洪水的Fail2ban忽略时间间隔

nginx post洪水的Fail2ban忽略时间间隔

我正在尝试创建一个fail2ban 过滤器,当主机在 30 秒的时间间隔内发送超过 100 个 POST 请求时,该过滤器将禁止该主机。

监狱本地:

[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 =

使用 GREP 我能够测试正则表达式,它确实匹配 Host 和 POST 请求。

问题是它禁止任何至少执行一个 POST 请求的主机。这意味着它可能不会采取寻找时间或者最大重试次数选项予以考虑。在我看来,这是时间戳问题。

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"

有什么帮助吗?

相关内容