凌晨三点,网站手机突然弹出一堆来自Google Search Console的备劫报警邮件。我爬起来打开电脑,持办输入自己的网站域名,浏览器地址栏里显示的备劫网址没错,但页面内容变成了一个博彩网站的持办首页。那一刻我就知道——网站被劫持了。网站
这不是备劫什么罕见的事。劫持分很多种,持办最常见的网站是DNS劫持。攻击者拿到你域名注册商或者DNS服务商的备劫账号,把A记录指向他自己的持办服务器。你的网站域名还是你的,但访客看到的备劫已经是别人的内容。另一种是持办服务器层面的入侵,黑客直接在你的服务器上挂马,或者通过CMS漏洞上传了一个恶意跳转脚本。还有一种更隐蔽的——HTTP响应劫持,通常发生在你用了不安全的公共WiFi或者运营商节点被污染的时候。
先别慌。第一步永远是确认劫持范围。打开命令行,用nslookup yourdomain.com查一下DNS解析结果。如果返回的IP地址不是你服务器的IP,那基本可以确定是DNS层面的问题。如果IP是对的,但页面内容不对,那就登服务器看文件。检查.htaccess、index.php、nginx.conf这些地方有没有被插入奇怪的跳转代码。我见过一个案例,黑客在WordPress的functions.php里加了一段base64_decode,只在移动端UA下才触发跳转,桌面浏览器访问完全正常。这种最恶心,你不拿手机测根本发现不了。
确认了劫持类型,处理起来就有方向了。DNS劫持的话,立刻登录域名注册商后台,改DNS密码,开启两步验证,然后把解析记录改回正确的IP。如果注册商账号已经被改密码,直接打客服电话,提供域名所有权证明,让他们冻结账号。这个过程可能要几个小时,但没别的办法。服务器入侵的话,先别急着重装系统。把当前服务器做个快照,留着取证。然后检查所有用户账号、SSH密钥、计划任务、启动项。很多黑客会留后门,你重装系统但没改密码,他下次还能进来。
我自己的习惯是,发现劫持后先切流量。把DNS的TTL调到最低,比如60秒。然后准备一个干净的备用服务器,把网站文件从备份里恢复过去,数据库也恢复。确认新服务器没问题了,再把DNS切过去。这样用户最多看到几分钟的异常页面。千万别在原服务器上边修边查,你修的速度赶不上他再黑进来的速度。
说个真实的例子。去年有个做外贸的朋友,网站被劫持后跳转到色情页面。他找了一家“专业安全公司”,花了八千块,对方说搞定了。结果三天后又跳了。我帮他看的时候发现,黑客根本没走——他在wp-content/uploads目录里藏了一个.ico文件,里面是PHP代码,通过include动态加载。你扫恶意文件根本扫不出来,因为后缀是图片。最后是把整个uploads目录清空,重新上传所有图片才解决。
劫持处理完之后,有几件事必须做。改所有密码——服务器、数据库、CMS后台、FTP、DNS。别用同一个密码。开启两步验证,能开的地方都开。检查网站有没有被提交到Google的安全浏览黑名单,有的话去Search Console申请复审。最后,装个监控。我用的是UptimeRobot加一个自定义的curl脚本,每五分钟检查一次首页的标题和特定关键词。一旦发现标题变了或者关键词没了,立刻发短信报警。
还有一点,很多人忽略的是本地电脑。如果你的电脑中了木马,黑客能直接拿到你浏览器里保存的密码。你在这边改密码,他在那边同步收到。所以处理完服务器之后,用另一台干净的设备改密码,或者至少全盘杀毒一次。
网站被劫持不是世界末日,但反应速度决定损失大小。我见过最快的,从发现到恢复用了四十分钟。也见过拖了一周,搜索引擎把域名标记为危险,流量掉了百分之九十。区别就在于有没有提前准备好备份和应急预案。现在就去检查你的DNS服务商有没有开两步验证,备份是不是最新的。别等明天。
