ModSecurity/Coraza规则链失效问题求助
Coraza规则链deny动作失效问题解决
问题现象
使用Coraza时配置了ModSecurity规则链,日志显示两条规则均匹配,但链尾的deny动作未生效,请求未被拦截。
配置的规则
SecRule REQUEST_HEADERS:X-Forwarded-For "@ipMatch 3.4.5.6" "id:9,phase:1,chain" SecRule REQUEST_HEADERS:Host "@eq bar.com" "id:10,phase:1,deny"
测试请求
curl -v -H 'Host: bar.com' -H 'X-Forwarded-For: 3.4.5.6' localhost
日志信息
2023/11/06 19:33:20 [DEBUG] Evaluating operator: MATCH tx_id="bqZkxImuTflWlGYCGVG" rule_id=9 operator_function="@ipMatch" operator_data="3.4.5.6" arg="3.4.5.6" 2023/11/06 19:33:20 [DEBUG] Evaluating operator: MATCH tx_id="bqZkxImuTflWlGYCGVG" rule_id=10 operator_function="@eq" operator_data="bar.com" arg="bar.com"
原因与解决方法
Coraza/ModSecurity的规则链逻辑是:只有链头规则(第一条)定义的动作会被执行,链尾规则仅作为匹配条件,其配置的动作会被忽略。
将deny动作移至链头规则,并移除链尾规则的phase参数(链规则会继承链头的phase配置),修改后的规则如下:
SecRule REQUEST_HEADERS:X-Forwarded-For "@ipMatch 3.4.5.6" "id:9,phase:1,chain,deny" SecRule REQUEST_HEADERS:Host "@eq bar.com" "id:10"
修改后,当两条规则都匹配时,链头的deny动作会触发,请求将被正常拦截。
内容的提问来源于stack exchange,提问作者user2233706
相关产品推荐
相关产品推荐

