WordPress搭建的网站中毒了,所有访问都自动跳转到首页,也不能登录到后台,想通过登录后台,安装插件清除病毒是行不通的。WordPress文章都存在数据库里,上传的图片等文件在wp-content/uploads/里。我选择重新安装WordPress,然后把以前的wp-content/uploads/文件再上传过去。
1. 备份整个站点
虽然只需要wp-content/uploads/,但是为了保险起见,把整个站点都备份一下。
2. 重新安装
下载一个新的WordPress,上传到服务器,填写数据库信息,重新安装。
3. 更新密码,启用动态验证码登录
更新一个新的密码。安装Wordfence插件,进入“Login Security”选项,手机安装Microsoft Authenticator,启用动态验证码。为了方便,启用”30天只用动态验证一次“,取消”XML-RPC的动态验证“。
4. 启用FireWall
安装Wordfence后,进入Firewall Options,启用”Enabled and Protecting“。
5. 安装WP Hide & Security Enhancer
使用该插件,可以将WordPress默认的访问路径重定向,只是逻辑上的重定向,不影响物理路径。
6. 优化数据库
安装WP-Optimize插件或WP DB Cleaner,给数据库瘦身。通常中毒后,数据库里有很多垃圾数据。
7. 恢复以前的wp-content/uploads/
在将以前的wp-content/uploads/上传到站点前,先手动排查下病毒文件。在旧站点wp-content/uploads/目录下,搜索关键字”*php*“和”*.db“,将搜索到的文件删除,然后将wp-content/uploads/上传到服务器。下图是我旧站点uploads文件夹里搜索出来的文件:
8. 扫描病毒
进入”Wordfence/Scan“页面,点击”START NEW SCAN“,待扫描完毕后,清理发现的病毒文件。
9. 备份站点
安装”UpdraftPlus Backup/Restore“插件,备份站点。它可以将备份存在远程云上,例如Dropbox, Google Drive, Google Cloud等。
至此,网站就恢复了。如果2天内,不再瘫痪,就说明网站没有问题了。
2022/7/9 更新
网站再次被攻击瘫痪了,查看日志发现下面有大量如下post请求:
- /wp-login.php
- /wp-cron.php
- /xmlrpc.php
重新安装新的wordpress,恢复站点后,使用 ‘WP Hide’ 插件做如下fix:
- /wp-login.php (重定向,disable default)
- /wp-cron.php(block default)
- /xmlrpc.php(重定向,disable default)
网上搜索wp-cron.php,发现很多博主说这个引起宕机,需要disable它。参考此博文,编辑wp-config.php,添加一行:
define('DISABLE_WP_CRON', true);
又安装了disable-xml-rpc-api 插件,双重保险避免xmlrpc.php遭到攻击。