modsecurity: 多条规则共同起作用时,使用chain(规则链)

一,什么时候使用chain

1,规则链("chain")的作用与AND一致。
仅当多条规则中的变量检查同时匹配成功时,才会触发链式规则的第一条规则中指定的阻断性操作。
链式规则中如果有一条规则没有匹配成功,则表示整个规则链匹配失败,不会执行对应的阻断性动作

2,

如果需要判断的条件大于等于2个,除最后一条规则外,规则链的所有规则都需要配置"chain"指令

3,例子:

规则:   以GET方式访问/kylin/api/admin/config这个uri时,
          两个条件都匹配,则deny

SecRule REQUEST_METHOD "^GET$" "chain,msg: 'Kylin unauthorized config',severity:ERROR,deny,status:404,id:2015"
SecRule REQUEST_URI "/kylin/api/admin/config"

测试:

http://a.b.com/linux/kylin/api/admin/config/abc

二,三条规则组合的例子:

规则:

SecRule REQUEST_FILENAME "@beginsWith /admin" "chain,phase:1,deny,log,id:2020"
    SecRule REQUEST_FILENAME "@endsWith .php" "chain"
        SecRule REMOTE_ADDR "!@ipMatch 192.168.1.100" "t:none"

测试:

http://a.b.com/adminddd/abcd.php

 

posted @ 2024-10-25 17:29  刘宏缔的架构森林  阅读(21)  评论(0编辑  收藏  举报