我在我的ModSecurity日志中收到了这个错误:
ModSecurity: Warning. Matched "Operator `Eq' with parameter `0' against variable `REQBODY_ERROR' (Value: `1' ) [file "/etc/nginx/modsec/modsecurity.conf"] [line "75"] [id "200002"] [rev ""] [msg "Failed to parse request body."] [data "Request body excluding files is bigger than the maximum expected."] [severity "2"] [ver ""] [maturity "0"] [accuracy "0"] [hostname "***.***.***.***"] [uri "/add/submit.php"] [unique_id "167296149027.413348"] [ref "v0,1"]
据我所知,请求体超出了在主SecRequestBodyLimit
配置中设置的默认ModSecurity参数。对于一些用户来说,在这个特定的页面上提交比默认的131 on请求正文限制更大的高度格式化的列表并不少见。
如何编写自定义排除规则,只为特定域上的"/add/submit.php“页面增加SecRequestBodyLimit
?我正在寻找一条类似于这样的规则的合适的写作方法:
SecRule REQUEST_HEADERS:Host "@pm example.com www.example.com" \
"id:100001,\
phase:1,\
pass,\
nolog,\
chain"
SecRule REQUEST_URI "@pm /add/submit.php" \
"ctl:requestBodyLimit=1048576"
上面的规则不起作用,并给出了以下错误:
nginx: [emerg] "modsecurity_rules_file" directive Rules error. File: /etc/nginx/modsec/coreruleset-4.0.0-rc1/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf. Line: 410. Column: 30. Expecting an action, got: ctl:requestBodyLimit=1048576" in /etc/nginx/nginx.conf:32
发布于 2023-01-08 13:55:26
ModSecurity核心规则在这里设置开发人员的职责。需要注意的是,ModSecurity中有几个不同的请求体限制。他们处理不同的情况,防止不同类型的攻击。
查看日志行的这一部分:
数据“请求主体不包括文件超过了预期的最大值。“
我们可以看出,SecRequestBodyNoFilesLimit
的限制已经超过了。这处理与非文件相关的请求体数据。您希望将此限制尽可能低,以减少对WAF发生某些类型攻击的可能性。
几个月前,我用图表和示例编写了一个关于这个确切主题的详细博客文章。值得一读,以更好地理解不同的请求体限制,它们所做的,以及它们存在的原因。
在Apache中,您只能针对需要它的特定位置增加SecRequestBodyNoFilesLimit
,如下所示:
<Location "/user/profile/avatar-upload.php">
SecRequestBodyNoFilesLimit 200000
</Location>
我相信您可以在nginx中做一些类似的/相同的事情;我个人不使用nginx,所以我不能给您具体的说明。
发布于 2023-01-07 09:26:11
对于位置的简单覆盖,添加到Nginx配置(server{}
块):
location /add/submit.php {
modsecurity_rules 'SecRequestBodyLimit 1048576';
modsecurity_rules 'SecRequestBodyNoFilesLimit 1048576';
}
https://security.stackexchange.com/questions/267536
复制相似问题