Cloudflare 接入之后,源站还能被直接打穿吗

2026-10-01 15:44 1010 次浏览

网站被攻击这件事,多数人第一次遇到都不是在监控面板上看到的,而是用户发消息说打不开。等你登录服务器,发现负载已经飙到几百,SSH 连上去都要等十几秒。这时候才想起来去查访问日志,往往已经刷了几十万条。

Cloudflare 能挡掉很大一部分,这点不用怀疑。但它的保护有个前提:攻击者只能打到 Cloudflare 的边缘节点。如果对方知道你的真实 IP,直接对着源站发流量,CDN 那一层就形同虚设。所以真正的问题不是要不要用 Cloudflare,而是源站到底藏没藏住。

源站 IP 是怎么暴露出去的

暴露的路径比想象中多。最常见的是历史 DNS 记录,很多站长换 CDN 之前用 A 记录直连过服务器,这些记录被第三方 DNS 历史库长期保存,查一下就能翻出来。

邮件头也算一个。服务器如果自己发信,SMTP 握手里会带上源站 IP。子域名同样容易被忽略,主站套了 CDN,但 dev、test、mail 这些子域名还直连源站,扫一遍就找到了。

还有一种情况是证书透明日志。给源站 IP 直接签过 Let's Encrypt 证书的话,证书里的 IP 会公开可查。这个坑我见过不少人踩过,尤其是早期图省事直接 IP 签证书的。

藏 IP 的做法不复杂,但要做全:

  • 源站只放行 Cloudflare 官方回源段,其他 IP 一律在防火墙层拒绝
  • 所有子域名统一走 CDN,或者干脆不放公网解析
  • 源站发信改走第三方 SMTP,别让服务器自己扛邮件

这三步做完,暴露面能压掉一大截。但注意,这只是隐藏,不是防御。IP 一旦因为某种原因泄露,源站还是裸奔状态。

被绕过后,源站扛不扛得住

假设 IP 还是泄露了,攻击者直接对着你的 443 端口发 SYN Flood 或者 CC。这时候决定生死的不是 Cloudflare 的规则,而是源站自己的带宽和清洗能力。

普通独立服务器配 100M 带宽,理论下行也就 12.5MB/s。攻击流量只要到 1Gbps,也就是 128MB/s,带宽瞬间打满,正常用户一个都进不来。这种量级的攻击在圈子里算入门水平,脚本小子拿几个肉鸡就能发起。

换我的话,源站至少要有独立的高防清洗入口。清洗的原理是把流量先引到防护节点,识别出恶意包丢掉,只把干净流量回源。这样源站带宽不需要扛攻击峰值,只需要扛正常业务量。

美国西雅图机房有一款 美国西雅图高防服务器8,E3-1230 配 16G 内存、100M 带宽,月付 $529。这个配置适合中小型站点做源站,清洗能力覆盖常见的百 G 级攻击。如果业务量更大,洛杉矶的 美国洛杉矶高防服务器50 用双路 Platinum-8176、64G 内存,月付 $579,处理并发的能力强不少。

选哪个看业务形态。静态站、访问量不大,前者够用。有数据库查询、动态页面多的,后者更稳。差价只有 50 美元,但 CPU 和内存差了一倍多,这笔钱花得值不值,取决于你的 PHP 或 Node 进程吃不吃资源。

WAF 规则和清洗要配合着调

很多人以为买了高防就完事,结果攻击换了个形式,从流量型变成应用层,清洗设备看不到异常,因为每个请求看起来都正常。

CC 攻击就是典型。攻击者用几千个 IP,每个 IP 每秒只发一两个请求,看起来像真实用户。这时候要靠 WAF 的行为分析,比如同一 IP 短时间访问同一 URL、User-Agent 异常、缺少正常浏览器的 header 顺序。

Cloudflare 的免费版有基础规则,但阈值比较宽松。付费版的 Rate Limiting 可以自定义,比如单 IP 每分钟超过 60 次请求就挑战。这个阈值要按自己站点的真实访问频率调,设太严会误伤正常用户。

我的建议是先在日志里跑一周,统计正常访问的请求分布,再定阈值。没有数据支撑的规则,要么拦不住,要么把真人挡在外面。

收尾:按预算分三档来处理

预算紧、站点刚起步,先把源站 IP 藏好,Cloudflare 免费版够用,重点放在防火墙只放行回源段这一件事上。这一步零成本,效果最直接。

有一定流量、被打过几次的,源站换成带清洗的独立服务器,月付 300 到 600 美元这个区间,西雅图和洛杉矶都有合适的选择。防御等级按被攻击的历史峰值来定,别一上来就买最高档。

业务不能中断的,源站做双活,一台主一台备,清洗入口做冗余。成本翻倍,但换来的是被打的时候业务不挂。这个投入值不值,看停机一小时损失多少订单。

最后提醒一句:安全是持续的事。今天藏好了 IP,明天可能因为一个新上线的子域名又暴露。每隔一两个月复查一遍解析记录和证书日志,比一次性配置完就不管要靠谱得多。