为什么用Cloudflare保护WordPress?
Cloudflare是全球最大的CDN和安全服务提供商之一,其免费计划已经包含了相当实用的WAF功能。对于WordPress网站主来说,Cloudflare的核心价值在于:
- 流量在到达你的服务器之前就被过滤:不同于Wordfence(在服务器本地运行),Cloudflare在网络边缘拦截恶意请求,完全不消耗你的服务器资源
- DDoS缓解:Cloudflare的基础DDoS防护对小型网站基本免费且有效
- 全球CDN加速:静态资源缓存,提升网站加载速度
- SSL证书:免费提供HTTPS
- 隐藏真实IP:访客和攻击者看到的是Cloudflare的IP,你的服务器真实IP被隐藏
免费版的局限: WAF托管规则集有限(付费Pro版规则更完整),每月WAF请求数有上限(但对一般网站完全够用)。
—
第一步:将域名接入Cloudflare
1.1 注册Cloudflare账户
前往 cloudflare.com 注册账户,选择”Free Plan(免费)”。
1.2 添加你的域名
- 登录Cloudflare仪表盘
- 点击”Add a Site”(添加站点)
- 输入你的域名(如
example.com) - 选择Free计划
1.3 Cloudflare会扫描你现有的DNS记录
查看扫描到的DNS记录是否完整(A记录、MX记录、CNAME等),如有遗漏手动添加。
重要: 确认你的主域名(example.com)和www子域名(www.example.com)的A记录旁边有橙色云图标(表示流量经过Cloudflare代理)。
1.4 修改域名Nameserver
Cloudflare会提供两个Nameserver地址(如 adam.ns.cloudflare.com),前往你的域名注册商控制面板:
- 找到Nameserver / DNS服务器设置
- 将现有Nameserver替换为Cloudflare提供的两个地址
- 保存后等待DNS生效(通常24-48小时,实际多在1-2小时内)
1.5 确认接入成功
在Cloudflare仪表盘,当域名状态显示”Active”即接入成功。
第二步:配置基础安全设置
2.1 SSL/TLS设置
进入 SSL/TLS → 概述:
- 选择”Full (strict)”模式(如果你的主机已有SSL证书)
- 或选择”Full”(如果主机SSL是自签名证书)
- 不要选择”Flexible”(会导致安全降级)
2.2 启用”始终使用HTTPS”
SSL/TLS → 边缘证书:
- 开启”始终使用HTTPS”(自动将HTTP重定向到HTTPS)
- 开启”HSTS”(谨慎:开启后难以关闭)
2.3 安全级别设置
安全性 → 设置:
- 安全级别:中(Medium,推荐起点)
- 挑战通道TTL:30分钟
- 浏览器完整性检查:开启
第三步:配置WAF规则
这是本教程的核心部分。进入 安全性 → WAF。
3.1 开启托管规则集(免费版)
WAF → 托管规则:
- 启用”Cloudflare Free Managed Ruleset”(免费版可用)
- 该规则集包含对OWASP Top 10攻击的基础防护
3.2 创建自定义WAF规则(关键步骤)
点击”创建规则”,逐一添加以下规则:
规则1:保护wp-admin登录页
名称:Block wp-admin brute force
条件:
(http.request.uri.path contains "/wp-admin/" AND
not ip.src in {你的IP地址})
操作:挑战(Managed Challenge)或 阻止(Block)
说明:对所有非你的IP的 /wp-admin/ 访问强制验证(建议用挑战而非直接阻止,避免误伤搜索引擎)
规则2:阻止xmlrpc.php
名称:Block xmlrpc.php
条件:
(http.request.uri.path eq "/xmlrpc.php")
操作:阻止(Block)
说明:xmlrpc.php是WordPress的XML-RPC接口,常被用于暴力破解攻击。除非使用Jetpack等需要XML-RPC的插件,否则直接封锁。
规则3:阻止wp-login.php暴力破解
名称:Rate limit wp-login
条件:
(http.request.uri.path eq "/wp-login.php" AND
http.request.method eq "POST")
操作:速率限制(Rate Limiting)- 5次/分钟后阻止
规则4:阻止敏感文件访问
名称:Block sensitive files
条件:
(http.request.uri.path contains "wp-config.php") OR
(http.request.uri.path contains ".env") OR
(http.request.uri.path contains "/.git/")
操作:阻止(Block)
规则5:阻止恶意User-Agent
名称:Block bad bots
条件:
(http.user_agent contains "zgrab") OR
(http.user_agent contains "masscan") OR
(http.user_agent contains "sqlmap") OR
(http.user_agent eq "")
操作:阻止(Block)
第四步:配置Bot管理
安全性 → 机器人:
- 开启”机器人攻击模式”(免费版有限制,但仍有效)
- 开启”浏览器完整性检查”
第五步:配置防火墙规则(针对WordPress)
安全性 → 设置 → 防火墙规则,添加:
规则:限制wp-comments-post.php(防垃圾评论)
条件:
(http.request.uri.path eq "/wp-comments-post.php" AND
http.referer ne "https://你的域名.com")
操作:阻止
第六步:配置页面规则(缓存优化)
进入 规则 → 页面规则(免费版3条规则):
规则1:后台不缓存
URL:你的域名.com/wp-admin/*
设置:绕过缓存
规则2:登录页不缓存
URL:你的域名.com/wp-login.php
设置:绕过缓存
规则3:前台静态资源缓存
URL:你的域名.com/*
设置:缓存级别 = 标准
常见问题和注意事项
Q:接入Cloudflare后网站打不开?
检查:
- DNS记录是否正确(A记录指向原服务器IP)
- SSL模式是否与服务器配置匹配
- 等待DNS完全生效(24小时内)
Q:接入后后台登录变慢/需要验证码?
这是WAF的正常工作。如果影响正常使用:
- 将你的固定IP加入”IP访问规则”白名单
- 或调整wp-admin规则的触发阈值
Q:Cloudflare会影响SEO吗?
不会,Cloudflare的爬虫白名单包含Googlebot、Bingbot等主流搜索引擎。搜索引擎爬取不受WAF规则影响(除非你的规则明确阻止了它们)。
Q:与Wordfence能同时使用吗?
可以,两者互不冲突,形成双层防护:
- Cloudflare:在网络层(边缘)过滤
- Wordfence:在应用层(WordPress内部)过滤
Cloudflare免费版 vs Pro版安全功能对比
| 功能 | 免费版 | Pro版($20/月) |
|---|---|---|
| 托管WAF规则集 | 基础(Cloudflare Free Ruleset) | OWASP核心规则集 + 更多专项规则 |
| 自定义WAF规则 | 5条 | 20条 |
| Bot管理 | 基础 | Bot Fight Mode(更强力) |
| DDoS防护 | 基础自动防护 | 高级DDoS防护 |
| 实时日志 | 无 | 有 |
| 分析报告 | 基础 | 详细 |
对于大多数中小型WordPress外贸网站,免费版已经足够提供实质性保护。如果遭受持续的DDoS攻击或需要更精细的规则控制,考虑升级Pro版。
配置完成后的验证
完成配置后,建议测试以下场景:
- 正常访问验证:从普通浏览器访问网站,确认正常显示
- 后台访问验证:尝试登录
/wp-admin/,确认可以正常访问(无误封) - 攻击模拟测试:访问
你的域名.com/xmlrpc.php,应该被阻止 - 查看Cloudflare日志:在安全性 → 概述 中查看拦截统计
配置完Cloudflare后,再配合Wordfence安全插件和定期安全扫描,你的WordPress网站将获得多层次的全面保护。