我们在 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.html 和 http://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/