nny*_*yby 4 firewall mod-security web-application-firewall
我正在使用OWASP 核心规则集 3.2.0设置ModSecurity 3.0.4和ModSecurity-nginx。
如果我有这样的规则排除REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf:
SecRule REQUEST_URI "@beginsWith /api.php" \
"id:1015,\
phase:2,\
pass,\
nolog,\
ctl:ruleRemoveById=941160"
Run Code Online (Sandbox Code Playgroud)
如何将此排除限制为特定主机名?例如,wiki.example.com。
使用REQUEST_HEADERS:Host链接 withREQUEST_URI可以解决问题,但如果有多个站点需要或不需要排除,则维护起来会更加困难。因此,另一种解决方案是禁用虚拟主机的Nginx 配置规则。
可以使用modsecurity_rules内部特定的server&禁用某些规则location:
server {
server_name wiki.example.com;
modsecurity on;
. . .
location /api.php {
modsecurity_rules '
SecRuleRemoveById 941160
';
}
}
Run Code Online (Sandbox Code Playgroud)
对于Apache也是可能的,因为一些 Apache 用户稍后可能会根据其标题找到这个问题。使用 Apache,您可以使用SecRuleRemoveById/modsecurity_rules指令
里面VirtualHost和Location或LocationMatch:
<VirtualHost *:443>
ServerName wiki.example.com
. . .
<LocationMatch "^/api.php">
<IfModule security2_module>
SecRuleRemoveById 941160
</IfModule>
<IfModule security3_module>
modsecurity_rules 'SecRuleRemoveById 941160'
</IfModule>
</LocationMatch>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)或者,尽管不推荐,但即使使用.htaccess:
<IfModule security2_module>
<If "%{REQUEST_URI} =~ m#^/api.php#">
SecRuleRemoveById 941160
</If>
</IfModule>
<IfModule security3_module>
<If "%{REQUEST_URI} =~ m#^/api.php#">
modsecurity_rules 'SecRuleRemoveById 941160'
</If>
</IfModule>
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
7621 次 |
| 最近记录: |