昨天接到了一个 VPS 迁移的小单,本来以为是个简单轻松的活儿,没有想到从昨天开始折腾到今天晚上才算是彻底的完成,主要原因还是出在使用 WordPress 插件不当造成的麻烦,可以说 WordPress 插件这把“双刃剑”已经成了 WordPress 安全问题非常突出的一个方面了,滥用 WordPress 插件造成的危害是非常的大的,这次要不是因为碰到我了,估计站点数据丢失几乎是必然的。
事情的经过是这样的:用户发现他的 VPS 总是因为对外发送数据包过大被服务商禁用服务,在购买了流量包后没有几天又再次因为同样的问题被服务商关停服务,这时候用户就找到我想做 VPS 迁移,更换个运营商。我在通过 SSH 远程登录 VPS 简单的做了一个了解后发现问题可能并不是出在 VPS 服务商那里,凭经验一般都是插件、主题被植入恶意代码造成的。因为这位用户的服务器端生产环境的部署非常的混乱(PHP、MySQL、Nginx 版本都严重滞后),一时半会儿我也无法进行精确的问题排查,只能将 WordPress 的 Plugins 目录进行更名来确定我的判断(插件目录更名其实就是变相的禁止了 WordPress 所有的插件),没想到还真是插件出的问题,禁用了所有的插件后,服务器的负载立马稳定了下来。问题找到了就好解决了,这时候就给用户建议做好文件、数据库备份后重置 VPS,重新部署生产环境后恢复站点数据,这样增强了服务器的稳定性同时也便于后期的运维服务。
历经了千辛万苦(主要是原 VPS 的服务器生产环境太乱了)终于将数据库和站点文件都备份好了,重置了 VPS 后部署好新的生产环境,PHP、MySQL、Nginx 都用上了最新稳定版。进行到数据库备份导入的时候发现无论如何都是 500 错误,排除了服务器环境的问题,只有一个可能就是当时导出备份的 SQL 文件有问题,使用 EditPlus 本地打开 SQL 文件后发现竟然有几十万条数据库记录,怪不得导入会出现 500 错误!通过对 SQL 文件的分析发现数据库里被写入了几十万条垃圾记录以及 WordPress 站点用户信息,没办法只能手动借助 EditPlus 强大的文本处理能力来清理了,清理完成这个 SQL 文件的大小缩小了 90%左右,可想而知里面被写入了多少垃圾内容,恢复导入清理后的 SQL 文件,站点完美的恢复了正常。
对这次经历进行了简单的分析后发现造成数据库被写入巨量垃圾记录的罪魁祸首就是 WordPress 插件造成的,加上服务器生产环境的应用版本都严重滞后自然漏洞百出,这时候用户又跟风使用了 WP Super Cache 缓存插件(关于缓存插件建议大家参考『我为什么放弃了缓存插件?』、『WordPress 博客什么时候才需要缓存插件』等文章来了解),这样不干净的插件里被植入的恶意代码借助缓存插件在本地的缓存文件配合服务器生产环境下老版本应用的漏洞就会轻松的获取到相应的权限,于是人家就在数据库里任意写入各种垃圾信息了,上述案例开头所说的对外发送大量数据包其实就是把这个 VPS 当做向外发送黑链、恶意评论等等行为的中转服务器了,通俗点讲就是在你家的地里被被人播了种还发芽、成熟并被人家给收获了,你还得给人家支付地租。
目前就这两年所碰到的各种 WordPress 站点、服务器故障几乎 99%都是不干净的插件、主题造成的,甚至有时候 WordPress 官方的插件库里的插件也会出现远程激活的后门和木马,可以说 WordPress 安全的重灾区就是插件、主题了,所以对于让我托管的网站、服务器用户都再三告诫不要随意使用插件,就算是要使用也要提前告之我一下,以便我做好防范措施时刻观察。
如果你是一个经常使用各种免费、破解主题、插件的站长建议你一定要重视服务器生产环境的部署,及时的更新和修复漏洞是很有必要的,服务器运维期间要多注意负载变化,发现负载出现大幅度的变化就要及时的排查造成的原因,来历不明的插件和主题能少用还是少用为妙,你的站点对别人可能是没有价值的,但你的服务器可是自己花钱购置的,别人盯得可能就是你付费的东西。你付费的服务被别人免费使用,我想能接受的人很少吧,当然“土豪”不算在内了,:-)
新闻热点
疑难解答
图片精选