naxsi规则类型
MainRule规则
MainRule规则是naxsi检测的黑规则,黑规则包括三类规则:
(1)libinjection检测规则库;
规则是按一定规则进行转化了的,详见后文,样式为:
0V&1BS
0V&1BV
0V&1C
(2)naxsi自带的规则库naxsi_core.rules;
规则样式:
MainRule "str:/*" "msg:mysql comment (/*)" "mz:BODY|URL|ARGS|$HEADERS_VAR:Cookie" "s:$SQL:8" id:1003;
在nginx http级生效。
(3)第三方规则库(https://github.com/nbs-system/naxsi-rules
)也有MainRule规则。
BasicRule规则
主要为白名单规则,即使被黑名单检测到后,如果对应的黑名单规则在白名单内,就不会触发报警,黑名单规则样式:
BasicRule wl:1402 "mz:$HEADERS_VAR:content-type";
第三方规则库(https://github.com/nbs-system/naxsi-rules
)有很多BasicRule规则。
CheckRule规则
定义当黑规则检测到的分数达到阀值时所采取的动作,只能在 nginx location级 设置,支持的动作有: LOG, BLOCK, DROP, ALLOW, 如:
location /a {
CheckRule "$XSS >= 8" BLOCK; // 当该一个请求的XSS攻击分值大于等于8时,根据DeniedUrl的设定进行跳转
CheckRule "$SQL >= 8" DROP; // 当该一个请求的SQL攻击分值大于等于8时,抛弃请求,不做任何回应
CheckRule "$RFI >= 8" BLOCK;
CheckRule "$TRAVERSAL >= 4" ALLOW;
CheckRule "$EVADE >= 4" LOG;
}
MainRule规则
naxsi自己的规则
规则示例:
MainRule "str:/*" "msg:mysql comment (/*)" "mz:BODY|URL|ARGS|$HEADERS_VAR:Cookie" "s:$SQL:8" id:1003;
(1)MainRule: 主规则,也即黑规则;
(2)“str:/*” // 匹配模式及匹配字串
匹配模式共有4种:
- str 如上例,表示是字符串查找匹配;
- rx 表示的是正则表达式匹配;
- d:libinj_xss 表示用libinjection库检测xss攻击;
- d:libinj_sql 表示用libinjection库检测sql注入攻击;
(3)“msg:mysql comment (/*)” //描述段
对该规则的描述;
(4)“mz:BODY|URL|ARGS|$HEADERS_VAR:Cookie” //匹配区域段
表示在一个请求,也就指定在http协议的那个区域做检测,