什么是ModSecurity SecCollectionTimeout指令?

我在ModSecurity中出现一个反复出现的“失败的删除集合”错误消息时遇到了一些问题( 有关上下文,请参阅此讨论@GitHub )。 在讨论这个错误时,经常会提出SecCollectionTimeout指令可能会有一些影响。 阅读文档我只知道这个指令:

指定收集超时。 默认值是3600秒。

但是,我不完全了解“收集超时”是什么。 有人可以向我解释这个设置是什么吗?

提前谢谢了。

如果收集logging没有在那个时间更新,那么它被标记为删除,并在某个点收集垃圾。

根据规则的写法,ModSecurity可能会在超时之前持续更新集合logging,因此永远不会标记为过期。

你可以添加一个新的规则来过期真正的旧logging。 Ivan Ristic在第8章的Mod Security手册中对此进行了讨论,并给出了一些示例规则来检测真正的旧logging,包括来自Brian Rectanus的这个logging(请注意,如果您想要使用,这个规则在现实生活中):

# Detect very old IP records SecAction "phase:5,log,pass,chain,\ msg:'IP record older than 24 hours',\ setvar:tx.exp=%{TIME_EPOCH},\   setvar:tx.exp=-%{IP.CREATE_TIME}" SecRule TX:exp "@gt 86400" 

这个例子可以更新为自动删除旧的logging而不需要logging,只需改变如下:

 # Delete very old IP records SecAction "id:12345,phase:5,nolog,pass,chain,\ setvar:tx.exp=%{TIME_EPOCH},\  setvar:tx.exp=-%{IP.CREATE_TIME}" SecRule TX:exp "@gt 86400" "setvar:!IP.KEY" 

然后再次您的链接可能是真正的ModSecurity中的一个错误,过期的项目不会被清除,在上述情况可能无助于…