应用安全

企业级 WAF 应该如何选择?

WAF 选型不是比规则条数。真正在生产环境中起作用的是三件事:误杀成本、能否表达你自己的业务逻辑、以及谁来维护它。文中给出 Cloudflare 的真实门槛。

直接回答: 决定 WAF 能不能在生产环境里用起来的是三件事:一次误杀的业务代价、规则语言能不能表达你自己的业务逻辑、以及上线之后谁长期维护它;规则条数是糟糕的替代指标。Cloudflare 这条线上,实际可用的起步点是 Pro——因为 Cloudflare 托管规则集和 OWASP 核心规则集从 Pro 才开始提供;自定义规则数量在 Free / Pro / Business 上分别限制为 5 / 20 / 100 条,正则表达式需要 Business 及以上,Log 动作和 WAF 攻击评分是 Enterprise 才有。

真正决定 WAF 采购的三件事

厂商对比通常先讲规则条数和 OWASP 覆盖。这两项都不能预测半年后这台 WAF 是否还在帮你。能预测的是:

  1. 误杀成本。每一次误拦合法请求,都是一次丢单、一次登录失败或一张工单。问题不是「它能拦住多少攻击」,而是「我能承受它对多少流量判断错误,以及多快能纠正」。
  2. 对业务逻辑的表达力。一台懂 SQL 注入却不懂你结账流程的 WAF,会在大促那天拦住你自己的客户。你必须能针对自己的端点、参数和调用方写规则。
  3. 谁维护它。托管规则需要归属:有人review检测结果、调阈值、决定某条规则何时从 log 转为 block。没人拥有的 WAF 会滑向「拦掉所有看起来奇怪的」,然后滑向被关掉。

WAF 由什么组成,按什么顺序执行

组件 作用 执行顺序
HTTP DDoS 托管规则集 在任何规则评估之前先吸收洪水 第 1 位
自定义规则 你自己的逻辑:路径、ASN、请求头、调用方 第 2 位
限流规则 按键控制请求速率 第 3 位
托管规则(Cloudflare / OWASP) 通用攻击特征 最后
应用画像(Application Profiles) 学习你的应用正常流量长什么样 检测与分析层

这个顺序比看上去更重要。托管规则放在最后,正是因为它最容易对你的流量判断错误;而你对自己业务确定的事情,应该在它参与判断之前就已经被处理完。

签约前要跑的五个测试

1. 你能看见 WAF 看到的东西吗? Enterprise 才提供 cf.waf.score——1 到 99,1 表示几乎可以肯定是恶意,99 表示极可能是干净的;100 表示请求到达打分系统但未被打分,Logpush 里的 0 表示根本没到那个阶段。分类字段对应 attack(1–20)、likely_attack(21–50)、likely_clean(51–80)、clean(81–99)。数值分与 sqli/xss/rce 子分值仅 Enterprise 可用;分类字段从 Business 起可用。 看不见分值,你就无法调优任何东西——只能猜。

2. 你能写出描述自己业务的规则吗? 自定义规则条数为 5 / 20 / 100 / 1,000,正则表达式需 Business 及以上。Log 动作仅 Enterprise——这是个真实约束,因为「先观察后阻断」正是避免误杀的办法。

3. 你期望的托管覆盖率在你的套餐上真的存在吗? Free Managed Ruleset 全套餐可用,但 Cloudflare Managed Ruleset 与 OWASP Core Ruleset 在 Free 上不可用,从 Pro 起才有。Sensitive Data Detection 仅 Enterprise。要按套餐核实覆盖,而不是假设宣传清单适用于你的档位。

4. 你能调阈值,还是只能二选一地阻断? WAF 侧的调节旋钮是 OWASP 的 score threshold:Low ≥ 60、Medium ≥ 40、High ≥ 25;偏执等级 PL1–PL4,默认 PL1。选某个等级意味着启用该等级及以下的所有规则,所以提高偏执度会同时提高覆盖率与误杀率。(注意:敏感度 High/Medium/Low/Essentially Off 属于 DDoS 托管规则集,不属于 WAF——这个混淆制造了大量无法落地的需求。)

5. 你需要多租户或账号级策略吗? WAF for SaaS 仅 Enterprise,账号级 WAF 配置同样如此。如果你要让客户用自己的域名接入,这不是可选附加项,而是产品本身。

各组件如何叠加

请求穿过 WAF 的路径:确定性高的在前,通用特征在后 1 · HTTP DDoS 托管规则集 洪水在规则评估前被削掉;全套餐 敏感度在这里 2 · 自定义规则(你的逻辑) 5 / 20 / 100 / 1,000 · 正则需 Business · Log 需 Ent 业务知识写在这里 3 · 限流规则 1 / 2 / 5 / 100 · 按数据中心计数 绝对上限留在应用层 4 · 托管规则(Cloudflare + OWASP) 通用特征;默认 PL1,阈值 25/40/60 Free 不可用 可见性:cf.waf.score 与 sqli/xss/rce = Enterprise · 分类字段 = Business 起
图 1:越往下,判断越通用。在依赖第 4 层之前,把你对自身流量的已知信息放进第 2、3 层。

Cloudflare 能力 vs 团队职责

事项 Cloudflare 提供的 你的团队必须做的
通用攻击覆盖 托管规则集;Cloudflare 与 OWASP 规则集从 Pro 起 为每条规则承担 log→block 的决策
业务专属策略 自定义规则(条数受套餐限制,正则需 Business+) 依据真实流量编写并评审规则,而不是套模板
检测可见性 Enterprise 提供 cf.waf.score 及子分值;Business 起提供分类 建立检测结果的review闭环
行为基线 Application Profiles——先在 Profile Analysis 中观察 决定哪些画像升级为阻断规则
多租户策略 WAF for SaaS(Enterprise) 定义每租户的覆盖规则与归属人
应用层正确性 — 输入校验、授权判断、参数化查询;WAF 不能替代这些

边界与不适用情况

  • WAF 不是输入校验层。它检查请求,但不知道你的代码拿这些请求做了什么。参数化查询、输出编码与授权判断仍是应用层工作。
  • WAF 不是 DDoS 产品。流量型与协议型洪水由 DDoS 层处理,WAF 处理载荷层攻击。买一个不等于覆盖另一个。
  • 分值不是判决。低分值是证据,不是证明。支付、改密码、导出这类高价值操作,应把分值与应用场景结合判断,而不是仅凭分值阻断。
  • 偏执等级是取舍,不是可以拉满的旋钮。选择 PLn 会启用 n 及以下的所有规则。偏执度升高时,覆盖率与误杀率同时上升;要靠度量来移动它,而不是靠热情。
  • 没有归属人的规则会腐化。每条自定义规则都应有作者、原因与复审日期。事故中临时加的规则若从不回看,就会成为下一次事故。

FAQ

免费套餐有 OWASP 覆盖吗? 没有。Free Managed Ruleset 全套餐可用,但 Cloudflare Managed Ruleset 与 OWASP Core Ruleset 从 Pro 起才有。如果 OWASP 覆盖是采购硬指标,Pro 是底线。

为什么我们不能把规则设成只记录? 自定义规则的 Log 动作仅 Enterprise。低套餐的实际替代做法有两种:先对范围很窄的表达式使用挑战动作,或者先用 Application Profiles 在分析模式下观察,再决定是否需要规则。

到底需要多少条规则? 比厂商暗示的少。少数几条范围清晰、描述你自己端点、调用方与速率预期的规则,通常胜过从模板复制的一大堆。条数是质量的糟糕代理指标。

偏执等级越高越安全吗? 不是。偏执等级与误杀率同步上升。「更安全」等于「拦住的攻击减去被拦的合法请求」,而第二项在你没有度量的情况下离开 PL1 之后增长得更快。

相关阅读

← 返回文章列表

Cloudflare 官方合作伙伴

正在为海外业务做架构决策?

企业版选型、架构咨询、风险评估——把你的场景告诉我们,我们给出可落地的方案和路径。

作为 Cloudflare 合作伙伴,我们可以为你提供:

预约咨询