MongoDB 突然丢失/找不到数据

标签 mongodb digital-ocean

我们在 Digital Ocean 中的 MongoDB 数据库突然丢失了。当我运行 mongod 时,它显示:

MongoDB starting : pid=27161 port=27017 dbpath=/data/db 64-bit host=unifyhub-db
2017-01-07T17:36:06.617+0800 I CONTROL  [initandlisten] db version v3.0.11
2017-01-07T17:36:06.617+0800 I CONTROL  [initandlisten] git version: 48f8b49dc30cc2485c6c1f3db31b723258fcbf39
2017-01-07T17:36:06.617+0800 I CONTROL  [initandlisten] build info: Linux ip-10-65-215-98 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 BOOST_LIB_VERSION=1_49
2017-01-07T17:36:06.617+0800 I CONTROL  [initandlisten] allocator: tcmalloc
2017-01-07T17:36:06.617+0800 I CONTROL  [initandlisten] options: {}
2017-01-07T17:36:06.676+0800 E NETWORK  [initandlisten] listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017
2017-01-07T17:36:06.677+0800 E NETWORK  [initandlisten]   addr already in use
2017-01-07T17:36:06.677+0800 I STORAGE  [initandlisten] exception in initAndListen: 29 Data directory /data/db not found., terminating
2017-01-07T17:36:06.677+0800 I CONTROL  [initandlisten] dbexit:  rc: 100

你知道这里发生了什么吗?我们实际上什么也没做,只是发现整个应用程序无法工作,因为找不到数据库。

最佳答案

我认为你被劫持了!

根据 http://thehackernews.com/2017/01/secure-mongodb-database.htmlhttp://securityaffairs.co/wordpress/55018/cyber-crime/mongodb-hacked.html 的说法,有一名黑客针对打开的 MongoDB 数据库,并索要赎金以归还您的数据。

我遇到了和你完全相同的问题。我以为这是与 digital ocean 有关的东西,但在阅读这些帖子后,我检查了我的服务器,确认它被劫持了。

我打开了一个 mongo shell

mongo;

列出数据库

show dbs;

发现一个名为READ1的数据库,我检查了它,发现一个只有一条记录的集合,一条来自劫机者的消息

use READ1;
show collections; // found a collection called info
db.info.find()

找到这个文档:

{ "_id" : ObjectId("5877674456ae6684507ac017"), "mail" : "ha******@si*****.org", "text" : "SEND 0.1 BTC TO THIS ADDRESS ***** AND CONTACT THIS EMAIL WITH IP OF YOUR SERVER TO RECOVER YOUR DATABASE !" }

不幸的是,我有一段时间没有检查服务器,只保留了最后五个备份,所以我丢失了数据。但幸运的是,我们仍处于开发模式,我们没有敏感数据。

无论如何,我发现我的 Mongodb 版本(2.4.10 Tokumx 发行版)默认允许远程访问。我在本地计算机上尝试了以下操作,令人惊讶的是它已连接!!

mongo server-ip:27017/database-name 

最后,我执行了以下步骤来禁用远程访问

ps aux | grep mongo //found path of the configuration file (/etc/tokumx.conf)

然后按照 here 的描述,我使用 vim 将行 bind_ip = 127.0.0.1 附加到配置文件中 然后重新启动我的 tokumx 服务(在您的情况下为 mongodb)

sudo service tokumx restart

现在远程访问已禁用。

关于MongoDB 突然丢失/找不到数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41520011/

相关文章:

mongodb - 如何仅返回 mongo 对象数组中的一个字段而不删除对象的其余部分

mongodb - 项目部署时如何删除数据?

MongoDB Atlas 探查器 : What is "Num Yields"?

node.js - Redis 客户端连接到 redis 远程服务器,但无法在其上读取或写入

kubernetes - helm sentry 创建了额外的负载均衡器

digital-ocean - 地形:安装量

mongodb - 获取数组 mongodb 中的特定字段并作为数组返回

javascript - 无法访问此函数内的参数

node.js - 部署到 Digital Ocean 的 Meteor 应用程序卡在 100% CPU 和 OOM

SSH 权限被拒绝(公钥) - Laravel Forge