Linux 宝塔面板免费版开启 waf 防火墙的方法

宝塔面板在 6.x 之前的版本中自带了 Nginx 防火墙功能(Nginx管理 > 过滤器),到了 6.x 之后,,,为了推行收费版的防火墙插件,宝塔官方把这个免费的防火墙入口给隐藏了。今天,就来说说如何开启这个隐藏的 Nginx 防火墙!

警告:以下内容在改动前一定要备份原文件!否则……

Here we go! 

1、进入宝塔面板,打开 软件管理 > Nginx > 设置 > 配置修改

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

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

Linux 宝塔面板免费版开启 waf 防火墙的方法

那么问题来了:该怎么自定义这个防火墙的防护规则呢?别急,请跟我一起来!

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

Shell

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

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

Shell

  1. args GET 参数拦截规则
  2. blockip –无作用
  3. cookie Cookie 拦截规则
  4. denycc –无作用
  5. post POST 参数拦截规则
  6. returnhtml –被拦截后的提示页面(HTML
  7. url url 拦截规则
  8. useragent UA 拦截规则
  9. whiteip –无作用
  10. whiteurl –白名单网址
 复制 文本

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

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

后记

1、其实这个“免费”的防火墙就是大名鼎鼎的 ngx_lua_waf。非宝塔面板用户也可以自己动手安装。详情请参阅:https://github.com/loveshell/ngx_lua_waf

2、宝塔面板那个收费的防火墙跟这个还是完全不一样的。功能上更加完善,使用起来更加方便。如果你有钱,也可以直接买个收费版~

3、[AD] 宝塔面板当前正在搞活动,如果想要购买专业版的宝塔面板,可以 点我 领取专属优惠券!

参考资料

[1]基于 ngx_lua 的 web 应用防火墙.loveshell.https://github.com/loveshell/ngx_lua_waf

[2].安装nginx+ngx_lua支持WAF防护功能.love19791125.https://www.cnblogs.com/love19791125/p/5114101.html

留下评论