用 CDN 隐藏源站 IP:防直连打源、防扫描与 Web 防护

把真实 IP 藏到 CDN 背后,只放行回源流量,并用 WAF、限速、验证码把攻击挡在源站之外。

当你的服务器 IP 直接暴露在公网,任何人都能绕过防护直连它:发起 DDoS、扫描端口、探测漏洞。接入 CDN 的核心价值之一,就是让攻击者看不到你的真实 IP,只能打到 CDN 的高防节点上。

为什么要藏源站

  • 防直连打源:DDoS 洪水如果直接命中源站,一台 VPS 的带宽很快被打满;CDN 有分布式清洗能力,能吸收和过滤流量。
  • 防扫描探测:暴露的 IP 会被 Shodan、僵尸网络持续扫描 22、3306、6379 等端口,一旦有弱口令或未打补丁的服务就会被打穿。
  • 收敛暴露面:接 CDN 后,公网只看到 CDN 的 IP 段,源站从"人人可达"变成"仅 CDN 可达"。

接 CDN 后只暴露 CDN IP

把域名的解析(通常是把 DNS 交给 CDN 托管,或把 A/CNAME 指向 CDN)切到 CDN 后,外部 dig 到的就只是 CDN 节点地址:

dig +short www.example.com
# 返回的应是 CDN 的 IP,而不是你的 VPS 真实 IP

关键前提:开启"隐藏源站/小云朵代理"这类选项,让 CDN 真正代理流量,而不仅仅做 DNS 解析。

源站只允许 CDN 回源 IP

隐藏了 IP 还不够——如果攻击者猜到真实 IP 仍能直连,防护就形同虚设。所以要在源站防火墙上只放行 CDN 的回源 IP 段。CDN 厂商都会公布回源 IP 列表,把它们加进白名单:

# 默认拒绝 80/443,只放行 CDN 回源段(示例)
sudo ufw default deny incoming
sudo ufw allow from 203.0.113.0/24 to any port 443 proto tcp
sudo ufw allow from 198.51.100.0/24 to any port 443 proto tcp
sudo ufw allow OpenSSH        # 管理端口按需限制来源
sudo ufw enable

这样即便真实 IP 泄露,直连 443 也会被防火墙丢弃。边界提醒:CDN 回源 IP 段会更新,要定期同步官方列表,否则可能误封正常回源。

别让历史信息泄露真实 IP

藏 IP 最常见的翻车点,是过去的痕迹还留着真实地址:

  • 历史 DNS 记录:老的 A 记录、二级域名(如 mail.、ftp.、direct.)可能仍指向源站,可被 SecurityTrails 等站点查到。逐一清理或改到 CDN 后面。
  • 邮件泄露:如果服务器自己发邮件,Received 头里会带真实 IP。改用第三方邮件 API 或独立发信主机。
  • 其他出站:错误上报、Webhook、SSRF 探针都可能回连真实 IP。理想做法是换一次 IP 再接 CDN,让旧 IP 彻底作废。

CDN 侧的 Web 防护

藏好 IP 后,把安全策略下沉到 CDN 边缘:

  • WAF:拦 SQL 注入、XSS、路径穿越等常见攻击特征。
  • 限速(Rate Limiting):对登录、下单等接口按 IP/路径限频,挡撞库和爬虫。
  • 验证码 / 人机校验:异常流量触发 challenge,过滤自动化脚本。
  • 地域与 ASN 封禁:按需屏蔽高风险来源。

什么时候该换 IP

  • 接 CDN 之前曾长期裸奔,真实 IP 大概率已被记录;
  • 发现有历史 DNS/邮件泄露且无法确认干净;
  • 已经在遭受针对真实 IP 的直连攻击。

换 IP 后务必先清理所有旧记录、配好防火墙白名单,再对外切流量,否则新 IP 很快又会暴露。

小结

隐藏源站是一套组合拳:CDN 代理让外界只看到 CDN IP,防火墙白名单让源站只接受 CDN 回源,清理历史 DNS/邮件泄露堵住旁路,再靠 CDN 的 WAF、限速与验证码在边缘挡住攻击。任何一环缺失都会让前面的努力白费——尤其别忘了"换一次干净 IP"这个容易被跳过、却最关键的步骤。