基于nginx的waf方案naxsi源码理解(3)_规则详解

本文深入探讨Naxsi Web应用防火墙的规则类型,包括MainRule(黑规则)、BasicRule(白名单规则)和CheckRule(评分规则)。MainRule使用libinjection检测SQL和XSS攻击,BasicRule防止误报,CheckRule定义分数阈值决定行动。详细介绍了每种规则的结构和用途。
摘要由CSDN通过智能技术生成

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协议的那个区域做检测,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhjuan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值