1.4 WAF 网页防火墙实战

一句话判断

WAF 不是“开了就安全”的开关,而是“先观察、再拦截、勤看记录”的持续调优过程。最稳的上线路线:全局开关 → 网站开关 → 观察模式跑两天 → 看命中记录微调 → 切防护模式。

先纠正三个常见误解

误解一:“社区版没有 WAF。” 错。社区版可以用 WAF 基础防护,包括黑白名单、网站设置和全局设置中的基础规则,不需要任何许可证。专业版/企业版多的是报表、拦截记录和高级规则。

误解二:“开了 WAF 就挡得住所有攻击。” WAF 降低的是常见 Web 攻击和恶意扫描带来的风险——参数注入、XSS、扫描器乱扫。应用自身的漏洞(比如你写的代码里有 SQL 拼接)WAF 能挡一部分,不是全部。代码安全和 WAF 是两条防线,不是替代关系。

误解三:“规则越严越好。” 拦截规则可能影响正常业务。最严的配置往往最先崩的是自己的用户——登录请求被拦、上传被拦、支付回调被拦。

使用前提和入口

官方列的三个前提,缺一不可:

  1. 已通过应用商店安装并运行 OpenResty;
  2. OpenResty 版本满足 WAF 页面提示的最低版本;
  3. 用网站设置前,至少已创建一个网站。

页面检测到 OpenResty 没装或版本太低时,会直接给你安装/升级入口。另外要记住:OpenResty 一停,网站和 WAF 防护同时失效——WAF 的规则是靠 OpenResty 执行的。

入口在左侧菜单 WAF。社区版有首页、黑白名单、网站设置、全局设置;导入专业版/企业版许可证后多出攻击报表、拦截记录、封锁记录。

生效范围:一个必须理清的逻辑

这是 WAF 最容易搞不懂的地方,官方原话是:

WAF 总开关和网站开关需要同时开启。

画成图就是:

全局总开关(开)  +  网站开关(开)  →  该网站受保护
全局总开关(开)  +  网站开关(关)  →  该网站不受保护
全局总开关(关)                      →  所有网站都不受保护(规则不删)

还有一条关于“网站标识”的规则:

全局设置中带有【网站】标识的项目是新建网站的默认配置;已有网站仍需在【网站设置】中单独确认。网站设置只影响当前选中的网站。

翻译成大白话:全局设置改了,不会自动覆盖已有网站。老站得逐个去网站设置里确认。这个设计是为了防止“一刀切”误伤,但很多人不知道,以为全局关了某规则就全关了,结果老站没生效。

四步上线法

官方给的建议顺序,我加上实战注解:

第一步:全局设置开总开关。 先把基础规则按默认值启用。

第二步:网站设置里开目标网站的 WAF。 别一次全开,先挑一个非核心站点。

第三步:观察模式跑起来。 观察模式的定义是“记录命中结果但不阻断请求”。这是 WAF 最有价值的功能——让你在不影响任何用户的前提下,看到“如果开了防护会拦错什么”。

第四步:验证关键请求。 重点验证四类:

请求类型 为什么容易中招
登录 表单里有用户名密码,参数规则可能误判
上传 文件内容里可能含敏感字符串
API JSON 参数多、长,规则容易误命中
回调(Webhook/支付) 第三方来的请求,UA 和参数都不像正常用户

观察模式至少跑两天,覆盖一个完整的业务周期(周末和工作日流量特征不同)。

版本能力对照表

直接上官方的对照表(精简版),决定你要不要付费:

功能 社区版 专业版 / 企业版
黑白名单(IP、URL、User-Agent、IP 组) 支持 支持
网站开关、防护/观察模式、检测强度 支持 支持
访问频率、攻击频率、404 频率限制 支持 支持
URL 频率限制 不支持 支持
默认规则(参数/URL/HTTP/Cookie/Header/UA、SQL 注入、XSS) 支持 支持
漏洞防御、应用规则 不支持 支持
文件上传限制、CDN 真实 IP 支持 支持
自定义规则(ACL)、地区访问限制 不支持 支持
恶意 IP 组、蜘蛛 IP 池、IP 地址库 支持 支持
自定义拦截页面、日志配置 不支持 支持
首页统计、攻击报表、拦截记录、封锁记录 不支持 支持

怎么选:个人/小站,社区版的黑白名单 + 基础规则 + 频率限制已经挡住绝大多数扫描器;企业或有合规要求,专业版/企业版的 ACL、地区限制和拦截记录才是刚需。价格以官网为准。

频率限制:四个限制四种用途

这是 WAF 里最实用的防线,区分清楚:

限制 统计什么 典型用途
访问频率限制 单位时间内某 IP 的请求总数(全局)或单 URL 请求数(URL 模式) 防爬虫、防刷接口
攻击频率限制 同一 IP 命中 WAF 规则的次数 自动封“一直在试规则”的攻击者
404 频率限制 同一 IP 触发 404 的次数 封扫描器(特征就是狂请求不存在的路径)
URL 频率限制(付费) 指定 URL 的周期/阈值/封锁时间 精确保护关键接口(如登录、验证码)

封锁行为是临时的:封锁时间到期自动解除,重启 OpenResty 也会清除所有临时封锁。要长期封,得进 IP 黑名单。

实战建议:404 频率限制是性价比最高的一条——扫描器一启动就狂 404,几乎零误伤(正常用户不会一分钟请求几十个不存在的页面)。

黑白名单:规则不多,但要想清楚用

进入 WAF → 黑白名单,可以配全局 IP、URL、User-Agent 黑白名单,还能维护可复用的 IP 组。

规则 黑名单 白名单
IP 拒绝匹配来源 跳过后续所有 WAF 检查
URL 阻止匹配路径 让匹配路径跳过后续检查
User-Agent 拦截扫描器 UA 放行可信客户端

IP 组是好东西:集中维护一组 IP/CIDR,在黑白名单里重复引用,支持导入导出。CDN 出口 IP、办公网 IP、监控系统 IP,都适合做成 IP 组,一处维护处处生效。

三个必须记住的坑:

坑一:User-Agent 能伪造。 官方明确说“User-Agent 可以被客户端伪造,不能单独作为身份认证依据”。别把安全押在 UA 上。

坑二:白名单是“跳过后续所有检查”。 所以白名单范围一定要最小化。官方警告:“白名单不应作为长期规避规则问题的默认方案。”——发现误拦截,正确做法是调规则或缩小匹配范围,不是把整个 URL 加白名单。

坑三:过宽的黑名单断自己业务。 封 IP 段的时候想清楚这个段里有没有你的用户。

拦截记录:付费版最值钱的功能

拦截记录展示被 WAF 记录的请求,可按网站、命中规则、处理动作、URL、来源 IP 筛选。处理动作有三种:允许、拦截、观察。

它最值钱的地方不是“看”,而是可以直接从记录反向操作:

  • 选中记录,把来源 IP 或 IP 段加入黑名单;
  • 选中记录,把 URL 加入白名单;
  • 按筛选条件创建导出任务;
  • 查看请求详情(点【查看】)。

这就是调优的完整闭环:观察模式记录 → 看哪些是误伤 → 误伤的加白名单/调规则 → 真攻击的加黑名单 → 切防护模式。

封锁记录页是专门看“被频率限制临时封的 IP”的,可以单独解除封锁,也可以把临时封锁升级成长期黑名单。注意官方的提醒:

解除封锁只影响当前状态,如果触发条件仍然存在,该 IP 可能再次被封锁。

调优的真实案例:某站切了防护模式后,客服反馈部分用户登录失败。去拦截记录按 URL 筛登录接口,发现某条参数规则把密码里的特殊字符当成了注入特征。处理方式:把这条规则在该网站单独停用(不是关掉整个默认规则),观察一天,问题消失。这就是“最小调整”原则。

真实 IP:CDN 场景的生死线

如果你的站点套了 CDN 或在反向代理后面,WAF 看到的来源 IP 全是 CDN 的出口 IP。这时候黑白名单和频率限制全部失效——你封的是 CDN,等于封了所有用户。

解决方式是在全局/网站设置的 CDN 项里配置真实 IP 获取方式:从指定请求头、常用请求头列表或 X-Forwarded-For 中取。

官方的警告必须严肃对待:

只有在请求确实经过可信 CDN 或反向代理时才启用 CDN 配置,并确认代理会覆盖客户端传入的同名请求头。错误信任来源 IP 请求头可能导致黑白名单和频率限制被绕过。

判断标准:你的 CDN/代理会不会覆盖客户端传来的同名头?会,才安全。不会,攻击者就能伪造 X-Forwarded-For 绕过你的一切 IP 限制。

网站配置里也有一个真实 IP设置(配置客户端 IP 获取方式及可信 IP 来源),两者目的一致,配合使用。

三个全局配置项的实用价值

配置 干什么 建议
恶意 IP 组 启用并更新 1Panel 提供的恶意 IP 数据 建议开,免费的威胁情报
蜘蛛 IP 池 选择允许的搜索引擎蜘蛛 开,避免把百度/Google 蜘蛛封了
IP 地址库 更新 IP 地理位置数据 用地区访问限制前必须更新

蜘蛛 IP 池值得单独说:SEO 站点最怕误封搜索引擎蜘蛛。开了蜘蛛 IP 池,白名单里就等于自动有了主流蜘蛛,配合频率限制使用,既挡爬虫又不挡搜索引擎。

上线前检查清单

环境检查
  □ OpenResty 已安装且版本满足要求
  □ OpenResty 正在运行
  □ 目标网站已创建

开关与模式
  □ 全局 WAF 总开关已开启
  □ 目标网站 WAF 开关已开启
  □ 先用【观察模式】跑 2 天
  □ 检测强度默认【标准】(严格模式需先在全局默认规则开启)

规则确认
  □ 四类关键请求已验证(登录、上传、API、回调)
  □ 拦截记录里无大量误伤
  □ 误伤已用最小范围白名单/规则调整处理
  □ CDN 场景已配置真实 IP

切防护模式后
  □ 持续观察 24 小时拦截记录
  □ 客服/用户反馈渠道通畅
  □ 确认蜘蛛 IP 池已开启
  □ 保留回滚方案(可随时切回观察模式或关网站开关)

最后一句:WAF 的价值在于持续运营,不是配一次就完事。业务变了、规则更新了、攻击手法变了,都要回来看一眼拦截记录。把它当成“需要定期照看的安全设备”,而不是“装完就行的保险丝”。

更完整的规则说明见 《1Panel 官方文档:功能手册》 的 WAF 系列章节。

下一章:网站讲完了,我们进入第二章——数据库进阶,那是另一套“平时不起眼、出事要人命”的系统。