宝塔面板免费版在 6.x 之前版本中自带了 Nginx 防火墙功能。 6.x 之后,为推广收费防火墙插件,宝塔隐藏了免费的 Nginx 防火墙入口。宝塔面板收费防火墙跟免费版的还是不一样的。收费版功能上更加完善。
虽然隐藏,宝塔还是没有完全封掉这个入口,那么到底有没有办法可以开启这个隐藏的 Nginx 防火墙!
在改动前一定要备份
1、进入宝塔面板,打开 软件管理 > Nginx > 设置 > 配置修改
;
2、找到大约在第 13 行的 #include luawaf.conf;
,去掉前面的 #
符号(“#”代表注释),保存并重启 Nginx。
3、恭喜你,已经成功开启了防火墙!可以试着访问 http://你的网址/?id=../etc/passwd
,页面会弹出拦截提示,如下图:
那么问题来了:该怎么自定义这个防火墙的防护规则呢?
还是在宝塔面板里头,打开面板的文件管理,进入 /www/server/nginx/waf
目录,里面的 config.lua
文件就是防火墙的配置文件。每一项的具体含义如下所示:
配置文件中,RulePath
项对应的文件夹里存放的是具体的拦截规则。打开这个文件夹,可以看到里面有一些无后缀名的规则文件。其中每一个文件的作用如下:
args --GET 参数拦截规则 blockip --无作用 cookie --Cookie 拦截规则 denycc --无作用 post --POST 参数拦截规则 returnhtml --被拦截后的提示页面(HTML) url --url 拦截规则 user-agent --UA 拦截规则 whiteip --无作用 whiteurl --白名单网址
这些文件里,除了 returnhtml
(拦截提示页面)以外,其它的内容都最好不要改动,除非你正则学的比较好……否则很容易改出问题来。
如果改动了其中的内容,要重启 Nginx 才会生效。