谈到MongoDB,想必大家都不陌生,这是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
它是介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的,因此它得以快速发展。
但伴随快速发展,MongoDB的安全问题也慢慢凸显,其中最有名的就是近些年的“MongoDB赎金事件”,简单概括就是黑客侵入数据库,删除原始数据,只留下一个邮箱地址,让你将指定额度的比特币汇入这个邮箱,就会将你的数据复原。
可是真是这样吗?真的能复原吗?鉴于前段时间比特币的突然巨幅涨价,比特币病毒开始流行,我觉得这是一个测试的机会。于是我将一个存有测试数据集的 mongo 数据库裸奔在公网上,等待黑客攻击。在大概半个月后,数据库果然被黑客攻击。包括 admin 在内的所有数据库全部被删除,并留下了一个名为CONTACT ME的数据库,里面的具体内容如下:
当然我是没可能给他汇什么比特币了,而且这种大范围的攻击,真的会有什么备份吗?带着疑问,我查看了mongodb的操作日志,然后就发现如下结果(打阴影部分为目标数据库名):
根本没有什么备份!就很很粗暴的drop掉了!因此,经过实践告诉大家万一发生这种状况,千万别犯傻汇款!
可是mongo作为一个分布式数据库的“世界名牌”,他真的这么不堪一击吗?它的安全性到底如何?
官方回答是:
- 被攻击的MongoDB数据库都是没有按照安全文档正确配置的;
- MongoDB新版本提供多个级别的安全性,用户只要升级就可不受攻击;
- 如果你已经被攻击了,欢迎你创建漏洞报告,方便我们完善漏洞。
简单概括为:
“不是mongo不靠谱,而是你呀不会用!”
因为被盗数据库基本都有以下特点:
- 裸奔公网!门户大开!我个人认为这是最大原因;
- 数据库本身没设密码,mongodb不同于mysql,它的安装使用太简单,下包 -> 解压 -> 运行!导致很多人数据库压根没密码;
- 服务器本身没什么安全防范措施,黑客很简单的就能侵入服务器,盗取数据库;
因此,如果项目使用的是mongo数据库(不考虑分片),那么在数据库部署时,一定要多花心思,多多查阅资料!如果这一步没踏稳,后面几本白搭。这里找一篇部署的相关文章,大家可以学习一下:
最重要的是:存放数据库的服务器一定要从公网上下来!(此处重复三次以显示重要性)不然就好像一个花枝招展的大美女在流氓丛中走来走去,这是逼人犯罪!!
全文完!