记录一次Mongodb被勒索的经历

头一天还和朋友聊起来,说他们的mongodb因为开了公网端口,导致数据库被人盯上了,然后扬言要付 0.5个比特币才能使用,好在就是一些日志数据,没涉及到重要数据,因此

关闭公网端口、设置密码、加上ip白名单就解决了。看图:

然后,到了今天,需要做API接口,然后就看了一眼mongodb,咦?我的集合呢,怎么就只剩下了一个README的集合。因为之前发生过一次数据被清空的清空,当时以为是自己测试完以后随手清空的,也就没有在意,但是结合昨天朋友说的事情,才意识到,有可能是真的遇到勒索了,然后打开README:

我的乖乖,真的是中招了,但是我一点也不慌,甚至还有点想笑,第一时间甚至想着有没有什么反制措施,因为就是一些测试数据,无敏感信息,也非生产数据。但是朋友说他找过,什么日志,什么蛛丝马迹肯定是被处理过的,无迹可寻,于是我就开始了逗闷子:


不对,是开始了讨论如何避免这种情况的出现。
勒索原文:
All your data is a backed up. You must pay 0.005 BTC to 14T6SPytjWGqSuZyac4PvajVUx9L2BV9FC 48 hours for recover it. After 48 hours expiration we will leaked and exposed all your data. In case of refusal to pay, we will contact the General Data Protection Regulation, GDPR and notify them that you store user data in an open form and is not safe. Under the rules of the law, you face a heavy fine or arrest and your base dump will be dropped from our server! You can buy bitcoin here, does not take much time to buy XXX.com with this guide XXX.com/guides/how-to-buy-bitcoins After paying write to me in the mail with your DB IP: XXX@tutanota.com

译文:
您的所有数据都已备份。 您必须在48小时内支付0.005 BTC到14T6SPytjWGqSuZyac4PvajVUx9L2BV9FC才能恢复它。 到期48小时后,我们将泄漏并公开您的所有数据。 如果拒绝付款,我们将与GDPR通用数据保护条例联系,并通知他们您以开放形式存储用户数据并且不安全。 根据法律规定,您将面临重罚或逮捕,您的基本转储将从我们的服务器上删除! 您可以在这里购买比特币,无需花费大量时间即可通过本指南购买XXX.com XXX/guides/how-to-buy-bitcoins 付款后,您便会在邮件中写信给我 DB IP:XXX@tutanota.com

看完原文,我的第一个感受就是:我实在也不是谦虚,我一个写代码的怎么就被勒索了呢,后来朋友跟我说,勒索者已经决定了,48小时内由你来支付这0.05个比特币,我说,让勒索者滚蛋吧,朋友说没事,解决这个问题无非就是三个代。。不对,三个步骤就行:
1. 关闭公网端口
很多朋友为了方便管理或者使用Mongodb管理工具管理数据,会把Mongodb的BindIp从127.0.0.1改为0.0.0.0,这个给了很多别有用心之人连接的机会,加上Mongodb本身默认是没有密码的,所以这就相当于把自己家大门打开,并且门口大大地写着:“欢迎于谦老师来..”,不对,是“我家没有人,欢迎参观”。
因此把门关上,能阻挡到绝大部分的别有用心之人。
2. 设置密码
设置密码就更好理解了,加了锁,没有钥匙你就无法进入我家,Redis同理也是如此,以前见到过Redis被黑,被人拿来挖矿的。具体的步骤可以参考:
mongoDB Linux 认证配置、重置密码、远程登录配置详解
3. ip白名单
MongoDB 3.6 Authentication IP Restrictions

总结

安全问题需要大家都重视起来,假如Mongodb里存的是很多重要数据,敏感信息,这个时候就会很难受,而且就算支付了数据赎金,也不一定能拿回想要的数据。因此,除了上述的操作,还需要规范代码、做好数据备份,容灾备份等等操作,平时看起来“繁琐”的操作,往往会在关键的时候拯救我们。

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 5

是我没看懂?解决了之后又说第二天只剩下README?然后呢?

2年前 评论
她来听我的演唱会 (楼主) 2年前

一般情况下,线上环境开发没有访问权限,都是专职的DBA管理

2年前 评论

——+1被黑,裂开了

2年前 评论

redis开放0.0.0.0被种过挖矿病毒 :neutral_face:

2年前 评论
天上白玉京

:relaxed: 还好我的密码多的 我都快记不住了

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!