Apache2 具有ModSecurity的日常访问控制

Apache2 具有ModSecurity的日常访问控制,apache2,apache2.2,mod-security,Apache2,Apache2.2,Mod Security,我想配置ModSecurity,将每天对某些资源的访问限制在一定数量 例如:允许用户“A”下载特定目录中的任何文件,但总下载量不得超过5 我使用user集合跟踪用户访问: # initialize collection for the user SecAction "phase:2,id:1,initcol:user=%{REQUEST_HEADERS:User},nolog" # check if the the limit is reached and respond with statu

我想配置ModSecurity,将每天对某些资源的访问限制在一定数量

例如:允许用户“A”下载特定目录中的任何文件,但总下载量不得超过5

我使用
user
集合跟踪用户访问:

# initialize collection for the user
SecAction "phase:2,id:1,initcol:user=%{REQUEST_HEADERS:User},nolog"

# check if the the limit is reached and respond with status 403
SecRule USER:REQUESTS "@gt 5" "phase:2,id:3,deny,status:403"

# increment the request count variable upon success
SecAction phase:4,id:4,setvar:user.requests=+1
现在,我想每天清除
用户
集合中的
请求
字段,这样用户就有了第二天的完整下载时间

我知道这个动作,但它只允许指定变量被清除之前的秒数,而不允许指定发生的确切时间

是否有可能以这种方式使变量过期

另一个选项是cron作业,它每天同时运行,并为所有用户清除存储的变量。不幸的是,没有关于值存储在哪里以及如何修改它们的文档


有没有一种方法可以让用户访问存储的集合以允许清除变量?

您可以尝试使用ModSecurity的TIME\u HOUR变量在一天中的特定时间运行规则。这可以帮助您每天取消设置该变量

示例:SecRule TIME_HOUR“@eq 23”阶段:1,id:'900008007',setvar:!user.requests”

请参阅ModSec RefMan@

让我知道它是如何工作的