接入高防 IP 后如果发现源站真实 IP 泄露,最稳妥的处理方式是立即更换源站 IP 并在安全组中只放行高防回源网段,防止攻击者绕过防护直接攻击源站。
先说结论:源站 IP 一旦泄露,高防防护效果会大打折扣,必须通过防火墙限制访问来源并考虑更换 IP。
- 先判断:确认泄露途径是 DNS 解析记录、邮件头还是子域名未接入。
- 优先做:在源站服务器安全组中,仅允许高防回源网段访问业务端口。
- 再验证:观察访问日志,确认非高防网段的直接连接请求被拦截。
如何排查源站 IP 是否泄露
标题虽为排查,但很多时候用户并不确定 IP 是否已泄露。可以通过以下手段主动检测:
1. DNS 历史记录查询
使用第三方 DNS 历史查询工具,输入域名查看是否有解析到真实 IP 的历史记录。如果存在早于高防接入时间的 A 记录,则存在泄露风险。
2. 检查邮件头信息
如果服务器曾对外发送邮件,邮件头中可能包含真实 IP。在 Linux 服务器上可查看邮件日志:
grep "Received" /var/log/maillog
检查 `Received` 字段中是否包含源站公网 IP。
3. SSL 证书透明度日志
查询 SSL 证书透明度日志,确保证书绑定的是高防 IP 或域名,而非直接暴露源站信息。
4. 子域名探测
排查同一服务器上的其他域名或子域名,确保所有对外服务的域名都接入了高防,避免通过未防护的子域名解析出真实 IP。
获取高防回源网段
配置防火墙前,必须获取最新的高防回源网段列表。请勿使用过期的网段信息,以免阻断正常流量。
查询路径:登录阿里云控制台,进入"DDoS 高防"产品页,查阅"文档中心"或"帮助中心",搜索"高防 IP 回源网段"。阿里云会提供最新的 IP 段列表,部分区域支持 API 查询。
紧急防御措施
如果无法立即更换 IP,首要任务是收紧源站入站权限。对于云服务器,优先使用控制台的安全组功能;对于自建机房,可使用 iptables 临时限制。
1. 云服务器安全组配置
登录云服务器控制台,找到实例对应的安全组。入方向规则中,将业务端口(如 80、443)的源地址设置为"只允许高防回源网段"。注意:务必同时放行高防系统的健康检查 IP,否则可能导致高防判定源站不可用而切换线路或报警。
2. iptables 临时限制示例
以下是一个限制特定网段访问 80 端口的 iptables 示例,实际生产环境建议直接使用云厂商的安全组策略:
iptables -A INPUT -p tcp `--dport` 80 -s <高防回源网段> -j ACCEPT iptables -A INPUT -p tcp `--dport` 80 -j DROP
注意:执行前务必确认当前会话不会因规则生效而中断,建议先在测试环境验证或保留远程管理端口(如 22)的放行规则。
验证防护是否生效
配置完成后,需要从外部网络验证源站是否仍可直接访问。
1. 使用 curl 验证
在非同源站网络环境(如本地电脑或另一台服务器)执行:
curl -H "Host: 你的域名" http://源站 IP
如果配置正确,请求应超时或被拒绝。如果返回了网站内容,说明源站 IP 仍可直连。
2. 使用 telnet 验证
测试端口连通性:
telnet 源站 IP 80
若配置正确,业务端口应无法连通。
3. 查看访问日志
在源站服务器上查看访问日志(如 Nginx 的 access.log 或安全组拒绝日志)。正常情况下,所有业务请求的源 IP 都应该属于高防回源网段。如果发现日志中出现非高防网段的公网 IP 直接访问业务端口,说明限制未生效或存在其他泄露路径。
更换源站 IP 流程与风险
如果确认真实 IP 已被广泛扫描或攻击,仅做防火墙限制可能不够,建议申请更换新的源站 IP。
操作流程:
- 申请新的源站 IP 地址。
- 在高防控制台更新回源配置指向新 IP。
- 修改域名 DNS 解析(如果需要)。
- 旧 IP 废弃前确保无业务依赖。
风险提示:更换源站 IP 可能导致业务短暂中断。建议在业务低峰期操作,并注意 DNS 缓存 TTL 时间。更换后,旧 IP 需保持一段时间的空闲或丢弃状态,避免流量回绕。
常见坑
1. 健康检查失败:限制安全组时,如果未放行高防系统的健康检查 IP,可能导致高防判定源站不可用而切换线路或报警。
2. CDN 冲突:如果业务同时使用了 CDN 和高防,需确保 CDN 回源也是指向高防 IP,且安全组要同时放行 CDN 节点和高防节点的 IP 段。
3. 主动外联暴露:服务器主动访问外部 API 或发送邮件时,目标方可能记录源站 IP。建议通过 NAT 网关或代理服务器处理出站流量,避免源站 IP 出现在外部日志中。