宝塔面板6.X开启隐藏的 waf 防火墙的方法

宝塔面板21字数 1824阅读模式

今天大鸟配置NGINX,无意中发现了一行代码,额,大鸟也是一阵激动,默认的宝塔面板是安装了ngx_lua_waf模块的,在5.9版本中面板集成了这个简易waf,所以我们可以在5.9版本的nginx中看到过滤器这个功能,并且可以设置。

可惜在6.X版本中,宝塔面板阉割了很多功能,包括好用的过滤器,等等。但是宝塔面板还是编译了ngx_lua_waf模块,我们今天看看如何在宝塔面板6.X中开启隐藏的nginx防火墙。

先看看大鸟发现的是什么代码:

http
    {
        include       mime.types;
	#include luawaf.conf;

聪明的你一定发现了什么,对宝塔面板注释了#include luawaf.conf,我们只需要去掉#即可开启隐藏的防火墙。

第一:NGINX配置修改

1、打开 软件管理 > Nginx > 设置 > 配置修改

2、找到大约在第 13 行的 #include luawaf.conf;,去掉前面的 # 符号(“#”代表注释),保存并重启 Nginx。如图:

宝塔面板6.X开启隐藏的 waf 防火墙的方法

3、恭喜你,已经成功开启了防火墙!可以试着访问 http://你的网址/?id=../etc/passwd,页面会弹出拦截提示,如下图:

宝塔面板6.X开启隐藏的 waf 防火墙的方法

第二:配置规则

既然,已经开启了防火墙,那么规则在哪里?

打开面板的文件管理,进入 /www/server/nginx/waf 目录,里面的 config.lua 文件就是防火墙的配置文件。每一项的具体含义如下所示:

RulePath = "/www/server/panel/vhost/wafconf/"   --waf 详细规则存放目录(一般无需修改)
attacklog = "on"                                --是否开启攻击日志记录(on 代表开启,off 代表关闭。下同)
logdir = "/www/wwwlogs/waf/"                    --攻击日志文件存放目录(一般无需修改)
UrlDeny="on"                                    --是否开启恶意 url 拦截
Redirect="on"                                   --拦截后是否重定向
CookieMatch="off"                               --是否开启恶意 Cookie 拦截
postMatch="off"                                 --是否开启 POST 攻击拦截
whiteModule="on"                                --是否开启 url 白名单
black_fileExt={"php","jsp"}                     --文件后缀名上传黑名单,如有多个则用英文逗号分隔。如:{"后缀名1","后缀名2","后缀名3"……}
ipWhitelist={"127.0.0.1"}                       --白名单 IP,如有多个则用英文逗号分隔。如:{"127.0.0.1","127.0.0.2","127.0.0.3"……} 下同
ipBlocklist={"1.0.0.1"}                         --黑名单 IP
CCDeny="off"                                    --是否开启 CC 攻击拦截
CCrate="300/60"                                 --CC 攻击拦截阈值,单位为秒。"300/60" 代表 60 秒内如果同一个 IP 访问了 300 次则拉黑

配置文件中,RulePath 项对应的文件夹里存放的是具体的拦截规则。打开这个文件夹,可以看到里面有一些无后缀名的规则文件。其中每一个文件的作用如下:

args        --GET 参数拦截规则
blockip     --无作用
cookie      --Cookie 拦截规则
denycc      --无作用
post        --POST 参数拦截规则
returnhtml  --被拦截后的提示页面(HTML)
url         --url 拦截规则
user-agent  --UA 拦截规则
whiteip     --无作用
whiteurl    --白名单网址

这些文件里,除了 returnhtml(拦截提示页面)以外,其它的内容都最好不要改动,除非你正则学的比较好……否则很容易改出问题来。如图:

宝塔面板6.X开启隐藏的 waf 防火墙的方法

如果改动了其中的内容,记得要重启 Nginx 才会生效哦!!!!

第三:总结

其实这个免费的防火墙就是 ngx_lua_waf。大鸟在之前的文章里面也说过了:BT(宝塔面板)6.6nginx自编译 ngx_lua_waf web 应用防火墙模块 !其他面板用户,也可以自己安装这个个模块,功能非常强大。

额,宝塔面板那个收费的防火墙跟这个还是完全不一样的。功能上更加完善,使用起来更加方便。如果你有钱,也可以直接买个收费版,没必要用这个了,而且用起来还挺麻烦的。

想要折腾下的,赶紧去试试吧,也赶紧用上这个免费的防火墙。

文章参考:

https://github.com/loveshell/ngx_lua_waf

https://www.cnblogs.com/love19791125/p/5114101.html

weinxin
我的微信
微信公众号
关注大鸟博客公众号
 
大鸟
评论  21  访客  16  作者  5
    • 缙哥哥
      缙哥哥 7

      笑哭,发现6X版本开启后,已经没有5X那个防火墙面板了!

        • 大鸟
          大鸟

          @ 缙哥哥 你的站貌似访问不稳定啊!话说你的站好杂乱!!!

            • 缙哥哥
              缙哥哥 7

              @ 大鸟 是的,可能是因为360的拦截,也有可能是因为访问太多(这段时间3M带宽2w-5w的IP访问),所以有时候无法打开!对了,你的博客不支持feed订阅么?

            • 大鸟
              大鸟

              @ 缙哥哥 这个流量太可怕了,缓存是必须的,动静分离必须做了,静态资源要挂上CDN,硬盘必须ssd,额独服都可以上了。大神啊,膜拜!!feed可以订阅,我没开!

                • 缙哥哥
                  缙哥哥 7

                  @ 大鸟 哈哈,你的教程很好,至少很符合我,所以先订阅个!目前已经做了内存缓存、MySQL独立+缓存、动静态分离、nginx缓存还没试过(看到你的教程想试试),独服舍不得,现在服务器花费一年500左右。

                • 大鸟
                  大鸟

                  @ 缙哥哥 订阅:https://www.daniao.org/feed/ 首页我已经添加了,额,nginx缓存可以非常值得试试,你的动静分离不彻底哈,js这些都没有分离。不过流量在大点,就是优化也不给力了,你要升级配置。

                    • 缙哥哥
                      缙哥哥 7

                      @ 大鸟 我用的是免费的对象存储&CDN加速,通过FTP传输,而不是像阿里云、七牛那样的。所以没有常规插件,需要自己想办法。由于JS和CSS文件的缓存,正在请教主题作者哪些需要注意的。然后我在思考等阿里云今年的285服务器特价或者上别的服务器。

                  • calonye
                    calonye 1

                    我手动打开include luawaf.conf后,发现wordpress里的小工具无法保存,重新注释后又可以保存。所以确定是这个防火墙影响的。但不知道如何做到打开防火墙又可以正常使用。大鸟有研究过吗?

                    • calonye
                      calonye 1

                      测试了以下,POST 攻击拦截不开启就好了。

                        • 大鸟
                          大鸟

                          @ calonye 动作好快,谢谢你的贴心告知,我也是这样设置的,效果其实还不错,我自己站也开启了默认的防火墙!

                        • MAY的SEO博客
                          MAY的SEO博客 4

                          这个免费的防火墙按照教程,我也开启了,感谢分享

                          • 陈叔叔
                            陈叔叔 2

                            大佬求解惑 :?: ,我开启了隐藏防火墙的cc防护了,然后我用了另一台服务器的3个站同时采集这台开启了隐藏cc防护的服务器网站, 配置是300/60,怎么好像并没有被封ip啊,还是采的好好的,然后这些被封禁的ip放在哪个文件下呢?

                              • 大鸟
                                大鸟

                                @ 陈叔叔 宝塔新出了一个插件,可以看看这篇教程,在设置看看。https://www.daniao.org/7174.html

                                  • 陈叔叔
                                    陈叔叔 2

                                    @ 大鸟 谢谢大佬,新的插件确实很方便,可是我还是疑惑为什么之前的开启隐藏防火墙的防cc为啥不起作用啊 :shock:

                                      • 大鸟
                                        大鸟

                                        @ 陈叔叔 可能没触发,所以没用。你还要设置的小一点。

                                          • 陈叔叔
                                            陈叔叔 2

                                            @ 大鸟 好的,我试试

                                            • 陈叔叔
                                              陈叔叔 2

                                              @ 大鸟 鸟叔,我调小了,改成 30/10 也还是不生效,然后看你参考文章的配置 在http中加上括号的内容 CCDeny=”on” –是否开启拦截cc攻击(需要nginx.conf的http段增加luashareddict limit 10m;) ,保存不了,不知为何就是触发不了cc防护

                                                • 大鸟
                                                  大鸟

                                                  @ 陈叔叔 采集不好防。防火墙没有认为采集触发了cc

                                      匿名

                                      发表评论

                                      匿名网友

                                      :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

                                      确定