你的网站用了CDN,黑客就找不到真实IP了?别太天真
真不是吓唬你——上周我帮一个做本地生活的客户查问题,他信誓旦旦说“上了CDN肯定安全”,结果我随手 ping 了他家测试子域名,直接撞出源站IP,连防火墙都没开。CDN不是保险柜,它只是个快递中转站:包裹(流量)经它转发,但寄件人地址(源站IP)早被不少人抄过、记过、甚至贴在论坛里当“彩蛋”分享过。
网站历史记录,就是一本公开的“泄密日记”
CDN不是时光机,它没法抹掉你上线前干过的事。
你最早用真实IP跑网站那会儿,DNS解析记录早被各种网络测绘平台默默存档了。这些平台像数字考古队,专挖域名过去指向过哪些IP。
只要A记录曾经直连服务器,这个IP大概率还在它们的数据库里躺着。输入你的域名,几秒就能看到“2023年6月:192.168.123.45”“2022年11月:192.168.123.46”……
有个做社区团购的客户,大促前紧急上了CDN,结果半个月后源站被精准打爆。复盘发现,攻击者查到了他三个月前用旧IP搭的临时测试站,顺藤摸瓜把整个IP段都猜出来了。
你网站“不经意”透露的信息,比想象中多得多
有些IP泄露,根本不是被黑的,是你自己“送”的。
比如用户点“忘记密码”,系统发邮件时,邮件头里的 Received 字段常带出发件服务器的真实IP——这事儿PHPMailer、SMTP插件默认就干。
再比如,有些老后台(phpMyAdmin、宝塔面板、甚至自建的监控页)压根没走CDN,还开着默认端口。攻击者扫一遍你历史IP段的8080、8888、3306,经常能直接登录进去。
我见过最离谱的一次:某教育平台的“教师端登录页”绑在 teacher.xxx.com,没上CDN,也没设密码,首页还写着“欢迎使用XX教学系统 v2.1.3”,版本号一搜,漏洞直接匹配。
子域名和关联资产,是最容易被忽略的突破口
主站加了CDN,不等于全家都安全了。m.xxx.com、admin.xxx.com、api.xxx.com、dev.xxx.com、old.xxx.com……这些名字你可能自己都快忘了,但它们很可能还直连着源站。
攻击者不用多高深的技术,就拿子域名字典一扫,再 dig 或 nslookup 一下,哪个没走CDN,哪个就等于在门口挂了“请进”牌子。
更麻烦的是,同一台服务器上可能还绑着其他小站、博客、甚至个人GitHub Pages的CNAME——反查IP,全暴露。
之前帮一家律所排查,他们主站防护很严,但一个叫 cases.xxx.com 的子域名,是律师助理自己搭的案例展示页,没配CDN,没设密码,IP一露,整台服务器三天内就被种了挖矿脚本。
服务器自身的“主动联系”,会让IP彻底暴露
CDN拦不住你服务器自己往外跑。
比如后端代码调用地图API、天气接口、或者某个小众字体服务——只要请求是从你服务器发起的,源IP就写在TCP包里,清清楚楚。
攻击者可以搭个钓鱼API,等你服务器来“打招呼”。你一请求,他的日志里立刻记下:“来自 192.168.123.45 的GET /check”。这种手法叫SSRF,不靠漏洞,靠你代码里那行 file_get_contents('https://xxx-api.com/data')。
还有更隐蔽的:某些CMS的“远程图片抓取”功能、WordPress的自动更新检查、甚至日志上报服务,都可能在你不知情时,把IP悄悄送出去。
利用CDN服务本身的特性和漏洞,能否反查?
直接黑CDN厂商?基本没戏。但配置失误,真能帮倒忙。
比如你给CDN上传SSL证书时,手抖把证书私钥也传到源站,又没关掉源站的HTTPS监听——攻击者扫一遍全网用这个证书的IP,很容易捞到你。证书透明度日志(CT Log)是公开的,谁都能查。
再比如CDN缓存失效瞬间、节点故障回源、或者你开了“调试模式”返回详细Header——这些缝隙虽小,但对持续扫描的攻击者来说,够用。
主流CDN确实稳,但“稳”不等于“绝对不漏”。就像雨衣再好,领口没系紧,水照样往里灌。
面对这些风险,我们究竟该如何防护?
别想着“一步到位”,先守住三条线:
第一,源站IP必须物理隔离。
别用和主站同段的IP。申请一个全新、没对外用过的IP段,只允许CDN官方公布的回源IP白名单访问(阿里云/腾讯云控制台里就能设)。其他所有流量,一律拒绝。
第二,子域名一个都不能漏。
所有对外可访问的域名,包括测试、管理、API类子域名,全部接入CDN。废弃的子域名,立刻删掉DNS解析。管理后台这类敏感入口,改用公司内网VPN或跳板机访问,别放公网。
第三,砍掉所有“主动外联”的隐患。
邮件服务单独拆出去,用SendGrid、Mailgun或企业邮箱中继;后端调用第三方API,加一层代理或限频限IP;CMS里关掉“远程图片下载”“自动更新检查”这类功能——除非你真需要它。
今天下班前,你就可以完成这个关键自查动作
打开你电脑上天天都在用的终端(Mac/Linux)或 PowerShell(Windows),按顺序敲这几行:
# 1. 先查主站走的是不是CDN(应该返回CDN节点IP,比如阿里云一般是120.x.x.x段)
ping yourdomain.com
# 2. 查最可疑的几个子域名——尤其带 admin/api/dev/test/m 的
ping admin.yourdomain.com
ping api.yourdomain.com
ping dev.yourdomain.com
ping m.yourdomain.com
# 3. 对比输出的IP:如果某个子域名返回的IP,和主站完全不同,且不在常见CDN段里(比如不是120.x、140.x、183.x开头),那就危险了
如果发现裸奔的子域名,现在就登录你的DNS服务商后台(阿里云DNS、腾讯云DNSPod、Cloudflare都行),把它CNAME到CDN提供的加速域名,或者干脆删掉这条记录。
十分钟,堵住最大漏洞。安全不是玄学,是每天多看一眼、多敲一行命令的事。