10GB ModSecurity文件-920100条警告.了解违反规则需要帮助



我对ModSecurity3+Nginx相当陌生。我今天发现我的服务器冻结了,因为ModSecurity创建了大量的日志文件,每个10GB,服务器的磁盘空间用完了。审计日志被设置为";仅相关";以显示警告和错误。我发现显示的警告太多了。

经过调查,我发现99%的绝大多数警告都是一样的,如下所示:

---5jn0CgkO---H--
ModSecurity: Warning. Matched "Operator `Rx' with parameter `^(?i:(?:[a-z]{3,10}s+(?:w{3,7}?://[w-./]*(?::d+)?)?/[^?#]*(?:?[^#s]*)?(?:#[S]*)?|connect (?:d{1,3}.){3}d{1,3}.?(?::d+)?|options *)s+[w./]+|get /[^?#]*(?:?[^#s]*)?(?:#[S]*)?)$' against variable `REQUEST_LINE' (Value: `GET /sale/kenwood-kac-6402-by-download-mauritron-221328-264064/ HTTP/2.0' ) [file "/etc/nginx/modsec/coreruleset-3.3.2/rules/REQUEST-920-PROTOCOL-ENFORCEMENT.conf"] [line "47"] [id "920100"] [rev ""] [msg "Invalid HTTP Request Line"] [data "GET /sale/kenwood-kac-6402-by-download-mauritron-221328-264064/ HTTP/2.0"] [severity "4"] [ver "OWASP_CRS/3.3.2"] [maturity "0"] [accuracy "0"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-protocol"] [tag "paranoia-level/1"] [tag "OWASP_CRS"] [tag "capec/1000/210/272"] [hostname "***.***.***.***"] [uri "/sale/kenwood-kac-6402-by-download-mauritron-221328-264064/"] [unique_id "166725616876.036760"] [ref "v0,72"]

我有一个市场网站,人们在这里出售东西,所以这里显示的每个URL都是相同的格式"/出售/出售-123456/";。

有人能解释一下网站到底出了什么问题以及如何修复吗?我知道如何为";隐藏";警告,但我想解决根本原因。

感谢

您没有提到您使用的CRS——我认为它是3.x版本。

CRS(4.0(的最新版本对每种规则都有更好的描述,所以我建议你先阅读这里提到的规则的评论。

正如你在那里看到的,有一行文字:要更新正则表达式,请运行以下shell脚本

在4.0中,每个使用@rx的规则都有一个数据文件,从中生成正则表达式。在这种规则的情况下,数据文件是这样的。

我相信阅读这些评论将有助于理解该规则的机制。

根据正则表达式和您的日志条目,我可以确认,如果URL看起来像您显示的内容,则会触发此规则。详细的regex101页面在这里。

为了帮助CRS团队的工作,你应该在Github上打开一个新的问题,提供详细的信息(版本等(,因为这是一个误报,我们希望关心这些问题。

作为变通方法,您可以进行排除,如下所示:

SecRule REQUEST_LINE "@beginsWith /sale/" 
"id:100001,
phase:1,
t:none,
pass,
ctl:ruleRemoveById=920100"

编辑:

根据regex和您的日志条目,我可以确认,如果URL看起来像您显示的内容,则会触发此规则。详细的regex101页面在这里

这是我的错误,因为规则否定了比赛的结果,所以它不应该触发。顺便说一句,我们仍然需要调查这种奇怪的行为@peppy,感谢您在GH上打开问题。

最新更新