Mongodb安全性初探

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介:  http://www.phpweblog.net/GaRY/archive/2011/08/18/Mongodb_secuirty_anaylze.htmlAuthor: wofeiwoDate: 2011-08-18Mongodb,这么火的玩意其实早就想好好研究一下了。
 
Author: wofeiwo<wofeiwo#80sec.com>
Date: 2011-08-18

Mongodb,这么火的玩意其实早就想好好研究一下了。之前一直没空仔细学学新的东西,总是感觉精力不足。这次趁着买了一本书,就零零散散地在VPS上搭建、测试、看实现代码。感觉也蛮有意思的一个数据库。虽然感觉它非常简单,尤其是看代码的时候更是感觉如此。但这不也是另一个KISS的典范么,还是简单但是实用的东西最能流行。
既然都看了其实现,也不能不产出点什么。正好多年没更新博文,就简单分析一下mongodb的安全性,凑个数先。

默认配置的安全情况


在默认情况下,mongod是监听在0.0.0.0之上的。而任何客户端都可以直接连接27017,且没有认证。好处是,开发人员或dba可以即时上手,不用担心被一堆配置弄的心烦意乱。坏处是,显而易见,如果你直接在公网服务器上如此搭建mongodb,那么所有人都可以直接访问并修改你的数据库数据了。
默认情况下,mongod也是没有管理员账户的。因此除非你在admin数据库中使用db.addUser()命令添加了管理员帐号,且使用--auth参数启动mongod,否则在数据库中任何人都可以无需认证执行所有命令。包括delete和shutdown。
此外,mongod还会默认监听28017端口,同样是绑定所有ip。这是 一个mongod自带的web监控界面。从中可以获取到数据库当前连接、log、状态、运行系统等信息。如果你开启了--rest参数,甚至可以直接通过web界面查询数据,执行mongod命令。
我试着花了一个晚上扫描了国内一个B段,国外一个B段。结果是国外开了78个mongodb,而国内有60台。其中我随意挑选了10台尝试连接,而只有一台机器加了管理员账户做了认证,其他则全都是不设防的城市。可见其问题还是比较严重的。
其实Mongodb本身有非常 详细的安全配置准则,显然他也是想到了,然而他是将安全的任务推给用户去解决,这本身的策略就是偏向易用性的,对于安全性,则得靠边站了。

用户信息保存及认证过程


类似MySQL将系统用户信息保存在mysql.user表。mongodb也将系统用户的username、pwd保存在admin.system.users集合中。其中 pwd = md5(username + ":mongo:" + real_password)。这本身并没有什么问题。username和:mongo:相当于对原密码加了一个salt值,即使攻击者获取了数据库中保存的md5 hash,也没法简单的从彩虹表中查出原始密码。
我们再来看看mongodb对客户端的认证交互是如何实现的。mongo client和server交互都是基于明文的,因此很容易被网络嗅探等方式抓取。这里我们使用数据库自带的 mongosniff,可以直接dump出客户端和服务端的所有交互数据包:

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
存储 NoSQL 安全
【MongoDB】MongoDB可查询加密简介
MongoDB 6.0引入了一个预览功能,它实现了一个近乎神奇的功能,即允许将加密数据用作搜索目标,而无需将密钥传输到数据库。
|
NoSQL 安全 Java
MongoDB:9-MongoDB的安全和认证
MongoDB:9-MongoDB的安全和认证
195 0
|
2月前
|
存储 NoSQL MongoDB
day03—MongoDB基础
day03—MongoDB基础
47 0
|
3月前
|
NoSQL 安全 MongoDB
|
3月前
|
存储 NoSQL MongoDB
MongoDB的优势是什么
MongoDB的优势是什么
53 5
|
存储 NoSQL 安全
|
存储 SQL JSON
MongoDB分布式存储数据库系列(一)------简介
MongoDB 是一个基于分布式文件存储的数据库。由 C++语言编写。在为 WEB 应用提供可扩展的高性能数据存储解决方案。
174 0
MongoDB分布式存储数据库系列(一)------简介
|
存储 SQL NoSQL
mongoDB-基础
不能言而无信 今天就先把这个MongoDB 补了
179 0
mongoDB-基础
|
NoSQL 安全 关系型数据库
|
存储 NoSQL 数据库
MongoDB基础介绍安装与使用
MongoDB已经日益成为流程和主流的数据库了,原因有两个:第一个就是技术优势,第二就是便利性,个人使用部署都很方便。 MongoDB的优缺点,以及使用场景 优点: 面向文档存储(自由读高,不需要定义表的结构,即存即用) 更高的写入负载,插入,更改快速 高效存储二进制大对象(照片、视频等) 复制和故障切换支持 Auto-Sharding自动分片支持云级扩展性 缺点 不支持事物 占用空间大 使用场景 所以MongoDB更擅长处理大数量的自由度高切不重要的表单。
1281 0