加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

linux – 使用fail2ban的最大bantime

发布时间:2020-12-13 21:23:08 所属栏目:Nginx 来源:网络整理
导读:我使用fail2ban / firewalld来限制对Nginx服务器的类似bot的访问.通常,相应jail的配置如下所示: [nginx-botsearch]#banaction = iptables-multiportenabled = truefilter = nginx-botsearchlogpath = /var/log/nginx*/*access*.logmaxretry = 3bantime = 36

我使用fail2ban / firewalld来限制对Nginx服务器的类似bot的访问.通常,相应jail的配置如下所示:

[nginx-botsearch]
#banaction = iptables-multiport
enabled = true
filter = nginx-botsearch
logpath = /var/log/nginx*/*access*.log
maxretry = 3
bantime = 3600

这按预期工作(banaction默认为firewallcmd-ipset),即iptables -L命令在INPUT_direct链中显示一个条目:

REJECT     tcp  --  anywhere             anywhere             multiport dports http,https match-set fail2ban-nginx-botsearch src reject-with icmp-port-unreachable

使用fail2ban-nginx-botsearch的相应ipset.

然而,当bantime增加时,我注意到一种奇怪的行为.一切都按预期的方式工作< = 4294967.当我设置bantime = 4294968并重新加载fail2ban服务时,缺少iptables输出中的条目(未创建ipset)实际上,使用例如ab实用程序进行测试显示该禁令未得到执行.有趣的是,使用banaction = iptables-multiport甚至可以用于“大型”bantimes.这种行为可能是什么原因?我在CentOS 7上使用fail2ban v 0.9.7.

最佳答案
这不是严格的fail2ban相关问题,而是内核中netfilter代码中的一个错误.简而言之,您的ipset版本对于timeout参数有一个整数溢出,因此当它超过32位整数时会看到不可预测的行为.

您没有看到多端口,因为它不使用此代码,而是依靠自己的设备来跟踪超时.

这是netfilter代码中针对此问题的补丁的link.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读