Cloudflare免费WAF配置教程:挡住大多数WordPress暴力攻击

为什么用Cloudflare保护WordPress?

Cloudflare是全球最大的CDN和安全服务提供商之一,其免费计划已经包含了相当实用的WAF功能。对于WordPress网站主来说,Cloudflare的核心价值在于:

  1. 流量在到达你的服务器之前就被过滤:不同于Wordfence(在服务器本地运行),Cloudflare在网络边缘拦截恶意请求,完全不消耗你的服务器资源
  2. DDoS缓解:Cloudflare的基础DDoS防护对小型网站基本免费且有效
  3. 全球CDN加速:静态资源缓存,提升网站加载速度
  4. SSL证书:免费提供HTTPS
  5. 隐藏真实IP:访客和攻击者看到的是Cloudflare的IP,你的服务器真实IP被隐藏

免费版的局限: WAF托管规则集有限(付费Pro版规则更完整),每月WAF请求数有上限(但对一般网站完全够用)。

1776393679210

第一步:将域名接入Cloudflare

1.1 注册Cloudflare账户

前往 cloudflare.com 注册账户,选择”Free Plan(免费)”。

1.2 添加你的域名

  1. 登录Cloudflare仪表盘
  2. 点击”Add a Site”(添加站点)
  3. 输入你的域名(如 example.com
  4. 选择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后网站打不开?

检查:

  1. DNS记录是否正确(A记录指向原服务器IP)
  2. SSL模式是否与服务器配置匹配
  3. 等待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版。


配置完成后的验证

完成配置后,建议测试以下场景:

  1. 正常访问验证:从普通浏览器访问网站,确认正常显示
  2. 后台访问验证:尝试登录 /wp-admin/,确认可以正常访问(无误封)
  3. 攻击模拟测试:访问 你的域名.com/xmlrpc.php,应该被阻止
  4. 查看Cloudflare日志:在安全性 → 概述 中查看拦截统计

配置完Cloudflare后,再配合Wordfence安全插件和定期安全扫描,你的WordPress网站将获得多层次的全面保护。