经过
2020-11-23 早上十点左右,和往常一样打开 Navicat 连接数据库。打开一脸懵逼,库里面只有一张 Waring 表。表内容如下:
哦豁~ 数据库被黑了。还好是刚建的测试服务器,没多少数据。先看看 0.0175 比特币现在值多少软妹币。👇
换算成人民币是 2196 元,如果是生产环境上估计就想着要交钱了。这里要切记,一定不要付款!老黑们指不定没有给你备份。
追查
看看老黑们有没有留下什么痕迹。
下面是数据库连接日志👇
通过查看日记发现,2020-11-22T18:39:43.674987Z这个时间有一个来源是波兰的 ip 多次尝试使用 root 账户登录。
日志上面记录的时间是世界协调时间,转换成本地时间就是2020-11-23 02:39:43,Waring 表插入的时间是2020-11-23 02:40:43,这就对得上了。说明是 31.179.142.158 这个 ip 在 23 号凌晨 2 点 40 分通过暴力破解登录的。
然而,,知道了也没辙并不能找到人。🤨
由于是测试服务器,数据库都是刚建的也没有备份,重建的话也是麻烦,所以尝试有没有方法补救一下,最好是能恢复回来。
恢复数据库
问了一下社区的朋友,如果数据库有开启 binlog 那就还有恢复的可能。
用宝塔建的数据库默认都会开启 binlog 。
进入服务器内找到了 bin 文件。👇
由于是二进制文件,我们需要转成sql文件再导出来看一下。
$ /www/server/mysql/bin/mysqlbinlog /www/server/data/mysql-bin.000005 > /www/1.sql
下载到本地,用 vs 打开看一下内容。
直接滑到底,发现老黑是在 at 4126964 这里开始进行操作的。直接就 DROP 了,果然没有职业操守啊🤙
下面通过 binlog 恢复一下数据库。
# --start-position="219" 第一次操作库的偏移量
# --stop-position="4124564" 找一个卸库前的偏移量
/www/server/mysql/bin/mysqlbinlog --no-defaults /www/server/data/mysql-bin.000005 --start-position="4" --stop-position="4124564" | /www/server/mysql/bin/mysql -u root -p
回车->输入密码->回车
检查数据库发现表都还原回来了👏🏻
同理,如果是自己不小心删库的同学,也可以尝试用同样的方法恢复。
安全设置
这次应该是被脚本扫到的,吃一堑长一智,赶紧把安全搞一下。
1: 修改 root 登录密码
2: 关掉外网访问改用 ssh
3: 禁掉 phpadmin 公共访问地址
这台机子测试用,如果是生产环境还需更严格的防护。如: 秘钥对登录,跳板机,vpn...
总结
被黑之后搞清楚是哪里被攻击了,是否可以补救?
不要相信坏人说的话
数据库一定不要为了方便 root 裸奔在外网,怎么也得搞个 ssh 。
突然想起之前红衣教主周鸿祎在公开场合说过一个事情,大概是下面这个意思:欧洲一个黑客组织对外宣称要在三年之内,通过黑客技术达到财务自由,结果才一年出头,这个黑客组织就宣布已经赚够钱,不干了。🤷 以前不信,现在我信了。
|