将mod_security设置为特定页面的detectionOnly?

时间:2016-07-27 18:19:17

标签: apache mod-security2 web-application-firewall

如果整个网站的mod_security设置为ON,有没有办法将特定页面设置为detection_only?

用例是应用程序用于配置网站,并且使用CSS或js非常常见,但很可能使modsecurity抛出XSS规则异常。我想在这些页面上检测这些异常但不阻止它们。但是在所有其他页面上,我希望阻止规则例外。

更多细节:应用程序实际上是在另一台Windows服务器上运行的IIS应用程序,而mod_security在Linux服务器上的Apache中运行。 haproxy将传入的请求定向到apache,apache通过modsecurity接收请求;如果它通过,它将它反向代理回haproxy,然后将其传递给IIS。

== incoming request ==> haproxy ==> apache 
                                      v
                                    mod_security
                                      v
        IIS machine <== haproxy <== mod_proxy

(是的,使用haproxy有充分的理由。我们有数百个https证书,我们可以将haproxy指向一个充满它们的文件夹,它将根据SNI选择正确的证书https请求.Haven还没有找到其他任何可以做到的事情。)

所以在apache一侧没有目录.htaccess文件是有意义的,至少对我的小脑子来说。

被视为DetectionOnly的路径将匹配主机admin.mysite.com和路径^/site/[a-zA-Z0-9-]+/Settings$

1 个答案:

答案 0 :(得分:2)

这样的事情应该有效(未经测试):

SecRule REQUEST_HEADERS:Host "@streq admin.mysite.com" "phase:1,id:1234,chain"
    SecRule REQUEST_URI "^/site/[a-zA-Z0-9-]+/Settings$" "ctl:ruleEngine=DetectionOnly"

只需在其他任何规则之前添加该规则,并确保id是唯一的(我以1234为例)。

规则引擎将针对下一个请求重置,因为仅对此请求进行了ctl更改。