网站被劫持怎么解决
昨天半夜,网站我朋友老周发来一连串截图,被劫急得直跳脚。持解他打开自己公司的网站官网,浏览器地址栏里明明敲的被劫是自家域名,结果页面跳出来一个满屏扑克牌广告的持解赌博网站。他试了三次,网站每次都一样。被劫这不是持解他电脑中毒,是网站网站被劫持了。
劫持这种事,被劫分好几种。持解最常见的网站是DNS劫持,相当于你拨电话给10086,被劫结果接线员是持解骗子假扮的,把你接到了诈骗热线。你的域名解析请求被中间人篡改,指向了恶意服务器的IP。还有一种叫HTTP劫持,运营商或者路由器在数据传输过程中偷偷塞进去一段代码,往你网页里硬插广告或者跳转脚本。
先说怎么判断。最简单的办法:用手机4G网络访问你的网站,如果正常,而电脑宽带访问就跳转,那基本锁定是本地网络环境的问题。换个DNS服务器试试,比如改成114.114.114.114或者8.8.8.8。如果换了DNS就好了,那就是你原来用的DNS被污染了。
如果换了DNS还是跳,那就得查网站代码本身。用浏览器开发者工具,看网络请求里有没有异常的外链域名。很多劫持脚本是藏在js文件里的,平时不发作,等到特定条件才触发。我见过一个案例,攻击者把恶意代码塞进了网站底部的统计代码里,混在正常的百度统计和谷歌分析中间,一般人根本看不出来。
更隐蔽的是服务器端劫持。你的网站文件是干净的,但服务器上的配置文件被改了。比如Nginx或者Apache的配置里被加了一段反向代理规则,用户访问时先经过攻击者的服务器过滤一遍。这种情况光改前端代码没用,得登录服务器查配置文件的修改时间,看有没有陌生的定时任务。
我碰到过最狠的一次,是黑客直接改了CMS系统的核心文件。网站后台登录一切正常,文件管理器里也看不到异常文件,但前台页面就是会跳转。最后用命令查了所有文件的哈希值,才发现某个核心类文件被替换过,里面埋了加密的跳转代码。
解决流程得按顺序来。先备份现有网站文件和数据库,这一步别省。然后扫描本地电脑,排除自己电脑被劫持的可能性。接着检查DNS解析记录,看A记录、CNAME记录有没有被改动。再登录服务器,查web服务配置、检查最近修改过的文件。最后才考虑重装CMS或者恢复备份。
有些时候,你查了一圈什么都没发现,但问题就是存在。那可能是域名注册商的账号被盗了,攻击者直接改了域名的DNS服务器地址。这种情况得登录域名管理后台,看DNS服务器是不是被换成了不明地址。我见过一个站长,域名商账号密码用了十年没变过,结果被撞库,整个域名被转移走了。
劫持解决之后别急着收工。改掉所有后台密码,开启两步验证。把网站程序更新到最新版本,删掉不用的插件和主题。定期检查服务器日志,重点看那些异常的301跳转记录和可疑的POST请求。
老周那次最后查出来是路由器被入侵了。他的路由器管理密码还是出厂默认的admin,攻击者改了他的DNS设置,把整个家庭网络都劫持了。他换了路由器密码,重置了DNS,问题就消失了。前后折腾了四个小时,起因就是一个没改的默认密码。
网站被劫持这事,跟家里门锁被撬一样,修好锁不够,还得想想为什么小偷盯上你。很多劫持是自动化扫描的结果,你的网站只要有漏洞,就会被批量攻击。别觉得自己网站小、没流量就安全,黑客用脚本扫全网,根本不看网站大小。
最后提醒一句,别等到被劫持了才想起来查。现在就去看看你的域名注册商账号密码强度,检查一下服务器有没有开SSH密码登录,把该关的端口关掉。这些事花不了半小时,但能帮你省下后面几天甚至几周的麻烦。
