前言
服务器突然连接不上,联系云客服,云客服发现是重启卡住了,经过他们排查,是服务器中了勒索病毒,该病毒就是在服务器上执行脚本,把文件全部进行加密,然后友好的给你留下一个文件。(QTMD)
经过排查,我这台服务器影响的有两个服务,一个tomcat服务,一个springboot服务和一个msyql数据库。服务器上的mysql运行文件都被加密过,想重新启动是不可能了,还好最后发现,mysql数据的物理文件没有被处理过(看来勒索病毒处理的还是有漏洞呀),看来数据恢复还有希望;另外一个服务上传的图片全部被加密,这个也是没办法恢复了。
恢复mysql数据
-
mysql本地文件,大概是这个样子,一个库一个目录,目录下面就是该库的物理文件
- db.opt存的信息是该库的字符集和字符集排序规则
- *.frm是表结构信息
- *.ibd是表数据信息
- 这个接口是innodb引擎的接口,myisam结构好像不太一致,想具体了解的自行了解。
-
将所有文件下载到本地。
-
自己本机mysql上创建一个新的库
-
我是有测试环境,所以直接把测试环境的表结构同步过来。
-
打开本机mysql新库的物理地址,可以看到目录和服务器上全部一致。
-
分离表空间,使当前.ibd的数据文件和.frm分离。
ALTER TABLE 表名 DISCARD TABLESPACE;
-
这时候查看本地目录,该表的ibd文件已经成自动删除
-
将服务器上下载的idb文件复制过来,重新建立idb的链接。(要注意复制过来之后权限和用户组要和之前保持完全一致)
ALTER TABLE 表名 IMPORT TABLESPACE;
-
至此,该表的数据已经回复完成,多表可利用excel批量处理
经验与反思
- 数据库和图片的静态文件尽量少放在服务器上,rds防护肯定比自己服务器上搭建msyql好点。(数据更安全点)
- 这次被攻击也不知道是不是因为log4j2漏洞导致(持怀疑态度,毕竟是漏洞爆出之后,一周左右被攻击,而且服务确实用了log4j2)
- 数据库备份可以利用*.idb文件和表结构进行备份(至少我觉得可行,主要是重新建立idb链接的速度很快。)