mod_security 上启用 apache 反向代理的白名单 URI

mod_security 上启用 apache 反向代理的白名单 URI

我有一个带有 mod_security 2.8.0-5.25 的 apache 2.2.29-1.4,它是带有 mod_proxy_http 的本地 java 应用程序的反向代理。

我对某些 URL 有误报,并且想仅根据给定的 URI 将某些 OWASP 规则列入白名单。

目前全局将规则列入白名单

SecRuleRemoveById 960010

完美运行

但两者

<LocationMatch ^/(myapp/mymethod.do.*)$>
SecRuleRemoveById 960010
  ProxyPassMatch http://localhost:8080/$1
</LocationMatch>

<Location "/myapp/mymethod.do">
SecRuleRemoveById 960010
</Location>
ProxyPass /myapp/mymethod.do http://localhost:8080/myapp/mymethod.do
ProxyPassReverse /myapp/mymethod.do http://localhost:8080/myapp/mymethod.do

不要将规则列入白名单。

我也尝试添加新的 mod_security 规则来修改现有规则,但将 URI 列入白名单总是失败......

有什么见解吗?

答案1

960010 是第 1 阶段规则。第 1 阶段运行 <location>指令已处理。

因此,您需要编写一条规则,让 ModSecurity 而不是 Apache 为您进行位置过滤。

像这样:

SecRule REQUEST_URI "^/myapp/mymethod.do" "phase:1,id:12345,nolog,ctl:ruleRemoveById=960010"

这基本上会创建另一条仅针对此 URL 触发的规则并删除此规则。请注意,必须在定义规则 960010 之前添加此规则。我已将规则 ID 指定为 12345,但请将其更改为小于 100,000 的任何免费 ID(高于此 ID 为 OWASP 等规则集保留)。

有关所有语法的更多详细信息,请参阅参考手册: https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual

相关内容