上个月我帮朋友排查一个网站,网站打开首页正常,被劫点进商品详情页却跳到一个博彩平台。持何地址栏的发现域名明明没输错,浏览器也没报证书错误——这就是和解典型的DNS劫持,攻击者在域名解析环节动了手脚。网站
先说说怎么发现。被劫最直接的持何信号是:你访问自己的网站,页面内容变了,发现但服务器后台文件一切正常。和解另一个隐蔽迹象是网站,用手机流量访问正常,被劫连Wi-Fi就出问题——路由器被篡改是持何常见原因。还有一种情况,发现你通过不同网络环境反复测试,和解比如让外地朋友帮忙访问,如果只有部分区域异常,那多半是运营商层面的DNS污染。
发现异常后,别急着改代码,先确认劫持类型。打开命令行,输入nslookup yourdomain.com,看返回的IP地址是不是你服务器真实IP。再用dig yourdomain.com @8.8.8.8对比谷歌DNS的结果,两个不一致就说明劫持发生了。我那次帮朋友查,本地DNS返回的IP指向一个境外服务器,而谷歌DNS返回的才是他买的阿里云主机地址。
确认后怎么解决?分三步走。
第一步,更换DNS解析商。把域名管理后台的DNS服务器从默认的改成Cloudflare或阿里云DNS,同时开启DNSSEC。这能防止上游DNS被污染。我朋友当时用的是国内某小厂商的DNS,解析记录被人改得面目全非,换成Cloudflare后问题立刻消失。
第二步,检查服务器自身。登录服务器,查看/etc/hosts文件有没有被加入恶意条目,再用netstat -tulnp检查有没有可疑端口对外开放。有些劫持是服务器被植入后门,黑客直接改了Web配置文件。用grep -r "eval\|base64" /var/www/html扫一遍PHP文件,能发现加密后门代码。
第三步,给全站上HTTPS。HTTP协议明文传输,数据在链路中容易被篡改。部署SSL证书后,即使DNS被劫持,浏览器也会因证书不匹配而警告用户。这不能阻止劫持,但能让用户意识到风险,减少损失。
最后说个容易忽略的点:检查你的域名注册邮箱。很多劫持是从邮箱被盗开始的,黑客登录注册商后台,把DNS解析指向自己的服务器。我见过一个案例,网站被劫持三个月,站长整天改代码,结果发现是域名注册商的账号密码泄露了。改完所有密码,开启两步验证,才算彻底解决。
处理完这些,记得用不同网络环境多测几天。劫持手段层出不穷,有的攻击者会设置定时任务,过几天重新发作。保持警惕,定期检查解析记录和服务器日志,比什么都管用。