我在使用 Fail2Ban 时遇到了一个令人困惑的问题。
我运行的是旧版本,重新启动 Fail2Ban Daemon 后即可取消禁止所有 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 的工作方式 - 我该如何恢复到以前的功能?
答案1
禁用 dbfile 意味着fail2ban
在重新启动时会失去对每个文件中的读取位置的跟踪,因此读取整个文件导致您观察到的行为。
tail
在语句中的文件名后面添加logpath
将指示fail2ban
从文件末尾开始读取,而不是从开头开始。这应该(我认为)能给出你想要的行为(或足够接近)。请参阅文档了解更多详情。相关章节是...
可选的空格分隔选项“tail”可以添加到路径末尾,以便从末尾读取日志文件,否则默认的“head”选项将从开头读取文件
不过,我同意迈克尔·汉普顿评论的含义——处理这个问题的正确方法是恢复使用dbfile
和使用解禁功能。