腾讯云的服务器
大概在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年半的问题,其实 最终也没那么难,解决之前感觉很神秘,黑客很厉害。研究明白过后也就那样,各种高大上的技术其实 都离不开 我们基础的 知识
欢迎关注我的微信公众号 前端的神奇小屋