0

我是使用 mod_security2 的新手。我只使用了大约 3 周。

希望有人能告诉我如何完成以下工作。我正在寻找一种创建规则的方法:

  1. 如果是url,域名后面以/SOMETHING
  2. 并且参数名称(包含任何地方datetimestamp)或(恰好是lastLogon
  3. 并且参数值与正则表达式匹配^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{3}[-+]?[0-9]{4}$
  4. 或者参数名称正是“过滤器”(无论它具有什么值)
  5. 然后执行 ctl:ruleRemoveTargetById=981173

我认为参考手册缺少的是 SecRule 的解释复杂示例。也许我只是找不到它,在这种情况下,请原谅我并指出正确的方向。

我正在使用版本 2.9.0

也许使用或类似的东西?无法使其工作(因为需要 boolean or)。我不知道。

由于我已经在写这个寻求帮助的请求,也许有一个捷径很容易知道:如果域名后的 url 以 开头,我有很多规则要写,/SOMETHING有没有简单的方法来处理它们?

提前致谢。

4

3 回答 3

0

发现很难准确地理解你想要什么。

可以为所有这些编写一个链式规则,但编写多个规则可能更容易且更具可读性。

我建议您查看包含请求的资源和参数的REQUEST_URI 。

SecRule REQUEST_URI "^/SOMETHING.*\?(.*&)+(.*date.*|.*timestamp.*|lastLogon)=[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{3}[-+]?[0-9]{4}(&.*)+$" "id=12345,ctl:ruleRemoveTargetById=981173"

然后为你的另一个单独的规则:

SecRule REQUEST_URI "^/SOMETHING.*\?(.*&)+(filters)=.*" "id=12346,ctl:ruleRemoveTargetById=981173"

最后一条规则也可以写成:

SecRule REQUEST_FILENAME "^/SOMETHING.*" "id=12346,chain"
    ARGS "^filters$" "ctl:ruleRemoveTargetById=981173"

至于您的其他要求,您可以在 REQUEST_FILENAME 匹配 SOMETHING 时设置一个变量,然后每次检查。但每次通过上面最后一个代码片段的链式规则进行检查可能同样容易。

于 2016-03-05T15:07:48.920 回答
0

我想我知道该怎么做。

    SecRule REQUEST_FILENAME "@beginsWith /SOMETHING" "phase:1,t:none,nolog,pass,ctl:ruleRemoveTargetById=981173;ARGS:filters,id:'10000'"
    SecRule REQUEST_FILENAME "@beginsWith /SOMETHING" "phase:1,chain,t:none,nolog,pass,ctl:ruleRemoveById=981173,id:'10010'"
        SecRule ARGS:/(?i)^.*date.*$/|ARGS:/(?i)^.*timestamp.*$/|ARGS:lastLogon "@rx ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{3}[-+]?[0-9]{4}$" "t:none"

我对吗?任何意见?

于 2016-03-05T00:26:08.113 回答
0

工作规则是:

SecRule REQUEST_FILENAME "@beginsWith /SOMETHING" \
        "phase:1,t:none,nolog,pass,ctl:ruleRemoveTargetById=981173;ARGS:filters,id:'10000'"

SecRule ARGS:/(?i)^.*date.*$/|ARGS:/(?i)^.*timestamp.*$/|ARGS:/(?i)^lastLogin$/ \
        "@rx ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{3}[-+]?[0-9]{4}$" \
        "phase:2,chain,t:none,nolog,pass,id:'10010'"
    SecRule REQUEST_FILENAME "@beginsWith /SOMETING" "ctl:ruleRemoveById=981173"

我现在面临的问题是第 2 阶段没有在我的modsecurity_crs_15_customrules.conf配置文件中执行,只有在modsecurity.conf.

我仍在为这个新问题寻找明确的解决方案。(见:this other question

于 2016-03-09T21:46:28.387 回答