1

如果整个网站的 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 请求选择正确的证书。还没有找到其他任何东西可以做到这一点。)

因此,在 apache 端没有 .htaccess 文件有意义的目录,至少对我来说是这样。

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

4

1 回答 1

3

像这样的东西应该可以工作(未经测试):

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 更改仅针对此请求。

于 2016-07-27T18:59:22.237 回答