CDN的核心工作原理是作为反向代理,将用户的请求引导至边缘节点,再由边缘节点回源到你的真实服务器获取数据。在这个过程中,如果源站IP直接暴露,攻击者就能绕过CDN的所有防护,直接对源站发动DDoS攻击或进行漏洞扫描。所以,隐藏源站IP不是附加题,而是使用CDN后必须立刻完成的基础安全动作。很多人以为接上CDN就万事大吉,结果源站IP因为历史DNS记录、邮件服务、SSL证书等各种旁路信息被轻易挖出,防护形同虚设。下面直接进入具体方法,每一条都针对一种常见的泄露途径。
彻底清理DNS历史记录域名上线前或刚接入CDN时,最致命的错误就是让源站IP曾经直接解析在A记录上。各类DNS历史记录查询服务会抓取并长期存档这些解析记录,攻击者只需查询域名历史,就能轻松拿到真实IP。解决方法很明确:更换源站IP。是的,一旦IP在历史记录里暴露过,单纯删掉A记录没有用,必须从服务商那里申请更换一个新的公网IP。更换后,新IP绝对不能再出现在任何公共DNS的A记录、AAAA记录里,只能出现在CDN回源配置和内部系统中。同时,在全网DNS查询平台上主动搜索你的域名,确认旧记录随时间推移逐渐失效,不留尾巴。
杜绝一切子域名和边缘业务的直接解析主域名接了CDN,但很多人会忘记那些用于办公、测试、文件分发或API的子域名。比如直接解析源站IP的“oa.example.com”、“test.example.com”或“api.example.com”,这些子域名的DNS记录同样会被收录。攻击者扫描已知IP段或通过子域名爆破,一旦发现某个子域指向一个非CDN的IP,源站就暴露了。处理方式很直接:所有子域名,无一例外,要么通过CNAME接入CDN,要么干脆不解析到公网。内部使用的系统通过VPN或专线访问,不要暴露在公网DNS里。如果业务上必须有直连IP的子域,那就给它单独分配一个和源站完全无关的IP,并做好隔离,让攻击者无法通过它关联到主站源站。
封禁除CDN节点外的所有入站流量这是最硬核也是最有效的一步。在源站服务器的防火墙或安全组策略上,只允许你所用CDN厂商的回源IP地址段访问80和443端口,拒绝其他所有IP的访问。每家主流CDN服务商都会公开自己的回源IP列表,你可以定期通过API或手动方式同步更新这些IP段到防火墙白名单中。这样一来,即使攻击者通过某种手段猜到了你的源站IP,直接访问时连接会被直接重置或拒绝,无法发起有效攻击。实施时注意,要把ICMP协议也一并处理,要么完全禁Ping,要么只允许CDN节点IP段的Ping,避免通过Ping探测确认主机存活。另外,SSH、RDP等管理端口绝对不能对全网开放,必须限定在少数跳板机IP上,并且最好通过密钥加双因素认证登录。
杜绝服务器对外主动发起请求很多源站泄露不是因为别人来访问你,而是因为你的服务器自己主动去访问了外部服务,把真实IP带了出去。典型的场景包括:服务器向外发送邮件,邮件头里会包含源站IP;站点程序调用了外部API,请求来源IP就是源站;使用了第三方网站监控、RSS订阅推送、Webhook回调等,这些第三方服务日志里会忠实地记录下请求来源IP。要堵住这个口子,需要做几件事。邮件服务完全剥离,使用独立的邮件发送服务或第三方SMTP服务,绝不从源站直接发送任何通知邮件。对于必须请求外部API的业务,通过一台前置的、IP和源站无关的代理服务器转发这些请求,让外部服务只能看到代理IP。同时,检查站点所有主动外联的逻辑,包括计划任务、健康检查、数据上报,确保没有直接使用源站IP出口。
SSL证书信息隔离透明证书日志会记录下所有通过证书颁发机构签发的SSL证书信息,包括证书绑定的域名和申请时的验证方式。如果源站服务器上直接配置了SSL证书,并且通过公网IP或未加防护的域名完成了证书申请,那么证书透明日志里可能就会留下源站IP的痕迹。攻击者可以通过CT日志搜索引擎,按域名检索历史上所有关联的证书,从中提取出IP信息。解决方法:源站服务器上只配置CDN边缘节点信任的证书,可以是自签证书或CDN厂商提供的专用回源证书,不要在源站上使用公开签发的、绑定真实域名的证书。域名的公开SSL证书只部署在CDN边缘,源站和CDN之间使用专用的、不对外暴露的证书进行加密。同时,定期检索自己域名的CT日志,发现异常证书记录立即吊销并排查原因。
Web应用自身的IP泄露防护即使网络层防护做得再严密,如果网站程序本身存在漏洞,攻击者也能通过应用层的交互直接拿到源站IP。常见的高危功能包括:站内发起URL请求的功能,比如远程图片抓取、网页快照、文件下载代理等,如果这些功能没有做好限制,攻击者传入一个自己控制的服务器地址,源站就会主动连接过去,暴露IP。还有phpinfo等探针页面,会直接打印出服务器环境变量中的本地IP地址。再有就是网站报错信息里可能包含内网IP或路径信息。应对措施:彻底关闭所有对外提供服务的探针类文件,生产环境严格禁止phpinfo、debug模式等功能。所有由用户提交URL并发起请求的功能,要么彻底禁用,要么强制走外部代理池,并对请求目标做严格的白名单限制,禁止请求内网地址和私有IP段。统一配置自定义错误页面,隐藏服务器软件版本和底层报错细节。
防范通过DNS记录和域名注册信息泄露除了A记录,其他类型的DNS记录也可能出卖源站。比如MX记录,如果邮件服务器和Web服务器托管在同一台机器或同一IP上,MX记录就直接指向了源站IP。即便邮件服务已剥离,历史MX记录也可能残留。另外,SOA记录、TXT记录中有时也会无意中写入IP信息。域名注册信息本身虽然不直接暴露IP,但配合Whois历史反查,攻击者可以关联到同一注册人名下的其他域名,再通过其他域名的解析记录找到可能的IP段,进行交叉比对。因此,MX记录必须指向独立的邮件服务IP,与Web源站完全分离。定期审计所有DNS记录,清除任何包含IP地址的TXT记录或备注信息。域名注册信息建议开启隐私保护,避免关联查询。
云服务和CDN配置细节加固如果你使用云服务商的负载均衡、对象存储等产品,要注意这些服务本身也可能暴露源站。比如对象存储桶如果配置了静态网站托管,并绑定了一个直接解析的域名,这个域名的CNAME指向的终端节点IP就可能被当成源站进行攻击。又比如,CDN回源时使用了HTTP Host头,如果源站没有严格校验Host头,攻击者可以通过直接访问源站IP并伪造Host头来访问站点,甚至可能触发网站程序生成包含源站IP的页面内容。因此,源站Web服务器必须配置默认站点,对于非授权Host头的请求直接返回403或空内容,不做任何业务逻辑处理。同时,检查所有云资源的外部端点,确保它们要么通过CDN对外服务,要么严格限制访问来源。
长期监控与渗透测试隐藏源站IP不是一次性工作,而是一个持续的过程。业务在变动,新功能上线、新子域增加、服务器迁移、CDN切换,任何一个环节的疏忽都可能重新暴露IP。建立常态化的监控机制,利用开源情报工具定期搜索自己的域名和IP段,检查是否出现在Shodan、Censys等网络空间搜索引擎的扫描结果里。这些引擎会全网扫描并记录开放端口和HTTP响应,如果你的源站不小心在某个端口上响应了请求,很快就会被收录。同时,定期对自己进行模拟攻击演练,站在攻击者视角,从域名出发,尝试所有可能的手段去挖掘真实IP,发现一处堵一处。只有把隐藏源站IP当成一个持续的安全运营动作,才能真正把风险降到最低。
