上周六下午,刷 https://nicrosoft.net/blog/ 时,突然刷出了 404。SSH 登录上服务器,才发现久未关注的服务器上,WordPress 网站目录下已经遍布了 wpconfig.bak.php 这样的黑客留下的恶意文件。
因为这台服务器上的网站一直运行良好,就很久没有关注过它了。所以,在备份了日志后,当即还是决定彻底重装整个系统。这台机器上主要都是我个人相关的网站,没有什么重要的在线服务,因此也就断断续续花了好几天,才把所有环境都恢复起来了。小说也断更了好几天了。
之后,还在 MySQL 数据库里,发现了黑客添加的几个 WordPress 管理员帐号。
所以,最后决定好好增强一下 WordPress 的安全性。WordPress 自身,以及因为支持各种良莠不齐的插件,安全性一直是被诟病的。之前觉得自己的网站没什么人关注,应该不值得成为黑客目标,当然也是对自身运维方面有一定的信心,尤其是一直稳定运行了超过十年,所以就真的大意了。
亡羊补牢,经过对被黑网站的日志的分析,黑客的行为大致还是有迹可循的。对于 WordPress 架设的网站,我建议:
- 尽量不安装,或者少安装第三方插件。并不是说,用的人越多,越流行的插件就没问题。流行度越高的插件,被黑客研究利用的可能性也越大。插件开发者水平参差,不见得每个插件都能在安全性上下足功夫。
- 自己配置 web 服务器,比如 nginx,要禁止在敏感目录(比如 /wp-content/uploads/)执行 php 文件。可以在 nginx 的网站配置中增加类似下面这段:
location /wp-content/uploads/ { location ~ .*\.(php|php5)?$ { deny all; } }
- 配置禁掉 /xmlrpc.php:
location = /xmlrpc.php { return 403; }
- 监控网站目录中文件的异常变动,比如增加了什么奇怪的文件。
- 监控网站的数据库中用户数量的异常变动,比如增加了奇怪的管理员权限的账号。
关于上面第4、第5两点,我准备写一个监控工具定时自动执行来完成。昨天已经在 github 开了新项目:https://github.com/shenmin/wpsec_mon
目前完成了监控数据库中用户数量的异常变动,发现增加了可疑账号时,发送邮件通知。定时执行则借助系统的 cron 服务即可。后续还会继续做下去,把文件监控完成。
|