用 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"这个容易被跳过、却最关键的步骤。