![fail2ban 禁止多个重复主机](https://linux22.com/image/1467241/fail2ban%20%E7%A6%81%E6%AD%A2%E5%A4%9A%E4%B8%AA%E9%87%8D%E5%A4%8D%E4%B8%BB%E6%9C%BA.png)
我们在面向 Web 的服务器上使用 fail2ban 来阻止多次无法正确验证的 IP 地址。我们的正常禁令时间为 1 小时;已多次被禁止的 IP 将使用recidive
fail2ban 示例配置中包含的 jail 进行一天的禁令。
选择一天的封锁时间是为了不对动态 IP 造成太大影响,尤其是考虑到监狱recursive
不会封锁特定端口,而是封锁所有传入连接。但是,我们希望在更长的时间内封禁非常顽固的攻击者。目前,这是通过自定义super-recidive
过滤器和监狱实现的。这个监狱会封锁每个被封禁recidive
两次的主机一整周(这个 IP 显然不是动态分配的)。
但是理想情况下,我希望禁止recidive
过去(比如说一周)被禁止的所有 IP 一周,这些 IP 在被解禁后又被任何监狱禁止。我知道在failregex
包括反向引用的复杂情况下,这样的事情一定可以实现 - 但有没有更优雅的方式来做到这一点?
答案1
我建议研究更强大的 Web 应用程序防火墙,例如 NGINX。您可以将屡次违规者列入 NGINX 黑名单,其中可能会有一组不同的规则来规定违规者被阻止的时间。
例子: https://www.nginx.com/blog/dynamic-ip-blacklisting-with-nginx-plus-and-fail2ban/