会。高防CDN的作用是把通过域名解析进来的流量引到边缘节点清洗后再回源,它隐藏的只是这一条链路上的源站IP。源站服务器的公网IP还可能从别的地方漏出去:历史解析记录、没接入CDN的子域名、外发邮件、证书扫描、程序主动外联。攻击者一旦拿到这个IP,就可以绕过CDN直接打源站,高防节点完全不经手这些流量。
所以接入之后,源站安全取决于两件事:
- IP尽量不泄露:把能漏出IP的途径逐个堵上。
- 即使泄露,源站也只接受CDN回源:用防火墙或安全组只放行回源IP段。
第二件事比第一件更关键,因为历史记录这类泄露已经无法撤回。
先判断你处在哪种情况
- 源站正在被直接攻击:CDN控制台流量平稳,源站带宽却被打满、被云厂商黑洞,或者服务器连接数异常。这说明源站IP已经暴露,请直接看后文「源站已经被直打:先堵漏,再换IP」。
- 刚接入或准备接入高防CDN:按下面的顺序先自查,再收口。
源站IP通常从这五个地方漏出去

1. 接入CDN之前的历史解析记录
域名接入CDN前如果直接解析到源站,SecurityTrails、Netcraft 这类平台可能已经把当时的A记录归档。只要源站至今没换过IP,任何人都能查到。
自查方法:在这类历史解析平台搜索自己的域名,看历史A记录里有没有现在的源站IP。
2. 子域名直连源站
主域名走了CDN,但 mail、test、dev、api、ftp 这类子域名还直接解析到同一台机器,等于把IP写在了公开的DNS里。子域名很容易被字典枚举出来。
自查方法:把DNS控制台里的全部记录导出,逐条确认哪些指向源站IP。
3. 网站外发邮件
注册验证码、找回密码、订单通知等邮件,如果由源站本机发出,邮件头里会带上服务器的真实出口IP。攻击者只需注册一个账号、触发一封邮件,就能拿到这个IP。
自查方法:给自己发一封站内邮件,查看原始邮件头里的 Received 字段。
4. 证书被网络空间测绘扫描
源站443端口直接对公网开放,而且任何人连上来都能拿到你域名的SSL证书时,Censys、Shodan、FOFA 这类测绘引擎全网扫描后,会从证书的公用名(CN)和使用者可选名称(SAN)里读出域名,自动把IP和域名关联起来。这个过程你完全感知不到。此外,Web服务没有设置默认站点时,直接用IP访问源站也会返回真实网站内容。
自查方法:在测绘引擎里搜索自己的域名或证书;也可以从一台外部机器执行 curl -kv https://源站IP,看握手时返回的是哪张证书、页面是不是你的网站。
5. 程序主动外联和信息泄露
站点上遗留的 phpinfo 等探针页面、对外暴露的配置文件会直接写出服务器信息。如果存在SSRF漏洞,攻击者可以让服务器去请求他控制的地址,从对方日志里就能看到源站的出口IP。
自查方法:清点站点目录下的探针和测试文件;凡是允许用户填写URL、由服务器去抓取的功能,都要重点检查。
接入后的收口顺序
第一步:源站只放行高防回源IP
这是最重要的一步。在云服务器的安全组,或主机防火墙(iptables / firewalld)上,只允许高防CDN的回源IP段访问业务端口,其余来源一律拒绝。回源IP段到服务商控制台或文档里获取。服务商调整回源节点后,白名单要同步更新,否则会出现回源失败。
iptables 的写法示意如下,网段需替换成服务商实际提供的回源IP段:
# 放行高防回源网段访问 80/443(每个网段一条)
iptables -A INPUT -p tcp -s 回源网段1 -m multiport --dports 80,443 -j ACCEPT
iptables -A INPUT -p tcp -s 回源网段2 -m multiport --dports 80,443 -j ACCEPT
# 其余来源访问 80/443 一律丢弃
iptables -A INPUT -p tcp -m multiport --dports 80,443 -j DROP操作前先单独放行你自己的SSH管理来源,避免把自己锁在门外。规则确认无误后再做持久化保存。
第二步:给Web服务设置默认站点
即使有了白名单,也建议在Nginx里加一个兜底的 default_server。用IP访问,或用未配置的域名访问时,直接断开连接,不返回真实证书和页面:
server {
listen 80 default_server;
listen 443 ssl default_server;
ssl_reject_handshake on; # Nginx 1.19.4 及以上可用;旧版本可改为挂一张自签名假证书
server_name _;
return 444;
}这样一来,测绘引擎直接扫描IP时拿不到带你域名的证书,第四条泄露途径就基本断了。
第三步:收敛子域名
不需要对外的子域名,比如测试、开发环境,直接删除解析记录。需要对外的子域名,同样接入CDN,或者放到另一台与业务源站无关的机器上。
第四步:邮件与源站分离
把发信功能交给独立的第三方SMTP或邮件推送服务,源站本机不再直接对外发信。
第五步:清理探针,修补外联类漏洞
删除 phpinfo、测试页和备份配置文件。对服务端抓取URL的功能,限制可访问的目标地址,禁止访问内网和任意外部地址。
最后:验证
从一台不在白名单里的外部机器,用 curl 或 telnet 访问源站IP的80和443端口,结果应该是超时或连接被拒;通过域名访问网站则一切正常。两边都符合,才算收口完成。
源站已经被直打:先堵漏,再换IP
处置顺序很重要:先把上面五条泄露途径全部切断,再更换源站公网IP。 如果先换IP,邮件、子域名、证书扫描很快又会把新IP暴露出去,换IP就白做了。新IP上线前,要先配好回源白名单和默认站点,确保它从第一天起就只接受CDN回源。
还有一点需要分清:回源白名单能拦住直连源站的连接和应用层请求,但拦不住大流量把源站带宽打满。流量在到达你的防火墙之前,就已经占满了线路,云厂商可能直接把这个IP黑洞。所以在大流量直打的情况下,换IP才是根本办法。
如果暂时没法换IP,并且你所用的云平台支持,可以在源站前放一个内网负载均衡,让高防回源经由负载均衡转发到源站。这样即使源站自身的公网IP被黑洞,高防的回源链路也不受影响。这需要调整架构,是否可行要先和云平台确认。
如果源站正在被直打、需要协助重新接入并完成收口,可以直接联系 RockCloud。整个接入过程可以参考网站正在被大流量攻击时快速挂载CDN的接入顺序。
非网站业务另当别论
以上方法针对 HTTP/HTTPS 网站。游戏、私有协议的 TCP/UDP 服务通常不走高防CDN,源站隐藏要靠四层代理或SDK封装方案,需要单独设计。可以先看非网站业务能用高防CDN吗判断协议适合哪种接入方式。游戏类业务可以了解 RockCloud 的游戏盾,它通过私有协议封装支持 TCP/UDP,并隐藏源站。
评论(0)