fail2ban 0.9 数据库存储实际上是如何工作的?

fail2ban 0.9 数据库存储实际上是如何工作的?

Fail2ban 0.9 引入了数据库存储,以便在重启时保存禁令。但我无法找出其实际工作原理。

dbpurgeage一个参数控制旧禁令的生命周期,默认为 24​​ 小时。据我从代码研究中看到,fail2ban 会将禁令保存到数据库中,其时间timeofban等于禁令保存的时间。然后,dbpurgeage它会在每个时间段内删除所有带有的禁令timeofban < MyTime.time() - self._purgeAge,换句话说,删除所有存储时间超过 24 小时的禁令。

但是如果某个 IP 被封禁一个月怎么办?这是否意味着dbpurgeage = 8640024 小时后重启后我将失去所有超过 24 小时的封禁?

我只是希望,无论如何,我的所有永久禁令都能保留。

答案1

Netfilter 规则在重启后不会保留,因此 Fail2ban 0.9 会在其数据库中记录禁令,并在启动时恢复禁令;但是,它只会记住每个禁令清除秒。如果您重新启动系统的时间超过清除特定禁令实施几秒钟后,该禁令将不是得到恢復。

此行为与禁令期限无关。如果 Fail2ban 忘记恢复禁令,即使您实施了为期一个月的禁令也没关系。如果您的系统在禁令期间没有重新启动,这不是问题,但如果您想绝对确保不会因重新启动而丢失禁令,则必须增加dbpurgeage。我不确定是否有一种简单的方法可以完全禁用清除。

相关内容