一、为什么套了 Cloudflare 小黄云,源站依然会被打穿?
许多站长以为只要把域名接入 Cloudflare 并开启“小黄云(代理状态)”,网站就自动拥有了铜墙铁壁。然而在实际运维中,当遭遇恶意爬虫全站高频抓取、黑客批量扫描后台漏洞路径(如 /wp-login.php、/.env),或者针对动态搜索接口发起的 CC 攻击时,这些未命中静态缓存的请求依然会穿透 CDN 节点直达源站,瞬间榨干 VPS 的 CPU 与数据库连接池。
其实,Cloudflare 免费版(Free Plan)默认提供了高达 5 条高优先级的自定义 WAF 规则(Custom Rules)额度。只要合理运用规则表达式组合,无需购买昂贵的 Pro 套餐,就能在边缘节点拦截 95% 以上的恶意流量,同时做到不误伤正常访客与搜索引擎蜘蛛,更不会像错误规则那样引发 Cloudflare WAF 误封 upload 导致站点资源异常。
二、必配的 3 条生产级 WAF 自定义规则(Custom Rules)
登录 Cloudflare 控制台,进入目标域名的 Security(安全性)→ WAF → Custom rules(自定义规则)。建议将相近的拦截条件通过逻辑运算符(and / or)合并在同一条规则内,最大化利用免费版的 5 条规则配额:
规则 1:第一顺位放行搜索引擎官方爬虫与本站管理白名单(Skip)
在配置任何激进的拦截或质询规则前,第 1 条规则永远是白名单放行,确保 Googlebot、Bingbot 的正常抓取(配合 Google Search Console 收录监控)以及站长自己在后台上传图片、保存文章时不被误拦。
规则名称: 01-Allow-Verified-Bots-And-Admin
匹配条件 (Expression):
(cf.client.bot) or (http.request.uri.path eq "/sitemap.xml") or (http.request.uri.path eq "/robots.txt")
执行动作 (Action): Skip (跳过后续所有自定义规则与速率限制)
注:cf.client.bot 是 Cloudflare 官方维护的已知合法爬虫指纹库(经过反向 DNS 严格校验),伪造 User-Agent 的假蜘蛛无法绕过该判断。
规则 2:直接封禁高危敏感路径扫描与漏洞探测(Block)
每天互联网上有成千上万的自动化僵尸网络在无差别扫描 .env 配置文件、.git 目录、xmlrpc.php 接口以及各类未授权后缀。与其让它们消耗源站 Nginx 日志空间,不如在 Cloudflare 边缘直接返回 403 Block:
规则名称: 02-Block-Vulnerability-Scanners
匹配条件 (Expression):
(http.request.uri.path contains "/.env") or
(http.request.uri.path contains "/.git") or
(http.request.uri.path contains "/xmlrpc.php") or
(http.request.uri.path contains "/wp-config") or
(http.request.uri.path contains "phpmyadmin")
执行动作 (Action): Block (阻止)
规则 3:对登录入口、动态搜索与高危 ASN 启用托管质询(Managed Challenge)
网站的后台登录页(如 Halo 的 /console/login、WordPress 的 /wp-login.php)和站内搜索接口是 CC 攻击重灾区(搜索请求无法命中缓存,每次都会触发数据库全表查询)。对这些路径叠加威胁评分过滤与托管质询(Managed Challenge),真人访客无感秒过,自动化脚本则会被拦截:
规则名称: 03-Challenge-High-Risk-And-Dynamic-Endpoints
匹配条件 (Expression):
(http.request.uri.path contains "/wp-login.php") or
(http.request.uri.query contains "s=") or
(cf.threat_score gt 15 and not cf.client.bot)
执行动作 (Action): Managed Challenge (托管质询)
三、速率限制(Rate Limiting)防 CC 爆破最佳参数
除了自定义 WAF 规则,Cloudflare 免费版还提供 1 条免费的速率限制规则(Rate limiting rules)。建议将其专门用于保护全站动态 HTML 请求:
| 配置项 | 推荐参数值 | 设计理由与避坑说明 |
|---|---|---|
| 匹配条件 | not http.request.uri.path.extension in {"css" "js" "webp" "png" "jpg" "woff2" "ico"} |
核心避坑:必须排除静态图片与样式表!否则打开一篇含 20 张图的文章就会瞬间触发限流 |
| 统计特征 | IP | 按单客户端 IP 统计请求频次 |
| 触发阈值 | 10 秒内超过 25 次请求 | 正常人类阅读点击网页绝不会在 10 秒内打开 25 个 HTML 页面 |
| 处置动作 | Managed Challenge(持续 10 秒) | 既能阻断 CC 压测工具,又不会因合租 IP 误封正常读者 |
四、源站防火墙闭环:防止绕过 CDN 直接攻击源站 IP
配置了再完美的 Cloudflare WAF,如果攻击者通过历史 DNS 记录查到你的 VPS 真实 IP 并直接发起请求,Cloudflare 防护就会形同虚设。因此必须完成最后一步闭环:
- 在源站 Linux VPS 的 UFW 防火墙 或 Nginx Proxy Manager 访问控制列表 中,将 80/443 端口设置为仅允许 Cloudflare 官方回源 IP 段访问(或直接改用免开公网端口的 Cloudflare Tunnel 内网穿透模式)。
- 同时检查 SSL/TLS 加密模式是否为
Full (Strict),避免出现 ERR_TOO_MANY_REDIRECTS 重定向死循环。
五、总结与建站安全运维延伸阅读
安全防护的核心在于“分层治理”:用 Cloudflare WAF 与速率限制在边缘挡住 95% 的扫描与 CC 洪峰,用源站白名单与自动冷备份守住底层数据底线。更多独立站加速、排障与安全加固实战,欢迎访问本站 建站运维专题。
推荐继续阅读:
• Cloudflare WAF 误封 upload 导致 Halo 首页资源加载异常(问题排查 & 解决)
• Cloudflare 开启小黄云后网站无法访问(ERR_TOO_MANY_REDIRECTS)问题分析与解决方案
• Linux VPS 生产级安全加固实操:禁用 Root、ED25519 密钥与 Fail2ban 防爆破
评论