数据库被黑2年半后,我终于找到了解决办法

198 阅读3分钟

腾讯云的服务器

大概在3年前,阿里云的服务器到期了,就薅了个 腾讯云的羊毛,买了个腾讯云的轻量服务器,3年新人价,然后再将博客等一堆网站迁移过来

被黑了!

迁移后,用了一段时间发现,咦我的数据库怎么没数据了,不慌,再重新搞点数据来(方法省略。。此处不能说)。

过了一段时间,咦,我的数据怎么又没了,再重新搞点数据

最终N次后,我看看到底怎么回事

发现我原本的数据库被清空了,然后 又多了个库,上面只有1条数据

纯英文的,翻译过来大概是:

你的数据已经被清空,如果用户的数据泄露,会有法律问题,想恢复数据,请想xxxxx地址 发 btc

用脚想也知道 我的数据库被黑了!

和黑客斗智斗勇

接下来的一段时间,我想了各种办法,包括 重装服务器系统、修改 数据库账号密码,怀疑是 gitee泄露了我的 密码,甚至怀疑是 X云 的内鬼

每次 我重新 将数据 恢复过来,过一段时间 又没了,不得不感叹黑客的攻击手段厉害

我把我的服务器设置了,定时 恢复数据,甚至 不够,一天要搞好几次

就这样 大概持续了 1坤的时间吧

发现原因

今天腾讯云又给我发了消息,说我的服务器又安全漏洞,往常我都不理的,心想又是给我推销 安全套餐,我这一台小机器,哪用得到那么高端的配置

随便进去点了点,突然发现一条

咦 好像 有点意思 ,进去看看

说的好像有点道理,我的服务器为了在家里也能方便访问,没有限制ip,如果没开启 用户密码认证的话,就直接可以刷数据了

验证

虽然腾讯云这样说了,但是我还是不信邪,连接数据库怎么还能不要用户密码呢,这是基本的安全手段吧。

为了以防万一,我还是 想亲自试一下

注释掉用户名和密码,试下能不能访问

妈耶,还真的可以,原来是没加 身份鉴权认证

大概率就是 黑客拿着端口扫描工具 对着我的公网ip扫,mongo数据库默认是没有鉴权的,就容易中招了

更改配置

接下里就是 改数据库了,因为是 3年前安装的服务器,相关知识都抛到 九天了,只能再捡起来 重新搞下

第一步、先把 原来的 mongo进程杀了

lsof -i:27017

查到pid 然后kill 它

第二步、重启mongo设置账户

a. 前台启动

mongo

b. 新开个终端 , 创建个 管理员账号

db.createUser(

{

user: "adminUserXX",

pwd: "adminPassXXX",

roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]

}

)

c. 创建个 普通账号,用新库 叫 comment

db.use(comment)

db.createUser( { user: "username", pwd: "password", roles: [ { role: "readWrite", db: "comment" }] })

d. 重新以后台模式启动mongo

mongod --bind_ip=0.0.0.0 --auth --fork --syslog

bind_ip是绑定ip端口

auth是开启身份认证

--fork是以后台模式启动

--syslog是日志地址为系统默认,fork模式下必传

e. 再试下

本地将用户密码注释后,就连不上,所以我们成功了

总结

这个困扰了我2年半的问题,其实 最终也没那么难,解决之前感觉很神秘,黑客很厉害。研究明白过后也就那样,各种高大上的技术其实 都离不开 我们基础的 知识

欢迎关注我的微信公众号 前端的神奇小屋