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

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
    评论
nginx的try_files指令用于在处理请求时进行文件查找并执行不同的操作。它的语法如下: ``` try_files file ... uri; ``` 其中,`file`是要查找的文件路径,可以是绝对路径或相对路径。`uri`是要重写的URI或转发的URI。 当接收到一个请求时,Nginx会按照try_files指令中的顺序依次查找文件。如果找到了指定的文件,Nginx会返回该文件的内容。如果找不到文件,则会将请求重写为指定的URI,并继续查找。如果最后一个URI也找不到文件,则会返回404错误页面。 举个例子,假设我们有一个目录结构如下: ``` - /var/www/html/ - index.html - images/ - logo.png ``` 我们可以使用try_files指令来配置Nginx: ``` location / { try_files $uri $uri/ /index.html; } location /images/ { try_files $uri $uri/ =404; } ``` 在上面的配置中,如果请求的URI匹配到`/images/`,Nginx会先尝试查找该URI对应的文件。如果找到了文件,比如`/images/logo.png`存在,则会返回该文件。如果找不到文件,则会继续尝试查找`/images/logo.png/`这样的目录。如果目录也不存在,则会返回404错误。 对于其他请求,比如`/about`,Nginx会先尝试查找该URI对应的文件。如果找到了文件,比如`/var/www/html/about`存在,则会返回该文件。如果找不到文件,则会继续尝试查找`/var/www/html/about/`这样的目录。如果目录也不存在,则会返回`/var/www/html/index.html`文件的内容。 总之,try_files指令提供了一种方便的方式来处理文件查找和请求重写,使得我们能够更灵活地配置Nginx的行为。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zhjuan

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

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

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

打赏作者

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

抵扣说明:

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

余额充值