nginx+nasxi打造WAF
什么是Naxsi?
Naxsi是一个开放源代码、高效、低维护规则的Nginx Web应用防火墙模块,Naxsi的主要目标是帮助人们加固Web应用程序,以抵御SQL注入、跨站脚本、跨域伪造请求、本地和远程文件等包含的漏洞。
wl:ID (White List ID)
哪些拦截规则会进入白名单. 正确的语法是 :
wl:0 : 把所有拦截规则加入白名单
wl:42 : 把ID为42的拦截规则加入白名单
wl:42,41,43 : 把ID为42, 41 和 43的拦截规则加入白名单
wl:-42 : 把所有拦截规则加入白名单,除了ID为42的拦截规则
mz: (Match Zones)
指定的区域会生效本条白名单:
ARGS: GET的整个参数,如: foo=bar&in=%20
$ARGS_VAR: GET参数的参数名, 如 foo=bar&in=%20中的 foo和in
$ARGS_VAR_X: 正则匹配的GET参数的参数名
HEADERS: 整个HTTP协议头
$HEADERS_VAR: HTTP协议头的名字
$HEADERS_VAR_X: 正则匹配的HTTP协议头的名字
BODY: POST的整个参数内容
$BODY_VAR: POST参数的参数名
$BODY_VAR_X: 正则匹配的POST参数的参数名
URL: URL(?前的)
$URL_X: 正则匹配的URL(?前的)
FILE_EXT: 文件名 (POST上传文件时上传的文件名)
使用自定义规则,添加所有MainRule id规则,将GET请求参数id加入白名单,规则如下:
BasicRule wl:0 "mz:$ARGS_VAR:id";