跳到主要内容

WAF 防火墙

WAF(Web Application Firewall,Web 应用防火墙)是保护网站免受常见攻击的重要工具。Cloudflare WAF 可以识别和拦截 SQL 注入、XSS、CSRF 等攻击,保护网站安全。

WAF 基础知识

什么是 WAF?

WAF 是一种应用层防火墙,工作在 HTTP/HTTPS 层,通过检查 HTTP 请求来识别和阻止恶意流量。

用户请求 → Cloudflare WAF(检查请求)→ 放行/拦截

匹配攻击特征?
/ \
是 否
↓ ↓
拦截请求 转发到源服务器

WAF 能防护什么?

OWASP Top 10 攻击

  • SQL 注入(SQL Injection)
  • 跨站脚本(XSS)
  • 跨站请求伪造(CSRF)
  • 文件包含漏洞
  • 命令注入
  • 路径遍历

其他威胁

  • Bot 攻击
  • 暴力破解
  • 敏感信息泄露
  • 已知漏洞利用

Cloudflare WAF 的优势

云端部署:无需安装硬件或软件,开箱即用。

实时更新:规则库持续更新,防护最新威胁。

低延迟:在边缘节点执行,不影响网站性能。

可视化:详细的攻击日志和分析报告。

WAF 规则集

Cloudflare 提供多种规则集:

Cloudflare 托管规则集

规则集说明计划要求
Cloudflare SpecialsCloudflare 特殊规则Free
OWASP Core RulesetOWASP 核心规则集Free
Cloudflare Managed RulesCloudflare 托管规则Pro+
Cloudflare OWASP RulesCloudflare OWASP 规则Pro+

OWASP 核心规则集

OWASP Core Ruleset(CRS)是开源的 WAF 规则集,覆盖 OWASP Top 10 攻击:

Security → WAF → Managed rules → OWASP Core Ruleset

规则级别

  • Paranoia Level 1(低):基本防护,较少误报
  • Paranoia Level 2(中):标准防护
  • Paranoia Level 3(高):严格防护,可能有误报
  • Paranoia Level 4(最高):最严格,需要仔细调优

建议:从 Level 1 开始,逐步提高级别。

配置 WAF

启用托管规则集

  1. 进入 "Security" → "WAF"
  2. 点击 "Managed rules" 标签
  3. 找到要启用的规则集
  4. 点击开关启用

配置规则动作

每条规则可以设置不同的动作:

动作说明
Block阻止请求,返回 403 错误
Challenge显示验证码挑战
JS ChallengeJavaScript 挑战
Log仅记录,不阻止
Skip跳过规则

调整规则级别

对于 OWASP 规则集,可以调整 Paranoia Level:

  1. 点击规则集的 "Configure" 按钮
  2. 选择 Paranoia Level
  3. 保存设置

自定义防火墙规则

除了托管规则集,还可以创建自定义规则:

创建自定义规则

  1. 进入 "Security" → "WAF" → "Custom rules"
  2. 点击 "Create rule"
  3. 设置规则名称
  4. 配置匹配条件
  5. 选择动作
  6. 部署规则

匹配条件示例

示例一:阻止特定 IP 访问

条件: IP Source Address equals 192.0.2.1
动作: Block

示例二:阻止特定国家访问

条件: Country equals CN
动作: Challenge

示例三:保护管理后台

条件: 
- URI Path starts with "/admin"
- AND NOT IP Source Address is in list [trusted_ips]
动作: Block

示例四:限制 API 请求频率

条件:
- URI Path starts with "/api/"
- AND Rate Limit exceeds 100 requests per 1 minute
动作: Block

表达式编辑器

对于复杂的规则,可以使用表达式编辑器:

(http.request.uri.path contains "/admin" and 
not ip.src in {192.0.2.0/24})

速率限制

速率限制可以防止暴力破解和 DDoS 攻击:

配置速率限制

  1. 进入 "Security" → "WAF" → "Rate limiting rules"
  2. 点击 "Create rate limiting rule"
  3. 设置规则名称
  4. 配置匹配条件
  5. 设置速率阈值
  6. 选择动作

速率限制示例

示例:限制登录接口

条件: URI Path equals "/login" AND Request Method equals "POST"
阈值: 10 requests per 1 minute per IP
动作: Block for 10 minutes

示例:限制 API 调用

条件: URI Path starts with "/api/"
阈值: 100 requests per 1 minute per IP
动作: Challenge

Bot 管理

Bot 分类

Cloudflare 自动识别 Bot 并分类:

类型说明处理建议
Verified Bots已验证的好 Bot(如 Googlebot)允许
Likely Automated可能是自动化工具可疑
Likely Human可能是人类用户正常

Bot 防护配置

Security → Bots

Bot Fight Mode:阻止已知恶意 Bot(Free 计划)

Super Bot Fight Mode:更精细的 Bot 控制(Pro+ 计划)

  • 允许/阻止 Verified Bots
  • 处理 Likely Automated 请求

自定义 Bot 规则

可以针对不同类型的 Bot 设置不同的动作:

条件: cf.client.bot_info.verified_bot eq false
动作: Challenge

安全级别

安全级别设置

Security → Settings → Security Level
级别说明适用场景
Off关闭不推荐
Essentially Off几乎关闭低风险网站
Low一般网站
Medium推荐
High高风险网站
I'm Under Attack攻击模式正在被攻击

I'm Under Attack 模式

当网站遭受攻击时,可以开启此模式:

  • 所有访问者都会看到验证页面
  • 浏览器需要执行 JavaScript 才能继续访问
  • 有效阻止自动化攻击

注意:此模式可能影响正常用户体验,仅在攻击时开启。

安全事件分析

查看安全事件

Security → Events

可以看到:

  • 被阻止的请求
  • 触发的规则
  • 攻击来源
  • 攻击类型

事件详情

点击事件可以查看详细信息:

  • 请求 URL
  • 请求方法
  • 请求头
  • 触发的规则 ID
  • 动作类型

导出日志

可以将安全事件导出到外部系统:

  • 配置 Logpush
  • 推送到 S3、Google Cloud Storage 等

WAF 最佳实践

分阶段部署

  1. 日志模式:先将规则设置为 Log,观察误报
  2. 挑战模式:将可疑请求设置为 Challenge
  3. 阻止模式:确认无误报后,设置为 Block

白名单配置

对于误报的请求,可以创建例外规则:

条件: URI Path equals "/api/legitimate-endpoint"
动作: Skip → [规则 ID]

定期审查

  • 定期查看安全事件日志
  • 分析误报和漏报
  • 调整规则配置

结合其他安全措施

  • 启用 SSL/TLS
  • 配置速率限制
  • 使用 Bot 管理
  • 开启 DDoS 防护

常见问题

WAF 导致网站功能异常怎么办?

  1. 在安全事件中找到被阻止的请求
  2. 确认是误报
  3. 创建例外规则或调整规则级别

如何测试 WAF 是否生效?

可以尝试访问带有攻击特征的 URL:

https://example.com/?id=1' OR '1'='1

如果 WAF 生效,请求会被阻止。

WAF 会影响性能吗?

Cloudflare WAF 在边缘节点执行,延迟通常小于 1ms,对性能影响极小。

参考链接

下一步

完成 WAF 配置后,接下来学习 页面规则,了解如何配置 URL 重定向和缓存规则。