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 Specials | Cloudflare 特殊规则 | Free |
| OWASP Core Ruleset | OWASP 核心规则集 | Free |
| Cloudflare Managed Rules | Cloudflare 托管规则 | Pro+ |
| Cloudflare OWASP Rules | Cloudflare 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
启用托管规则集
- 进入 "Security" → "WAF"
- 点击 "Managed rules" 标签
- 找到要启用的规则集
- 点击开关启用
配置规则动作
每条规则可以设置不同的动作:
| 动作 | 说明 |
|---|---|
| Block | 阻止请求,返回 403 错误 |
| Challenge | 显示验证码挑战 |
| JS Challenge | JavaScript 挑战 |
| Log | 仅记录,不阻止 |
| Skip | 跳过规则 |
调整规则级别
对于 OWASP 规则集,可以调整 Paranoia Level:
- 点击规则集的 "Configure" 按钮
- 选择 Paranoia Level
- 保存设置
自定义防火墙规则
除了托管规则集,还可以创建自定义规则:
创建自定义规则
- 进入 "Security" → "WAF" → "Custom rules"
- 点击 "Create rule"
- 设置规则名称
- 配置匹配条件
- 选择动作
- 部署规则
匹配条件示例
示例一:阻止特定 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 攻击:
配置速率限制
- 进入 "Security" → "WAF" → "Rate limiting rules"
- 点击 "Create rate limiting rule"
- 设置规则名称
- 配置匹配条件
- 设置速率阈值
- 选择动作
速率限制示例
示例:限制登录接口
条件: 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 最佳实践
分阶段部署
- 日志模式:先将规则设置为 Log,观察误报
- 挑战模式:将可疑请求设置为 Challenge
- 阻止模式:确认无误报后,设置为 Block
白名单配置
对于误报的请求,可以创建例外规则:
条件: URI Path equals "/api/legitimate-endpoint"
动作: Skip → [规则 ID]
定期审查
- 定期查看安全事件日志
- 分析误报和漏报
- 调整规则配置
结合其他安全措施
- 启用 SSL/TLS
- 配置速率限制
- 使用 Bot 管理
- 开启 DDoS 防护
常见问题
WAF 导致网站功能异常怎么办?
- 在安全事件中找到被阻止的请求
- 确认是误报
- 创建例外规则或调整规则级别
如何测试 WAF 是否生效?
可以尝试访问带有攻击特征的 URL:
https://example.com/?id=1' OR '1'='1
如果 WAF 生效,请求会被阻止。
WAF 会影响性能吗?
Cloudflare WAF 在边缘节点执行,延迟通常小于 1ms,对性能影响极小。
参考链接
下一步
完成 WAF 配置后,接下来学习 页面规则,了解如何配置 URL 重定向和缓存规则。