💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
**​大纲** 1.[经过](http://github.crmeb.net/u/defu) 2.[追查](http://github.crmeb.net/u/defu) 3.[恢复数据库](http://github.crmeb.net/u/defu) 4.[安全设置](http://github.crmeb.net/u/defu) 5.[总结](http://github.crmeb.net/u/defu) **经过** 2020-11-23 早上十点左右,和往常一样打开 Navicat 连接[数据库](https://cloud.tencent.com/solution/database?from=10680)。打开一脸懵逼,库里面只有一张 Waring 表。表内容如下: ![](https://ask.qcloudimg.com/http-save/6625421/kqa0r8rl1c.png?imageView2/2/w/1620) 🤦‍♂️ 哦豁~ 数据库被黑了。还好是刚建的测[试服务器](https://cloud.tencent.com/product/wetest?from=10680),没多少数据。先看看 0.0175 比特币现在值多少软妹币。👇 ![](https://ask.qcloudimg.com/http-save/6625421/babjz3n0iu.png?imageView2/2/w/1620) 换算成人民币是 2196 元,如果是生产环境上估计就想着要交钱了。这里要切记,一定不要付款!老黑们指不定没有给你备份。 **追查** 看看老黑们有没有留下什么痕迹。 下面是数据库连接日志👇 ![](https://ask.qcloudimg.com/http-save/6625421/9thcrcog4l.png?imageView2/2/w/1620) 通过查看日记发现,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 分通过暴力破解登录的。 然而,,知道了也没辙并不能找到人。🤨 由于是测试[服务器](https://cloud.tencent.com/product/cvm?from=10680),数据库都是刚建的也没有备份,重建的话也是麻烦,所以尝试有没有方法补救一下,最好是能恢复回来。 **恢复数据库** 问了一下社区的朋友,如果数据库有开启 binlog 那就还有恢复的可能。 用宝塔建的数据库默认都会开启 binlog 。 进入服务器内找到了 bin 文件。👇 ![](https://ask.qcloudimg.com/http-save/6625421/d8g4kn1y1z.png?imageView2/2/w/1620) 由于是二进制文件,我们需要转成sql文件再导出来看一下。 ~~~javascript $ /www/server/mysql/bin/mysqlbinlog /www/server/data/mysql-bin.000005 > /www/1.sql ~~~ 复制 下载到本地,用 vs 打开看一下内容。 [�](https://cloud.tencent.com/product/wetest?from=10680) 直接滑到底,发现老黑是在 at 4126964 这里开始进行操作的。直接就 DROP 了,果然没有职业操守啊🤙 下面通过 binlog 恢复一下数据库。 ~~~javascript # --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 。 突然想起之前红衣教主周鸿祎在公开场合说过一个事情,大概是下面这个意思:欧洲一个黑客组织对外宣称要在三年之内,通过黑客技术达到财务自由,结果才一年出头,这个黑客组织就宣布已经赚够钱,不干了。🤷 以前不信,现在我信了。