一、为什么套了 Cloudflare 小黄云,源站依然会被打穿?

许多站长以为只要把域名接入 Cloudflare 并开启“小黄云(代理状态)”,网站就自动拥有了铜墙铁壁。然而在实际运维中,当遭遇恶意爬虫全站高频抓取、黑客批量扫描后台漏洞路径(如 /wp-login.php、/.env),或者针对动态搜索接口发起的 CC 攻击时,这些未命中静态缓存的请求依然会穿透 CDN 节点直达源站,瞬间榨干 VPS 的 CPU 与数据库连接池。

其实,Cloudflare 免费版(Free Plan)默认提供了高达 5 条高优先级的自定义 WAF 规则(Custom Rules)额度。只要合理运用规则表达式组合,无需购买昂贵的 Pro 套餐,就能在边缘节点拦截 95% 以上的恶意流量,同时做到不误伤正常访客与搜索引擎蜘蛛,更不会像错误规则那样引发 Cloudflare WAF 误封 upload 导致站点资源异常。

Cloudflare 免费版 WAF 防火墙自定义规则优先级与拦截流程图

二、必配的 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 防护就会形同虚设。因此必须完成最后一步闭环:

五、总结与建站安全运维延伸阅读

安全防护的核心在于“分层治理”:用 Cloudflare WAF 与速率限制在边缘挡住 95% 的扫描与 CC 洪峰,用源站白名单与自动冷备份守住底层数据底线。更多独立站加速、排障与安全加固实战,欢迎访问本站 建站运维专题。

推荐继续阅读:
• Cloudflare WAF 误封 upload 导致 Halo 首页资源加载异常(问题排查 & 解决)
• Cloudflare 开启小黄云后网站无法访问(ERR_TOO_MANY_REDIRECTS)问题分析与解决方案
• Linux VPS 生产级安全加固实操:禁用 Root、ED25519 密钥与 Fail2ban 防爆破