域名劫持与 DNS 污染是网站所有者最不愿遇到又最容易掉以轻心的风险:轻则首页被插入赌博广告,重则用户被诱导到钓鱼站导致品牌与资金双重损失。本文讲清劫持与污染的区别、应急处理步骤,以及一套可落地的日常防护体系。

一、先分清三个概念

类型发生层面典型表现
DNS 劫持注册商账号 / 权威 DNS 被入侵,记录被篡改权威查询结果直接指向陌生 IP,全球一致异常
DNS 缓存污染运营商或中间递归 DNS 返回伪造结果部分地区/运营商用户异常,dig 公共 DNS 正常
HTTP 劫持链路上篡改已返回的网页内容DNS 正常,但页面被插入 iframe、弹窗、跳转脚本

三者的排查入口完全不同:先 dig @权威DNS 域名 确认记录本身是否被改,再对比公共 DNS 与运营商 DNS 的结果差异,最后用抓包确认页面内容是否在传输途中被篡改。

二、确认被劫持后的应急处理(按优先级)

  • 1. 冻结账号:立即修改注册商/DNS 服务商账号密码,撤销所有 API Token,开启二次验证。多数劫持事故的入口是弱密码或泄露的 API 密钥。
  • 2. 修正记录:在权威 DNS 把被篡改的记录改回正确值;若账号已失守,联系注册商客服走人工申诉(准备营业执照与域名实名材料)。
  • 3. 缩短 TTL:修复期间把 TTL 调到 60 秒,加速全网缓存刷新。
  • 4. 排查网站本身:确认服务器是否同时失守——检查 DNSPod/阿里云解析的操作日志、服务器登录日志(last、auth.log)、WebShell 痕迹。
  • 5. 通告用户:劫持涉及钓鱼的,通过官方渠道提示用户防范,避免信任损失扩大。

三、日常防护体系:五道防线

防线 1:账号与权限

  • 注册商、DNS 服务商账号强制开启二次验证(TOTP 优于短信)。
  • 域名管理账号与企业其他系统隔离,不共享密码;离职员工账号当天回收。
  • API Token 按需最小授权,定期轮换,绝不提交进代码仓库。

防线 2:注册商级锁定

开启域名转移锁(Transfer Lock)与更新锁。锁定状态下,转移或修改关键信息需要人工解锁,黑客拿到账号也难以快速转移域名。商务域名建议再加"禁止 60 天转移"策略。

防线 3:DNSSEC 部署

DNSSEC 通过数字签名保证解析结果未被篡改,能从根本上阻断缓存污染:

# 注册商控制台开启 DNSSEC 后,验证签名链
dig example.com DNSKEY +short
dig example.com DS +short
# 使用 dlv/isolc 工具验证完整验证链
dig +dnssec example.com @8.8.8.8 | grep -E "ad|RRSIG"

注意:开启 DNSSEC 后 DS 记录要同步到注册商,且续期、迁移时留意签名有效期,配置错误会导致整域解析失败——上线前务必在测试域演练。

防线 4:解析监控与拨测

  • 对核心域名配置多地区拨测(HTTP 状态码 + 页面特征词),5 分钟级。
  • 监控权威 DNS 的记录变更(DNSPod、阿里云均支持变更通知),任何非本人操作立即告警。
  • 每天对比权威结果与 2-3 家公共 DNS 结果的一致性,脚本 10 行即可实现。

防线 5:HTTPS 全站化

全站 HTTPS + HSTS 后,链路劫持插入的内容会因证书校验失败直接被浏览器拦截。配合前文的 SSL 自动续期,性价比极高。

四、真实案例复盘:一次"广告只有本地客户能看到"的劫持

某企业官网接到客户反馈首页弹出博彩广告,但公司同事访问全部正常。排查过程:

  • dig 权威 DNS 记录正常 → 排除注册商失守;
  • 让客户执行 nslookup 官网 114.114.114.114 与 nslookup 官网 223.5.5.5,前者返回异常 IP、后者正常 → 定位为运营商递归缓存污染;
  • 该地区运营商 DNS 将域名指向了一台广告服务器(HTTP 劫持变现);
  • 处理:向运营商投诉通道提交 + 开启 HTTPS + HSTS,劫持页面因证书校验失败无法展示,一周后污染缓存自然过期。

这类"局部劫持"在中小城市运营商链路上并不罕见,全站 HTTPS 是成本最低的根治手段。

五、总结

域名安全是"低频高危"事项:平时没有任何收益,出事时损失惨重。花半天时间完成账号二次验证、转移锁、DNSSEC、拨测监控、全站 HTTPS 五件事,就能挡住 95% 以上的劫持风险。