fail2ban 0.9数据库存储如何工作?

Fail2ban 0.9引入了数据库存储以在重新启动时保存禁止。 但是我找不到工作的实际机制。

有控制旧禁止寿命的dbpurgeage参数,默认为24小时。 正如我从代码研究中看到的,fail2ban使用timeofban等于禁止保存的时刻将禁止保存到数据库。 然后,每个dbpurgeage时间段都会使用timeofban < MyTime.time() - self._purgeAge删除所有禁令,换句话说,将删除所有禁止已经存储超过24小时。

但是,如果一个IP被禁止了这个月呢? 这是否意味着在24小时内重新启动后, dbpurgeage = 86400 ,我将失去超过24小时的所有禁令?

我只是希望所有的永久禁令都会被保留下来。

Netfilter规则在重新启动时不是持久的,因此Fail2ban 0.9会在其数据库中logging禁止并在启动时恢复它们; 但是,它只能记住每个秒的dbpurgeage禁令。 如果在某个特定的禁令生效之后重新启动系统超过dbpurgeage秒,则禁止恢复。

这种行为是独立于禁令的长度。 如果Fail2ban不记得恢复它,那么是否有一个月的禁止也没有关系。 如果您的系统在禁止期间不重新启动,这不是问题,但是如果您想确保不会由于重新启动而丢失,则必须增加dbpurgeage 。 我不知道是否有一个简单的方法来禁用清除。