【攻防】启用宝塔面板内置 Nginx WAF

本文介绍了如何在宝塔面板中启用基于lua脚本的ngx_lua_wafWeb应用防火墙,包括启用步骤、配置选项和存在的问题,如Cookie拦截可能引发的500错误及POST拦截对WordPress的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ngx_lua_waf 是一个基于 lua 脚本的开源 WAF (Web应用防火墙),用于抵御第七层攻击。如果你装有宝塔面板,使用 Nginx 作为 Web 服务器,并且没有使用其他 WAF,不妨在几秒钟内启用它。

当然由于这款 WAF 年代久远,如果你已经使用了其他 WAF,没有必要专门换成它(不过我对比了下宝塔的免费 Nginx 防火墙,两个的规则正则表达式非常相似,效果应该也类似)

 GitHub
loveshell/ngx_lua_waf
ngx_lua_waf是一个基于lua-nginx-module(openresty)的web应用防火墙

启用 ngx_lua_waf

宝塔面板安装的 Nginx 默认编译了 lua_nginx_module,也已经下载配置好了 ngx_lua_waf,唯独就是把启用代码注释掉了。我们进入 Nginx 配置文件,找到被注释的 luawaf 启动配置,取消注释保存即可。

我们测试一个被拦截的规则,看看 WAF 是否能捕获到。我们在网站链接后加上 ?id=../etc/passwd 来访问,这个 GET 请求将会触发安全规则而被拦截。

如果图方便的话,到这里就可以结束了。如果想要修改配置,一定要看最后一节“存在问题”,以免网站功能出现异常。

调整 WAF 配置

WAF 配置文件为 /www/server/nginx/waf/config.lua,可根据需求进行调整功能开关,默认如下:

RulePath = "/www/server/panel/vhost/wafconf/" --拦截规则目录

attacklog = "on"              --是否启用日志

logdir = "/www/wwwlogs/waf/"  --日志位置

UrlDeny="on"                  --是否拦截URL攻击

Redirect="on"                 --拦截后是否重定向

CookieMatch="off"             --是否拦截Cookie攻击

postMatch="off"               --是否拦截POST攻击

whiteModule="on"              --是否开启URL白名单

black_fileExt={"php","jsp"}   --不允许上传的文件类型

ipWhitelist={"127.0.0.1"}     --IP白名单,用逗号分隔

ipBlocklist={"1.0.0.1"}       --IP黑名单,用逗号分隔

CCDeny="off"                  --是否拦截CC攻击

CCrate="300/60"               --拦截阈值,格式解释:60s内同一IP只能请求同一地址180次

WAF 规则文件在 /www/server/panel/vhost/wafconf,可根据需求调整拦截规则,格式是正则表达式,文件名分别为:

  • args:GET 攻击拦截规则

  • cookie: Cookie 攻击拦截规则

  • post:POST 攻击拦截规则

  • url:URL 攻击拦截规则

  • user-agent:UA 拦截规则

  • whitelist:URL 白名单

宝塔面板的版本多了一些文件,经过实验,returnhtml 为拦截后返回的 HTML,除它之外的文件没有用。另外,你可能会在 /www/server/nginx/waf/wafconf 也找到一份配置,但是那个配置是无效的,忽略即可。

存在问题

由于这款 WAF 年久失修,已经没有人进行维护,所以存在一点需要注意的问题:

  • Cookie 拦截有时候会导致 500 错误,作者并没有成功复现这个问题,他给的建议是如果有问题就关闭该功能。

  • POST 拦截规则与 WordPress 后台有冲突,可以选择把自己的 IP 加入白名单或者直接关闭 POST 拦截功能。

  • CC 攻击无法拦截具有 301 跳转的地址,不过发送一个 301 跳转响应基本不消耗服务器资源,即使被 CC 了也没事。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值