域名劫持防范:守住这个最关键的资产

域名是所有服务的入口。它一旦被转移走,你的网站、邮箱、证书全都失控——而且找回极其麻烦。

一、域名怎么会被偷

途径说明
注册商账号被盗最常见。弱密码、密码复用、钓鱼
邮箱被攻破攻击者通过邮箱重置密码
社工攻击冒充你联系注册商客服要求转移
DNS 账号被改不改所有权,但把解析指向恶意服务器
内部泄露注册商自身出问题(少见但有过)

注意第 4 条:域名没被转移,但 DNS 被改了,效果一样致命。很多人只保护注册商账号,忽略了 DNS 账号。

二、第一道防线:注册商账号

bash
必做的四件事:
1. 强密码(16 位以上,密码管理器生成)
2. 开启双因素认证(2FA)
3. 开启注册商账号的登录提醒
4. 联系邮箱用独立的高安全性邮箱

2FA 的选择

方式安全度说明
TOTP(Authenticator)推荐
硬件密钥(YubiKey)最高防钓鱼
短信易被 SIM 卡劫持,尽量不用
邮箱验证码邮箱本身可能就是弱点

短信 2FA 的主要风险是 SIM swap:攻击者冒充你补办 SIM 卡,就能收到所有验证码。重要账号优先用 TOTP 或硬件密钥。

三、域名层面的锁

作用在哪开
Transfer Lock禁止转移注册商注册商后台
Registrar Lock更严格的锁,需人工解锁部分注册商
Domain Lock禁止修改关键信息注册商后台
bash
# 检查状态
whois www.bzii.cn | grep -i status
# clientTransferProhibited   ← 转移锁,正常应该有
# clientUpdateProhibited     ← 更新锁
# clientDeleteProhibited     ← 删除锁

Cloudflare Registrar 默认开启所有锁,且转移需要额外确认。

四、保护 DNS 账号

如果 DNS 在 Cloudflare(常见情况):

  • 单独设置强密码 + 2FA,不要和注册商账号用同一套;
  • API Token 按用途分开,权限最小化;
  • 开启「账号活动」通知;
  • 定期检查有哪些 API Token 在用,删掉不用的。
bash
# 列出当前所有 API Token,定期清理
# Cloudflare → My Profile → API Tokens

五、邮箱是关键弱点

注册邮箱往往是整条链里最弱的一环——因为「找回密码」都发到那里。

bash
建议:
1. 用一个专门的邮箱管理域名(不要用日常邮箱)
2. 这个邮箱本身开启 2FA
3. 密码强度最高
4. 不用于任何其他注册

六、WHOIS 隐私

开启隐私保护,减少社工攻击的素材(攻击者知道你的姓名、电话后更容易冒充你)。详见「WHOIS 与隐私保护」。

七、监控

越早发现越好。可以监控:

1. 解析是否被改

bash
#!/usr/bin/env bash
# 定期检查 A 记录是否为预期值
EXPECTED="1.2.3.4"
ACTUAL=$(dig +short www.bzii.cn A | head -1)
if [ "$ACTUAL" != "$EXPECTED" ]; then
  echo "[$(date)] 警告:DNS 被改为 $ACTUAL" >> /var/log/dns-monitor.log
  # 发告警
fi

2. NS 是否被改

bash
dig +short www.bzii.cn NS
# 定期检查,出现陌生的 NS 立刻警觉

3. 证书透明日志

任何人给你域名申请证书都会进 CT 日志。用 crt.sh 订阅监控:

bash
curl -s "https://crt.sh/?q=%.www.bzii.cn&output=json" | jq -r ".[].common_name" | sort -u

出现你不认识的证书,说明有人在冒用你的域名。

4. WHOIS 变更提醒

部分注册商提供 WHOIS 监控服务,变更时发邮件。

八、被盗后怎么办

时间非常关键:

  1. 立刻联系注册商,说明被未经授权转移,请求冻结;
  2. 如果已被转移走,联系新的注册商(whois 能看到是哪家);
  3. 提供所有权证据:注册时间、历史付款记录、原始注册信息;
  4. 向 ICANN 投诉(如果注册商不作为);
  5. 同时:更换所有相关密码、通知用户、检查 DNS 是否被改。
bash
# 保全证据
whois www.bzii.cn > whois-$(date +%F).txt
dig +short www.bzii.cn NS
curl -s "https://crt.sh/?q=%.www.bzii.cn&output=json" > ct-$(date +%F).json

现实是:域名一旦被转移到境外小注册商,找回可能要几个月。预防远比补救有效。

九、一份安全清单

  • 注册商账号:强密码 + TOTP/硬件密钥 2FA
  • 注册邮箱:独立、高强度、有 2FA
  • 域名转移锁已开启(检查 WHOIS status)
  • DNS 账号:独立密码 + 2FA
  • API Token 权限最小化,定期清理
  • WHOIS 隐私已开启
  • 有 DNS 变更监控
  • 订阅了证书透明日志告警
  • 自动续费已开启(防止过期被抢注)

十、还有个容易忽略的:过期

域名过期被别人抢注,效果等同于被盗。防御方式:

bash
1. 开启自动续费
2. 绑定长期有效的支付方式
3. 日历提醒(到期前 30 天)
4. 一次续多年(长期持有的域名)

域名安全的核心:账号安全 + 转移锁 + 监控。 前两道是防,第三道是早发现。