有关 WordPress 站点安全的问题咨询,明月总结分析了一下几乎 90%以上都是“恶意代码”造成的,而给站点带来恶意代码的插件就占了 80%以上(有官网插件、网上流传的插件等等),其他的就是主题了(以破解版、盗版主题为主),其实无论是“恶意代码”还是“后门木马”都是以代码的形式在服务器上传播破坏的,今天明月就跟大家讲讲如何通过对代码的分析来提前找出这些“肮脏”的东西。
function.php 里恶意代码的分析和排查
在 WordPress 里“恶意代码”最容易出现的地方就是主题目录下的 function(s).php 里,一般正规的 function.php 文件结尾都会有类似下面这样的结尾注释:
如果你发现没有这个结束注释的时候,那么基本可以判定你的 function.php 文件被篡改过了,就需要好好的检查了,比如下面这些代码行:
每行是独立存在的,如果你的 functions.php 中有上面任意一段代码,那么你可能就中招了。其中 function、add_action 这类一般都是属于“恶意代码”做“准备活动”的代码。
清除 function.php 恶意病毒代码
清理也很简单,直接在 function.php 文件里面找到上面的类似代码删除即可,但因为一旦感染会导致你 themes 主题目录所有主题都感染,因此你只清除当前使用主题是无效的,你清除后很快就会生成,因此你清除掉一个主题的代码后,把 functions.php 文件设置为 444 权限,然后再清理其他主题即可。至于最后 functions.php 文件的 444 权限是否需要改回去,个人建议 444 挺好挺安全的,等要修改的时候再修改就行了。
当然“恶意代码”并不仅仅局限于 function.php 文件里,明月就碰到过隐藏在 WordPress 根目录 index.php 文件里、wp-include 或者 wp-admin 目录下某个 PHP 文件、cache 这样有读写权限的目录等等,可以说是五花八门、脑洞大开的无所不在,这些其实就是【网站安全的「灯下黑」隐患:账号安全】一文里所讲的账号权限被获取到的后果,这样的结果最难排查,就明月的经验来说大致可以分为两种,分别如下:
手动排查和清除
所谓的“手动”其实就是借助 FTP 软件的“目录对比”、“同步浏览”来排查服务器端的 PHP 文件大小和最后被修改日期来进行分析清理的,因为一般来说 WordPress 站点的 wp-include 和 wp-admin 这两个目录里的文件基本上都是固定不变的,只有在升级、更新 WordPress 的时候才会有部分的覆盖替换,平时来说理论上是不会对这些文件进行修改操作的,通过与本地同样版本的目录文件进行对比可以快速的找出服务器上多出来的文件已经被修改过的文件(文件大小、最后修改日期),以 FileZilla FTP 软件为例,如下图所示:
可以看到通过 FileZilla FTP 软件的“同步浏览”和“目录对比”可以快速的找到被修改过的服务器端的文件,当然也可以找出“多出来”的 PHP 文件(这类基本上直接删除清理就可以了,几乎百分百肯定是恶意代码自建的)这里只是为了告诉大家这种方法的,具体还需要大家自行来理解和试用了,这种方法对于非 WordPress 平台的博客系统来说比较实用( WordPress 有安全插件可以扫描“恶意代码”)。
第三方插件、工具扫描排查
WordPress 明月一直比较推荐 Wordfence Security 插件的,这是一个集防火墙和恶意代码扫描为主的 WordPress 安全插件,由一个大型团队建立和维护,100%专注于 WordPress 安全性。虽然有收费模块,但是我们可以使用免费模块“Scan”来扫描自己 WordPress 站点排查含有“恶意代码”的 PHP 文件,虽然有一定的误报率(主要是一些正版插件、主题的加密组件会被误报),但是查找“恶意代码”绝对是事半功倍的高效率,需要注意的是,这个插件明月不建议常开启着,因为其防火墙和安全防护会对数据库造成一定的负载压力影响网站整体性能的发挥,一般需要的时候启用插件运行“Scan”扫描排查,完成后关闭插件保留以备不时之需就可以了。
- Wordfence Security 插件使用注意事项:
1、在开始“Scane”之前,为了保证扫描的稳定执行,最好停用其他所有的插件(仅仅保留 Wordfence Security 插件启用)。
2、因为 Wordfence Security 插件扫描会造成服务器 CPU 负载飙升,建议选择扫描时间段在凌晨以后进行或者是网站访问量最低的时候。
3、我们仅仅是借助 Wordfence Security 的“Scan”恶意代码的规则而已,所以注意记录扫描结果里提示的可疑 php 文件的路径,方便手动先备份后清理删除。
其实还有一个本地工具是个查找 PHP 文件恶意代码的最佳存在,那就是微软的 MSE,我们可以将服务器端的 PHP 文件下载到本地,让微软的 MSE 扫描检测也可以找到“恶意代码”、“木马后门”的。这点而比国内的那些啥“卫士”、“管家”、“XX 霸”之流强的不只是一点点哦。
第三方工具有不少选择,具体如何选择大家根据自己的情况自由选择就是了,这里不得不叹服一下 WordPress 的生态环境真的是最好的, Wordfence Security 这样的插件存在就很能说明这个问题了。
最后明月要再次强调一下, WordPress 丰富的插件、主题是优势也是一把“双刃剑”,大家在选择、使用插件、主题的时候一定要慎重, WordPress 不安全主要的因素就是插件、主题这些不是 WordPress 可以控制的,毕竟都是第三方开发提交的。热衷于体验各种插件和炫酷主题的站长们 Wordfence Security 插件建议永久保留以备不时之需,有好好运营网站打算的站长们建议购买正规渠道的正版主题和插件,免费的、盗版的、破解版的都有“不干净”的隐患。