网站被打崩之后:Cloudflare之外你还该做什么
网站刚上线那阵子,套个 Cloudflare 免费版,看着后台拦截数字往上涨,心里挺踏实。直到流量上来,有人在群里丢了一句“你这站回源 IP 我已经拿到了”,才发现 CDN 这层壳挡得住扫描器,挡不住顺着历史解析记录摸到源站的人。Cloudflare 是好东西,但把它当成网站安全的全部,等于把门锁装上了,窗户还敞着。这篇讲的是套了 CDN 之后,源站这一侧还得补哪些动作。
免费版挡得住什么,挡不住什么
先说清楚 Cloudflare 免费版的实际能力边界。L3/L4 的流量型攻击,它默认就扛了,这个不用你操心。L7 的 CC 攻击,靠速率限制和托管规则也能拦住相当一部分。问题出在两个地方。
一是源站 IP 暴露。只要你的域名曾经直接解析到源站、邮件服务用了同一个 IP、或者 SSL 证书里带了真实 IP 的 SAN 记录,别人就能绕过 CDN 直接打源站。Cloudflare 的防护完全不会参与这个过程。
二是免费版的规则数量、WAF 自定义规则、速率限制的粒度都有限。真遇到有组织的 CC,免费额度那点拦截能力很快见底。我一般会建议:如果站点日均 UV 过万,或者业务本身是游戏、金融这类招打的类型,别指望免费版兜底,要么上 Pro/Business 把规则能力提上去,要么在源站前面自己再架一层。
把源站 IP 藏住,比加防护更省钱
攻击者找不到源站,再大的流量也是打在 CDN 边缘节点上,跟你没关系。这一步的性价比远高于事后加钱买高防。具体做法:
- 源站只允许 Cloudflare 的回源 IP 段访问 80/443,用防火墙白名单锁死,其它 IP 一律 drop。
- 换掉默认回源端口,别用 80 和 443。Cloudflare 支持自定义回源端口,改成不常见的高位端口,扫段工具的成本立刻上去。
- 检查 DNS 历史记录、子域名、证书透明日志,把可能泄露源站 IP 的入口一个个清掉。
这三步做完,源站基本就藏在 CDN 后面了。代价是回源配置麻烦一点,调试的时候得自己记端口,但省下的是每月几百到上千美元的高防账单。
源站这一侧,防护得自己兜住
CDN 只解决“流量到不到你机器”的问题。一旦回源请求合法地打进来,源站扛不扛得住就是另一回事。这里有两件事要做:源站本身的抗并发能力,以及回源流量的清洗。
抗并发看的是带宽和连接数。一台 100M 带宽的机器,回源请求一多,带宽先满,CPU 还没跑起来服务就挂了。这时候换一台大带宽或者带硬防的独立服务器,比在软件层调参数有用得多。美国西雅图高防服务器 41(Gold-6133*2 / 64G / 100M / 月付 $319.00)这类配置,防御和带宽都在源站这一层兜住,回源被打的时候不至于整个站宕掉。美国西雅图高防服务器41
回源流量的清洗,靠的是高防机房那边的流量牵引。攻击流量先到高防节点过一遍清洗,干净流量再回源。这套架构比纯 CDN 多一层,但对付混合型攻击(大流量打边缘 + CC 打源站)更稳。代价是链路多了一跳,延迟大概多几毫秒,多数业务感知不到。
几种常见架构,按业务选
不是所有站都需要上高防。按我的经验分三档:
- 个人博客、小工具站:Cloudflare 免费版 + 源站 IP 藏好,够用。别花冤枉钱。
- 有一定流量的商业站:Cloudflare Pro 或 Business + 源站防火墙白名单,再配一台带宽充足的独立服务器。这个组合月成本大概几百美元,能扛住大多数中小规模攻击。
- 游戏、金融、招打型业务:CDN + 高防独立服务器双层架构。美国洛杉矶高防服务器 54(Platinum-8176*2 / 64G / 100M / 月付 $969.00)这类配置适合做源站,防御层级和算力都留了余量。美国洛杉矶高防服务器54
选哪一档,看你的业务被打一次损失多少。如果宕机一小时丢的订单超过服务器月费,直接上第三档,别犹豫。如果只是个人站,第一档配好源站隐藏,比什么都实在。
回到开头那个问题:Cloudflare 该不该用?该用,但它只是第一层。真正决定你半夜要不要爬起来处理故障的,是源站 IP 有没有藏住、源站本身带宽够不够、以及回源流量有没有第二层清洗。这三件事做齐,才叫网站安全架构完整。