我正面临一个与 Fail2Ban 相关的令人困惑的问题。
我运行的是一个旧版本,它在重新启动 Fail2Ban 守护程序后会取消禁止所有 IP 地址。
我现在在 Centos 7 上安装了 Fail2Ban 0.9.3 版。当我重新启动 Fail2Ban 时,它会重新禁止以前被禁止的 IP 地址。我不希望这种情况发生,而是希望在重新启动时清除所有禁令,这是它过去的工作方式。
我已经设置dbfile = None
为防止持续禁止并且也设置dbpurgeage = 0
为安全。
但是在重新启动时,任何被禁止的 IP 都会再次被禁止。
/var/log/fail2ban.log
以下是用户通过 vsftpd 被禁止时的摘录:
2016-09-19 20:45:58,671 fail2ban.filter [23752]: INFO [vsftpd] Found xx.xx.xx.xx
2016-09-19 21:01:55,665 fail2ban.filter [23752]: INFO [vsftpd] Found xx.xx.xx.xx
2016-09-19 21:02:06,679 fail2ban.filter [23752]: INFO [vsftpd] Found xx.xx.xx.xx
2016-09-19 21:02:06,936 fail2ban.actions [23752]: NOTICE [vsftpd] Ban xx.xx.xx.xx
然后在重新启动 Fail2Ban 后,这是日志文件的最后几行:
2016-09-19 21:02:42,719 fail2ban.jail [24213]: INFO Jail 'vsftpd' started
2016-09-19 21:02:42,761 fail2ban.filter [24213]: INFO [vsftpd] Found xx.xx.xx.xx
2016-09-19 21:02:42,761 fail2ban.filter [24213]: INFO [vsftpd] Found xx.xx.xx.xx
2016-09-19 21:02:42,921 fail2ban.actions [24213]: NOTICE [vsftpd] Ban xx.xx.xx.xx
它似乎正在重新扫描日志文件并重新禁止以前被禁止的用户。
正如我所提到的,这不是它在旧版本的 Fail2Ban 中的工作方式——我怎样才能恢复到以前的功能?
禁用 dbfile 意味着
fail2ban
在重新启动时会丢失其在每个文件中的读取位置,因此会读取整个文件,从而导致您观察到的行为。在语句
tail
中的文件名之后添加将告诉从文件末尾开始读取,而不是从开头开始。这应该(我认为)给出你想要的行为(或足够接近)。有关更多详细信息,请参阅文档。相关部分是...logpath
fail2ban
但是,我同意迈克尔汉普顿评论的含义 - 处理这个问题的正确方法是恢复使用
dbfile
和使用 unban 功能。