朋友公司上周出过一档事,客户反馈官网时不时跳到一个菠菜站,刷新几下又正常。运维一开始以为是服务器被挂马,查了半天源码没问题,最后发现是 DNS 被人动了手脚,典型的域名劫持。

说白了,就是你在地址栏敲的域名,本该解析到你自己的服务器,结果被中途截胡,指到了别人那台机器上。用户访问的域名没变,打开的内容却换了。

常见的几种劫持入口

一种是本地 DNS 被污染,运营商或者路由器被改,解析结果直接是对方的 IP。一种是域名注册商账号被撞库,别人登录你的后台把解析记录改了,这种最狠,改的是权威服务器,全网都受影响。还有一种是本地电脑中了木马,hosts 文件被塞了一行,把域名硬指到一个假 IP 上,只影响这台机器。

判断方法其实不复杂,在命令行敲 ping 你的域名,看解析出来的 IP 是不是你自己服务器的。如果对不上,多半就是被劫持了。再换几个公共 DNS 比如 223.5.5.5 和 8.8.8.8 分别查一遍,如果只有某个网络下不对,那是通路上的问题;如果全网都错,那就是权威解析被改了。

域名注册商的账号安全是第一道门

绝大多数严重劫持都是从弱密码或者邮箱被攻破开始的。给注册商账号开上二次验证,邮箱也开,别用同一个密码到处注册。解析记录的 TTL 别设太短,设成六百秒左右,被改了还有时间发现。

  • 本地 hosts 被改:打开那个文件删掉可疑行,再用杀软全盘扫一遍
  • 解析记录被改:立刻登录注册商后台改回来,同时改密码开验证
  • 运营商劫持:换 DNS、上 HTTPS 全站,让对方没法插广告页

再提一句,网站全站上 HTTPS 加证书校验,能挡掉一大部分插广告式的劫持,但挡不住权威解析被改,那种只能靠账号安全防。

再提个自查的小办法,收到劫持反馈后,让用户换个手机流量访问一次。如果手机流量下正常,只有公司或者家里宽带有问题,基本能锁定是那条线路上的解析被做了手脚,直接找网络服务商反馈,比自己瞎修效率高得多。

总结就一句,先查解析对不对,再查账号稳不稳,最后上 HTTPS,三件事做完基本就稳了。