早上好,
我目前正在创建一个新的 mod security 2.5 规则。
我的部署:我有一个处于反向代理模式的 Apache 服务器。此 Apache 服务器才不是托管网站。相反,我将请求代理到另一台响应网络请求的服务器。
Web 服务器使用身份验证令牌将网站 URL 重写为安全 URL。
75.75.75.75 - - [01/May/2015:10:55:14 -0400] "GET /record/example.svc/js HTTP/1.1" 200 1786 "https://example.org/example.aspx?XOW%5eLdz%3c2%2f1%2f42%2527kbmhtbffJfx%3e0%2527qpkf%5ejc%3e2%2527Cfruho%60uhpmXOW%5eLdz%3c2%2f1%2f42%2527RptsbfVQU%60Jfx%3e193%2527qpkf%5ejc%3e2%2527RptsbfVQU%60Ejqts%60Bihmc%60Mblf%3cSdrtfru%1fTbpqjmh"
问题:
Modsecurity 当前扫描 URI。由于随机 URI 的性质,产生了许多误报。为了防止这种情况,我想免除所有 URI 的扫描。
由于重写、重定向和身份验证令牌都是在 Web 服务器上生成的(这就是我们希望保留它的方式),我该如何通知 mod 安全性这些标头是合法的并且不要扫描它们?
75.75.75.75 - - [01/May/2015:10:55:52 -0400] "GET /thing.aspx?XOW%5eLdz%3c375%25cddnnd%60ttds%5ebt%60he%3c5%2f58328 HTTP/1.1" 200 15100 "https://example.org/example.aspx?XOW%5eLdz%3c2%2f1%2f42%2527kbmhtbffJfx%3e0%2527qpkf%5ejc%3e2%2527Cfruho%60uhpmXOW%5eLdz%3c2%2f1%2f42%2527RptsbfVQU%60Jfx%3e193%2527qpkf%5ejc%3e2%2527RptsbfVQU%60Ejqts%60Bihmc%60Mblf%3cSdrtfru%1fTbpqjmh"
75.75.75.75 - - [01/May/2015:10:55:52 -0400] "GET /example/example.svc/js HTTP/1.1" 200 1786 "https://example.org/example.aspx?XOW%5eLdz%3c375%25cddnnd%60ttds%5ebt%60he%3c5%2f58328"
答案1
据我所知,不可能完全忽略请求的任何特定部分(无论是 URI 还是任何参数)全部配置 ModSecurity 规则。虽然这可能有用,但它可能会带来许多安全漏洞。
因此,您只需要查看哪些规则失败,并为这些规则添加白名单例外。
如果您能给出一些不合格规则的例子,我或许能够在您需要帮助时建议您如何解决。
答案2
我们最终通过使用另一条规则不扫描 URI 来解决了这个问题。
SecRuleUpdateTargetById 950120 !ARGS:REQUEST_URI
这样,该特定规则就不会扫描 URI,但仍会扫描数据包的其余部分。需要注意的是,您需要为每条规则复制此规则。