记一次被删库勒索的经历

a blog of an experience of blackmailed by deleting my databases

Posted by if on 2021-12-07
Estimated Reading Time 2 Minutes
Words 621 In Total

记一次被删库勒索的经历

前言

我用的mysql数据库,今天同学调用接口时说接口返回提示"检索数据库失败",平时不会出现这种问题

我打算用navicat看一眼数据库,发现navicat居然无法登陆

然后我就去登录服务器看了一眼数据库,不看不知道,一看吓一跳,数据库表和数据都删了,始作俑者还留了封信

以下数据库已被删除:(忽略)。 我们有完整的备份。

要恢复它,您必须向我们的比特币地址xxxxxxx

支付0.005比特币(BTC)。

如果您需要证明,请通过以下电子邮件与我们联系。 xxxxxx@tutanota.com 。 任何与付款无关的邮件都将被忽略!

原因

登陆服务器后发现居然真被删数据了,不过仔细一想也正常

我生产环境一直使用的默认端口3306,用户名也是默认root,密码都是简单123321

端口长期开放没有限制ip

这不管是被侵入还是被猜中都是情理之中的事情

不过我这些测试数据都在本地和云端仓库有sql备份,而且数据也都是假数据,被删了也无所谓

那我们应该怎么防止此类事件,或者发生后如何解决呢?

解决办法

修改端口号

修改my.ini或者my.conf配置文件中的port端口号

默认是3306,改成别的都可以

bind表示谁能访问服务,修改为0.0.0.0表示可以远程登录

[mysqld]

port=3306

bind=127.0.0.1

无法远程连接数据库?

进入mysql库的user表

查看user用户名host连接地址authentication_string密码

注:老版本的密码叫password

1
select user,host,authentication_string from mysql.user;

假设我们用户名为root情况下

如果root的host是localhost表示只能在本地登陆

我们将其修改为任意地址

1
update mysql.user set host = '%' where user = 'root';

修改用户名和密码

默认的root用户名也是潜在隐患

还是和上文一样,修改mysql库的user表的内容

假设我们用户名是默认root的情况下

将默认root用户的用户名修改为test

1
update mysql.user set user = 'test' where user = 'root';

将test用户的密码修改为test

1
update mysql.user set authentication_string=password('test') where user='test';

本个人博客提供的内容仅用于个人学习,不保证内容的正确性。通过使用本站内容随之而来的风险与本站无关!