谨防MySQL被黑客删库勒索

471 阅读2分钟

前言

昨天发了一篇docker里mysql崩溃导致删库的文章,今天早上10点又TM崩溃了。

一气之下不对啊 昨天也是10点左右,然后我重启容器后 连接上mysql看了一下

好家伙,不看不知道 一看吓一跳,库删的就剩下一个库 README_TO_RECOVER_A

勒索信息

'All your data is backed up. You must pay 0.009 BTC to 17dFU6EDwMoF7F9p9Kvfkf5Tgq2EqRNEQj In 48 hours, your data will be publicly disclosed and deleted. (more information: go to 勒索网站地址)'<

'After paying send mail to us: 邮箱地址 and we will provide a link for you to download your data. Your DBCODE is: 24Z2H' <

意思就是它把你数据删了 你要比特币赎回 还有时间限制。

解决思路

我看了下日志

2023-08-02T01:27:21.033661Z 233 [System] [MY-013172] [Server] Received SHUTDOWN from user root. Shutting down mysqld (Version: 8.0.31).
2023-08-02T01:27:22.108810Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.31)  MySQL Community Server - GPL.

就是说 mysql服务收到了root发出的停止命令 但是为什么删库了 我不知道。

也就是说别人远程登录了mysql的root用户 把我库删掉了。

我求助互联网后 发现好多这种情况,都是禁止root的远程登录。

让root用户只能本地登录就行了。

限制root远程登录

我这都是测试数据 所以选择直接删doker容器吧,重建一个容器 然后禁用root远程登录。

重新创建mysql的docker容器

docker run -d --name mysqls -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234qwer -v /home/mysql/log:/var/log/mysql -v /home/mysql/data:/var/lib/mysql -v /home/mysql/conf:/etc/mysql/conf.d mysql:8.0.31

然后等待几秒 等容器里的mysql服务部署完毕

进入容器

docker exec -it mysqls bash

登录mysql服务

mysql -u root -p

切换到 mysql表

use mysql;

看一下当前用户

select user, host from user;

image.png

可以看到 有个 root % 和一个 root localhost

其中 root % 就是说明root的远程登录,root localhost 就是root的本地登录。

我们删掉 root % 即可

delete from user where user='root' and host='%';

返回 Query OK, 1 row affected (0.00 sec)

然后刷新 一定要刷新 不刷不生效 还是能登录。

flush privileges;

我们再查一次表 看到 root % 没了 就算成功了。

我这里用MySQL WorkBench 连接试了下 确实无法连接。

至此 这个漏洞算是补上了。还有很长的路要走啊!