如果确认源站 IP 已经泄露,最稳妥的办法是更换服务器 IP 并在防火墙层面只允许 WAF 回源 IP 访问,同时清理互联网上的历史 DNS 记录。
先说结论:IP 泄露后单纯隐藏已不够,需结合换 IP 与访问控制策略。
- 先判断:通过多地 Ping 和历史 DNS 查询确认泄露范围
- 优先做:更换源站 IP 并配置安全组仅放行 WAF 回源段
- 再验证:直接访问新 IP 应被拒绝,域名访问正常
命令速用版
以下命令用于快速检查当前 IP 是否暴露及测试连通性:
# 检查域名解析到的 IP 是否唯一
dig +short yourdomain.com
# 测试直接访问源站 IP 是否通(应失败)
curl -v http://YOUR_ORIGIN_IP -H "Host: yourdomain.com"
# 查看当前服务器对外显示的 IP
curl ifconfig.me
# iptables 配置示例(仅允许 WAF 回源段,请替换<WAF_CIDR>)
iptables -I INPUT -p tcp `--dport` 80 -s <WAF_CIDR> -j ACCEPT
iptables -I INPUT -p tcp `--dport` 443 -s <WAF_CIDR> -j ACCEPT
iptables -A INPUT -p tcp `--dport` 80 -j DROP
iptables -A INPUT -p tcp `--dport` 443 -j DROP
为什么会这样
云 WAF 原理是作为反向代理,用户请求先经过 WAF 节点再转发给源站。泄露通常发生在接入 WAF 之前 DNS 已被收录,或者接入后源站主动向外发起连接(如发送邮件、请求外部 API)带走了真实 IP。此外,子域名未接入 WAF、SSL 证书透明度日志(CT Logs)以及互联网上的 DNS 历史缓存都可能导致真实 IP 被关联。
分步处理
1. 确认泄露情况
使用第三方 DNS 历史查询工具检查域名是否解析过其他 IP。如果查到的 IP 与当前源站一致,说明已泄露。
2. 查询 WAF 回源 IP 段
登录云厂商控制台,查找 WAF 产品的文档或 IP 列表页面。例如阿里云 WAF 可在控制台“防护配置”中查看回源段,腾讯云需在文档中心搜索“WAF 回源 IP 段”。务必获取最新的 CIDR 列表。
3. 更换源站 IP(如已泄露)
若 IP 已公开,隐藏手段效果有限,建议向云厂商申请更换弹性公网 IP。新 IP 生成后,先不要绑定域名。
4. 配置访问控制
云服务器安全组:登录控制台 -> 实例 -> 安全组 -> 入站规则。添加规则允许 WAF 回源 IP 段访问 80/443 端口,优先级设为高。添加规则拒绝 0.0.0.0/0 访问 80/443 端口。
系统防火墙:使用上述 iptables 命令或 firewalld 配置同等策略。
5. 关于历史记录
公共 DNS 历史记录服务通常不支持人工申请清除。核心对策是更换 IP 使旧记录失效,旧 IP 对应的历史记录将不再指向有效服务。
怎么验证是否生效
在本地 hosts 文件将域名指向新源站 IP,尝试访问网站。如果配置正确,请求应被防火墙拦截或超时。同时使用域名正常访问,业务应无影响。检查服务器日志,确认所有流入流量均来自 WAF 节点 IP 段。
常见坑
1. 邮件头泄露:源站直接发送邮件时,邮件头会包含真实 IP。建议改用第三方邮件服务。检查命令:grep -i "received" /var/log/mail.log 或发送测试邮件后查看原始邮件头。
2. 子域名遗漏:主域名接了 WAF,但 test.domain.com 直接解析到源站,攻击者可通过子域名反查。
3. 外部请求:服务器主动请求外部 API 时,对方日志会记录源站 IP。需确保出站流量也经过代理或接受该风险。
4. SSL 证书关联:证书透明度(CT)日志会记录域名证书信息。如果某些子域名未接入 WAF 且解析到源站,攻击者可通过 CT 日志搜索域名找到关联 IP。需确保所有子域名均接入 WAF。