网站被篡改怎么办

凌晨两点,网站手机弹出一条监控告警:首页标题被改成了“Hacked by Ghost”。被篡我打开浏览器,改办页面顶部挂着一行红字,网站下面贴了张骷髅图。被篡这不是改办电影,是网站上周我帮朋友处理的一个真实案例——一个日活不到两千的地方论坛,被人用老旧的被篡FCKeditor漏洞传了webshell,整站文件被批量替换。改办网站被篡改这事,网站说大不大,被篡说小也不小,改办关键看你怎么应对。网站

先别急着删文件。被篡很多人第一反应是改办登录服务器,把被改的页面覆盖回去。这动作本身没错,但如果你没搞清楚入侵路径,覆盖完不到半小时,黑客可能又给你改回来。我见过一个电商站,运维反复还原首页,黑客反复篡改,来回折腾了七次。后来查日志才发现,对方留了一个隐藏的PHP后门,每次还原后自动重新写入。所以第一步永远是:断网、备份、查日志。把服务器从公网隔离,或者至少把80/443端口封掉,然后完整打包当前被篡改的站点目录和数据库——别嫌脏,这是证据。接着翻Web日志,重点看POST请求、异常User-Agent、以及非管理IP访问admin路径的记录。那个论坛的日志里,攻击者用了一串“Mozilla/5.0 (compatible; Nmap Scripting Engine)”的UA,扫了整整两小时才找到入口。

找到入口之后,别只修那一个点。篡改往往意味着权限已经丢了。检查这几个地方:有没有新增的admin用户?计划任务里有没有陌生的curl或wget?SSH的authorized_keys有没有多出公钥?一个做外贸的朋友中招后,只改了被篡改的页面,结果三天后数据库被拖走,对方拿客户邮箱群发勒索信。所以清理要彻底——重装系统是最省事的,如果业务不允许,至少把Web目录、数据库、配置文件全部回滚到已知干净版本,然后挨个核对文件哈希。有个小技巧:用`find /var/www -mtime -2`列出最近两天被修改的文件,往往能揪出漏网的后门。

加固这事,别等下次。那个论坛后来装了WAF,但真正管用的是两件事:一是把后台路径从/admin改成随机字符串,二是给所有上传目录加了`php_flag engine off`。很多篡改都是从上传点进来的,图片目录里跑PHP,等于给黑客开了后门。另外,定期用`diff`对比线上文件和Git仓库的差异,比任何扫描器都直接。我自己的博客每周日凌晨自动跑一次`git status`,有改动就发邮件,虽然偶尔误报(比如缓存文件),但总比被挂了博彩链接半个月才发现强。

最后说个反直觉的点:不是所有篡改都来自外部。前年有个客户,首页被插了赌博关键词,查了半天发现是离职员工留的定时脚本。所以权限管理别偷懒,离职即删账号,数据库账号别用root,Web目录权限设成755、文件644,别图省事给777。网站被篡改就像家里进贼,丢东西是小事,贼知道你家门锁怎么开的才是大事。把锁换了,把窗户焊死,比天天盯着客厅有没有脚印有用得多。