WAF 使用说明和问题解答

WAF 更新之后,收到了很多反馈,发现很多同学是第一次用 WAF,碰到一些问题,所以写一个 WAF 的问答贴

为什么我保存文章的接口会报错?

在 Halo 中写文章,保存的时候,因为请求中存在一些 html 的代码,所以会被识别为 XSS ,因为 WAF 是无法判断这些代码是正常还是异常,所以为了安全,都会拦截

解决办法:
像 Halo 、1Panel 这种现代化的应用,基本不会存在 XSS 和 SQL 注入漏洞,1Panel 更是登录之后才能操作,所以可以关闭这些检查

操作步骤:
在 【WAF】-【网站设置】中
默认规则-参数规则 => 关闭
默认规则-其他-SQL 注入防御,XSS 防御 => 关闭

WAF 把我自己拉黑了怎么办?

频率访问限制默认配置是 20 秒内访问 100 次会拉黑用户 IP,有一些网站首次打开请求数会比较多,所以可能会把正常访问的 IP 拉黑

解决办法:
增加频率访问限制的阈值

操作步骤:
在 【WAF】-【网站设置】中
频率限制-频率访问限制-减少周期 或者 增加频率
几个推荐的配置
10 秒 200 次
10 秒 400 次
注意:这个次数是 单 IP 的访问次数,并不是所有访问网站的人的次数
如果一个 IP 在 10 秒内 给你的网站发了 400 次 请求,那么大概率是用脚本,这种直接封禁就可以

WAF 的配置为什么没有生效?

1Panel WAF 的规则配置,是需要在全局设置和网站设置都打开 才会生效
比如 地区访问限制 ,默认没有打开,需要在全局设置和网站设置都打开

说明:
全局设置的配置,如果带有【网站】标签,那么就是这样的准则

  1. 全局设置中的 开启-关闭 会影响所有网站
    例如下面这种

  1. 全局设置中的配置,会被新建网站继承
    例如你在全局配置中设置了频率访问限制 10 秒内 200次,那么新建的网站就会有这个配置
    如果你关闭了参数规则,那么新建的网站也会关闭参数规则

ACL 是什么?怎么用

ACL 是一个计算机术语 :Access Control List (访问控制列表)
在 1Panel 的 WAF 中,是用来自定义一些规则
比如:设置访问 /menu/*** 路径的用户先触发人机验证
那么可以这样配置

注意:需要在【网站设置】中配置才能生效
全局设置中的 ACL 是默认配置,新建网站的时候才会带过去

3 个赞

我没买WAF啊,为什么还是被拦了,这个不是付费功能吗

这个waf依赖于别的功能吗?还是说只要是升级了专业版就能直接使用?

WAF 有一部分免费功能 可以在 WAF-全局设置-设置-总开关中关掉

1 个赞

依赖于 OpenResty

这个功能默认关闭吧,或者你拦截给个提示啊,一个项目一次加载太多资源直接 net::ERR_EMPTY_RESPONSE ,害我查了半天

1 个赞

后续版本会默认关闭

很详细的教程,学到了 :clap:

查了半天,还以为是OpenResty配置有误,都卸载重装了好几次了,结果是waf拦截了,而且一点提示都没,真的很无语 :sweat_smile:,要不是看到这个帖子,我都准备卸载OpenResty自己装NGINX了

3 个赞

拦截的IP好歹有个可以看到的地方啊,什么途径都没有,老把自己给封了,还不能自己解封

重建 OpenResty 可以解封

问一下,我还是想用WAF功能,要怎么设定才能保持WAF开的同时Halo不出故障?

  1. 给自己的 IP加 IP 白名单
  2. 把 halo 的某些接口加 URL 白名单
1 个赞

真的感觉现在的新WAF很不好用,升级了新版本后,waf中的lua脚本就不能用了,我发现在网站配置中自动删除了 access_by_lua_file /www/common/waf/access.lua;
set $RulePath /www/sites/xxx.com/waf/rules;

新版本的 WAF 重构了 以前的 lua 脚本已经失效
如果要使用自己的 Lua 脚本
你需要在OpenResty 主配置文件重新修改挂载信息

挂有啥用呢?挂上了LUA能用了,WAF就摆烂。两者不能共存,逼着用户做选择,要么升级专业版,要么就放弃LUA或WAF。这我都不知道咋形容。

你可以有多种方式,使用多个 Lua 脚本,或者你可以继续使用原来的 WAF Lua 脚本并修改,并不冲突

1 个赞