打开浏览器,网站输入自家域名,被劫跳出来的持办却是一个博彩页面。这种事我遇到过三次,网站最近一次是被劫帮朋友看他的外贸站——域名解析被人改了,A记录指向了一个俄罗斯IP。持办网站被劫持不是网站玄学,就是被劫有人拿到了你的DNS管理权限,或者在你服务器上留了后门。持办
先别急着骂服务商。网站劫持分好几种,被劫得先搞清楚是持办哪种。
DNS劫持:最常见的网站那种
域名解析记录被人改了。登录你的被劫域名注册商后台,看DNS管理页面,持办A记录、CNAME记录是不是指向了陌生IP。如果确实被改了,立刻改回来,然后马上改域名账户密码,开启两步验证。顺便查一下域名邮箱有没有被设置转发规则——攻击者经常通过邮箱重置密码来拿域名控制权。
还有一种DNS劫持发生在本地:你电脑的hosts文件被恶意软件改了。这种情况只影响你自己,别人访问正常。检查C:\Windows\System32\drivers\etc\hosts(Windows)或/etc/hosts(Mac/Linux),看有没有奇怪的条目。
服务器入侵:后门还在,改了解析也没用
DNS改回来之后,网站还是跳转?那问题在服务器上。攻击者可能上传了webshell,或者改了nginx/apache的配置文件,加了301跳转规则。查这几个地方:
网站根目录下有没有最近修改过的.php、.js文件,尤其是文件名随机、内容混淆的。nginx配置里搜rewrite和return 301,看有没有指向外部域名的规则。.htaccess文件(Apache环境)也翻一翻。数据库里wp_options表(WordPress)的siteurl和home字段有没有被改。
我见过一个案例,攻击者在index.php开头加了一行header("Location: http://xxx.com");,就这一行,搜索引擎收录全乱了。清理后门之后,记得把服务器所有密码换一遍,SSH密钥重新生成,别给攻击者留第二次机会。
运营商劫持:你管不了,但能绕
有些劫持发生在运营商层面。你访问自己的站,正常;用户访问,被插入广告或跳转。这种通常是小运营商干的,为了赚广告费。判断方法:用不同网络(手机4G、电信、联通)分别访问,看是否只有特定运营商出问题。
解决方案是上HTTPS。全站HTTPS之后,运营商没法在传输过程中插东西。如果已经上了HTTPS还被劫持,那可能是证书被伪造,或者用户设备中了根证书级别的恶意软件——这种情况极少,普通站长不用太担心。
被劫持之后该做的几件事
清理完劫持,别以为就结束了。去Google Search Console和百度站长平台提交死链清理,申请重新收录。如果网站有用户数据,发公告提醒用户改密码。检查搜索引擎快照,如果快照里还是劫持页面,提交快照更新请求。
最后说个实在的:大部分劫持事件,根源是弱密码。域名注册商密码、服务器SSH密码、CMS后台密码,三个里面至少有一个是admin123这种级别。花半小时把密码全换成随机生成的,开启两步验证,比事后救火省心得多。