情况是这样的,最近公司和华为进行合作,分配了一大批的鲲鹏云服务器,为了验证项目在国产服务器上的兼容性以及拿到华为的认证,于是将产品迁移到鲲鹏云上进行测试,数据库给分配了个16核32G的服务器,想想就十分给力,不过鲲鹏云是arm架构,生态比较少,各种安装都得编译,在华为小伙伴的支持下,虽然花了些时间,好在最终服务是顺利部署上去了,可喜可贺。

前几天早上同事告诉我服务登录不上去了,两个服务一个登录没反应,一个登录直接报错了,我想了想除了我其他人也不知道服务器信息啊,理论上不应该出问题啊,于是去后台查看日志,发现大量的sql异常,于是打开数据库,悲剧发生了!!!

怀着忐忑又激动的心情(没见过世面)

首先数据库表全没了,只留下一个warning表,还多了一个please_read_me_vvv的数据库

    打开warning表

复制了warning里的内容去百度翻译了下,意识到是被勒索了!!!

To recover your lost Database and avoid leaking it: Send us 0.035 Bitcoin
(BTC) to our Bitcoin address 1GkZpdfQdUQasnt12P9pSnx8sohm4NgqNQ and contact us
by Email with your Server IP or Domain name and a Proof of Payment. If you are
unsure if we have your......

好在有备份,而且服务也是刚刚部署好,还没开始测试

但问题得解决啊,打算加强密码的强度

今天偶然调试,发现服务器上的etc/my.cnf的一个配置

skip-grant-tables

跳过数据库权限验证,远程登录mysql数据库任意密码都可以访问,你说我不被黑谁被黑,果断注释掉这个配置重启mysql

仔细想了想,我一直没发现问题所在,一方面是自己一直使用SSH通道进行连接,虽然mysql服务器配置了公网IP,但是连接的时候也一直没用,另一方面就是自己没有吃过亏,没意识到会发生这种情况。

之前开放了mysql的远程连接权限给所有的IP地址,现在也关闭掉,步骤如下:

* 使用root用户登录到数据库
* use mysql 选择mysql数据库
* revoke all privileges on *.* from 'root'@'%'; 撤回权限
* delete from user where User="root" and Host="%"; 删除用户
* flush privileges;    刷新
可以开启mysql远程连接权限给指定IP或者开放给所有IP设置一个复杂度比较高的密码,如下

你想root使用root从任何主机连接到mysql服务器的话。 
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT
OPTION; 
如果你想允许用户myuser从ip为192.168.1.64的主机连接到mysql服务器,并使用root作为密码 
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.64' IDENTIFIED BY 'root'
WITH GRANT OPTION; 

输入命令:FLUSH PRIVILEGES; 

希望大家引以为戒,不要让这种悲剧再次发生,部署的公网上的服务一定要注意并加强安全性。

技术
©2019-2020 Toolsou All rights reserved,
Java分布式系统高并发解决方案小结雷军:两年前和卢伟冰喝酒到凌晨三点 钦佩其工作热情和能力python中switch_to_alert的用法el-select同时获取label和value值【Python-数据读取】读取txt文件每一行数据生成列表python获取excel的一列或者一行的数据JQ get请求 拼接 url 参数 (查询条件)npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! test_vue_0613@1.0.0 dev: 错误的解决方法keras从dataframe中读取数据并进行数据增强进行训练(分类+分割)一元线性回归与多元线性回归理论及公式推导