游客发表
打开自己的解决劫持网站,跳出来的网站却是博彩页面。这种事我遇到过三次,解决劫持最近一次是网站去年帮朋友查一个企业站,百度搜索“公司名”,解决劫持结果第二条就是网站赌博链接,点进去域名还是解决劫持他自己的。服务器没被黑,网站密码也没泄露,解决劫持问题出在域名解析上——DNS被劫持了。网站
域名劫持分好几种。解决劫持最常见的网站是DNS劫持,攻击者拿到你的解决劫持域名管理后台权限,把A记录改到自己的网站服务器。还有一种叫ARP欺骗,解决劫持局域网里有人冒充网关,你访问任何网站都可能被导到钓鱼页。再有就是运营商层面的HTTP劫持,这个普通人基本没法防,只能靠HTTPS。
怎么判断自己中招了?很简单。用手机4G网络访问网站,如果正常,连WiFi就跳转,大概率是本地网络问题。如果手机流量也跳,那就是域名解析或者服务器层面出了事。另一个办法:在电脑命令行敲 nslookup 你的域名,看看返回的IP是不是你服务器的IP。不是的话,DNS被改了。
说个真实案例。有个做外贸的朋友,网站突然被谷歌标记为“危险”,流量掉了一半。他以为是服务器中毒,重装了系统,换了密码,没用。后来查DNS记录,发现域名被解析到一个俄罗斯IP。原因是他域名注册商的后台密码太简单,被撞库了。攻击者没动服务器,只改了DNS,然后在那台俄罗斯服务器上放了一个仿冒的登录页,专门钓他客户的邮箱密码。这种劫持最阴,你服务器再安全也没用,因为流量根本没到你这里。
解决DNS劫持,第一步是改密码。域名注册商、DNS服务商、服务器SSH,全部换成强密码,开两步验证。第二步,锁定DNS记录。很多DNS服务商支持“注册商锁定”或者“域名锁定”,开了之后,任何DNS修改都需要额外验证。第三步,换用靠谱的DNS服务。国内可以用DNSPod、阿里云DNS,国外Cloudflare也免费。别用域名注册商默认的DNS,那玩意儿往往最容易被攻破。
如果是运营商HTTP劫持,比如你网站明明有HTTPS,但用户访问时被插入广告,那就强制全站HTTPS,加HSTS头。HSTS告诉浏览器:以后这个域名只能用HTTPS访问。运营商再想插广告,浏览器直接拒绝。这个头在Nginx里加一行就行:add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;。
还有一种情况是网站被挂马。攻击者通过漏洞上传了恶意脚本,用户访问时脚本执行,跳转到赌博站。这种不是劫持,是入侵。查日志,看有没有异常POST请求,检查最近修改过的文件。WordPress站点尤其要注意插件漏洞,我见过一个统计插件被利用,往每个页面注入一段JavaScript,专门在移动端跳转。
预防比补救重要。我自己的习惯是:域名注册商和DNS服务商分开,一个用阿里云,一个用Cloudflare。这样就算一个被攻破,另一个还能兜底。另外,开启DNS变更邮件提醒,任何记录修改都会发邮件到手机。有一次半夜收到提醒,说A记录被改,我五分钟内就改回来了,攻击者还没来得及传播。
网站劫持这事,说到底就是权限和链路的问题。权限没守住,DNS被改;链路没加密,内容被篡改。把这两条堵死,90%的劫持都能防住。剩下的10%,靠监控和备份。每周备份一次数据库和网站文件,真出了事,恢复也就是半小时的事。
友情链接