沃梦达 / IT编程 / 网络/安全 / 正文

记一次mysql数据库被黑删库遭勒索的教训

起因是想用服务器上的一个数据库访问其他数据库的权限,就直接按照网上教程改了mysql库里的user表的权限,可能是哪里权限修改问题,也没太在意,到了第二天发现网站登录不了了。后台登录提示用户名不存在,于是到数据库中看了一下。结果

起因是想用服务器上的一个数据库访问其他数据库的权限,就直接按照网上教程改了mysql库里的user表的权限,可能是哪里权限修改问题,也没太在意,到了第二天发现网站登录不了了。后台登录提示用户名不存在,于是到数据库中看了一下。结果发现服务器上所有数据库都被清空了,黑客非常人性的在每个库中留下一个warnning表,大概意思如下:

你的以下数据库已经被删除,不过我们已经做了备份,你想要拿到这些备份,请在三天时间内向这个比特币钱包里支付xxx金额的比特币,不然我们就会永久删除这些文件,你耗子尾汁。如果有意向支付,可以联系这个比特币邮箱。

看到这里,我心里真有一万只羊驼在奔腾,给钱是不可能的,如果给你们钱不是纵容你们。幸好我的数据库定期有做备份,不然就坑死了。

我大概总结了一下,之所以被攻击,其致命原因有三点:

  • 用户名和密码太简单,我的用户名采用的默认root,密码为最简单的123456 !
  • mysql端口号采用的是默认端口3306 !
  • 权限设置所有IP均可访问 !
找到原因,解决办法如下:
修改用户名和密码
mysql -uroot -p #打开数据库
use mysql;
select host,user from user; # 查看现有用户
# 新建用户king,密码123456!用户名,和密码不要太简单,防止黑客攻击,这里只是为了演示
CREATE USER 'king'@'localhost' IDENTIFIED BY '123456';
select host,user from user; # 再次查看用户
修改访问权限
# king是远程访问用户名,123456是远程访问的密码!
# %代表所有主机都能访问,可以改成固定IP地址或者ip范围如192.168.0.0/255.255.0.0(C类网络的任何地址)
GRANT ALL PRIVILEGES ON *.* TO 'king'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;
修改mysql端口
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
# 允许远程访问,注释掉这一行
# bind-address = 127.0.0.1 
# 修改访问端口,找到port,修改端口号
port = ****
重启服务
service mysql restart
最后提醒大家,数据库要定期做备份,备份时间越短越好。另外修改数据库权限时候一定要特别注意,我就是因为太随意修改才酿成大错,以后一定要注意。

本文标题为:记一次mysql数据库被黑删库遭勒索的教训