我正在创建自定义mod-security规则,我对是否规则ID影响执行规则的顺序有疑问。
我目前的设置是:
我的规则是:
<IfModule mod_security2.c>
# block all GET requests - learning purposes only
SecRule REQUEST_METHOD "^(GET)$" \
"phase:1,t:none,auditlog,block,id:1001,rev:2,tag:HARDENING"
</IfModule>
Disclamer :这是一个简单的规则,可能不是最优的,因为我还在学习。欢迎提出建议
所以,在我分析调试文件(激活级别9)后,我的问题出现了:
[...]
[4] Recipe: Invoking rule 7f157a85da30; [file "/etc/apache2/conf.d/modsecurity-activated-rules.conf"] [line "11"] [id "1001"] [rev "2"].
[5] Rule 7f157a85da30: SecRule "REQUEST_METHOD" "@rx ^(GET)$" "phase:1,log,t:none,auditlog,block,id:1001,rev:2,tag:HARDENING"
[4] Transformation completed in 4 usec.
[4] Executing operator "rx" with param "^(GET)$" against REQUEST_METHOD.
[9] Target value: "GET"
[6] Ignoring regex captures since "capture" action is not enabled.
[4] Operator completed in 36 usec.
[2] Warning. Pattern match "^(GET)$" at REQUEST_METHOD. [file "/etc/apache2/conf.d/modsecurity-activated-rules.conf"] [line "11"] [id "1001"] [rev "2"] [tag "HARDENING"]
[4] Rule returned 1.[04/Sep/2012:09:30:27 +0000] [107.21.159.51/sid#7f157a854510][rid#7f1573fcf0a0][/poll/13456492248275482/vote/yes][9] Match -> mode NEXT_RULE.
[4] Recipe: Invoking rule 7f157a85e648; [file "/etc/apache2/conf.d/modsecurity.conf"] [line "24"] [id "200000"].
[5] Rule 7f157a85e648: SecRule "REQUEST_HEADERS:Content-Type" "@rx text/xml" "phase:1,auditlog,id:200000,t:none,t:lowercase,pass,nolog,ctl:requestBodyProcessor=XML"
[4] Rule returned 0.
[9] No match, not chained -> mode NEXT_RULE.
[...]
正如调试行所示,我的规则(id:1001)首先在规则(id:200000)之前执行,即使我的规则在20000x之后被读取。
我认为ID在规则执行顺序中并不重要,因为OWASP ModSecurity核心规则集https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project的规则ID介于950000和990000之间,并且没有关于特定攻击的规则ID范围的信息: SQLi,XSS等
有了上述内容,我的问题是:
感谢您的时间。
答案 0 :(得分:0)
规则可以没有id.But如果有一个,在同一个pahse,就像你的问题
最小数字首先执行
仅在同一阶段!
也许业务规则定义了throse ID。https://ssl.trustwave.com/web-application-firewall
答案 1 :(得分:0)
ModSecurity支持两种类型的规则模型,即正面安全模型和负面安全模型。当您想要使用 skip,skipafter 关键字跳过规则以避免资源密集型基于正则表达式的模式修补时,负安全模型支持基于签名的检测和规则排序很重要。其次,基于规则ID的规则顺序不是绝对的它可以由规则引擎动态地改变,即阶段1的规则将始终首先执行。我建议阅读ModSecurity手册是初学者的良好开端。第二类规则是积极的安全模型,其中顺序无关紧要,因为维护计数器以检测异常,并且如果超过阈值则触发规则。
答案 2 :(得分:0)
正确答案是ModSecurity
按照在Apache配置中定义的顺序执行规则。
ModSecurity
本身唯一适用的排序是阶段:排序,它确保规则将按阶段执行。
示例: