0x00 MongoDB权限介绍

1.MongoDB安装时不添加任何参数,默认是没有权限验证的,登录的用户可以对数据库任意操作而且可以远程访问数据库,需以--auth参数启动。

2.在刚安装完毕的时候MongoDB都默认有一个admin数据库,此时admin数据库是空的,没有记录权限相关的信息。当admin.system.users一个用户都没有时,即使mongod启动时添加了--auth参数,如果没有在admin数据库中添加用户,此时不进行任何认证还是可以做任何操作(不管是否是以--auth 参数启动),直到在admin.system.users中添加了一个用户。

3.MongoDB的访问分为连接和权限验证,即使以--auth参数启动还是可以不使用用户名连接数据库,但是不会有任何的权限进行任何操作

4.admin数据库中的用户名可以管理所有数据库,其他数据库中的用户只能管理其所在的数据库。

5.在2.4之前版本中,用户的权限分为只读和拥有所有权限;2.4版本的权限管理主要分为:数据库的操作权限、数据库用户的管理权限、集群的管理权限,建议由超级用户在admin数据库中管理这些用户。不过依然兼容2.4版本之前的用户管理方法。

0x01 MongoDB中用户的角色说明

1. read角色

数据库的只读权限,包括:

aggregate,checkShardingIndex,cloneCollectionAsCapped,collStats,count,dataSize,dbHash,dbStats,distinct,filemd5,mapReduce (inline output only.),text (beta feature.)geoNear,geoSearch,geoWalk,group

2. readWrite角色

数据库的读写权限,包括:

read角色的所有权限

cloneCollection (as the target database.),convertToCapped,create (and to create collections implicitly.),renameCollection (within the same database.)findAndModify,mapReduce (output to a collection.)

drop(),dropIndexes,emptycapped,ensureIndex()

3. dbAdmin角色

数据库的管理权限,包括:

clean,collMod,collStats,compact,convertToCappe

create,db.createCollection(),dbStats,drop(),dropIndexes

ensureIndex(),indexStats,profile,reIndex

renameCollection (within a single database.),validate

4. userAdmin角色

数据库的用户管理权限

5. clusterAdmin角色

集群管理权限(副本集、分片、主从等相关管理),包括:

addShard,closeAllDatabases,connPoolStats,connPoolSync,_cpuProfilerStart_cpuProfilerStop,cursorInfo,diagLogging,dropDatabase

shardingState,shutdown,splitChunk,splitVector,split,top,touchresync

serverStatus,setParameter,setShardVersion,shardCollection

replSetMaintenance,replSetReconfig,replSetStepDown,replSetSyncFrom

repairDatabase,replSetFreeze,replSetGetStatus,replSetInitiate

logRotate,moveChunk,movePrimary,netstat,removeShard,unsetSharding

hostInfo,db.currentOp(),db.killOp(),listDatabases,listShardsgetCmdLineOpts,getLog,getParameter,getShardMap,getShardVersion

enableSharding,flushRouterConfig,fsync,db.fsyncUnlock()

6. readAnyDatabase角色

任何数据库的只读权限(和read相似)

7. readWriteAnyDatabase角色

任何数据库的读写权限(和readWrite相似)

8. userAdminAnyDatabase角色

任何数据库用户的管理权限(和userAdmin相似)

9. dbAdminAnyDatabase角色

任何数据库的管理权限(dbAdmin相似)

0x02 MongoDB安装注意事项

1. 安装的时候需要加--auth

加了--auth之后MongoDB才需要验证

2. 需要加--nohttpinterface

不加会有一个28017的端口监听,可以通过网页管理mongodb,不需要请去掉

3. 可以加--bind_ip

加之后可以限制访问的ip

4. 可以加--port

加了之后可以重新制定端口,默认为27017

5. 安装完之后需立即在admin数据库中添加一个用户

只有在admin数据库中添加一个用户后才能使认证生效

注:安装的过程其实就是添加1个服务,指定启动时候的参数。

0x03 用户授权

1. 2.4之前版本的用户管理方式

1.1、进入admin创建一个管理账号

use admin

db.addUser("test","test")

1.2、进入需要使用的数据库中创建一个程序使用用户

use test

db.addUser("test","test")默认拥有读写权限

db.addUser("test","test",True)拥有读取权限

2. 2.4版本的用户管理,也可使用之前版本的方式

2.1、进入admin创建一个管理账号

use admin

db.addUser("test","test")

2.2、进入admin给使用的数据库test创建一个对数据库及日志拥有读写权限的账户

use admin

db.addUser({

"user": "test",

"pwd": "test",

"roles": [ ],

"otherDBRoles": {

"test": [

"readWrite"

],

"test_log": [

"readWrite"

]

}

})

0x04 安全配置方案

1. 安装的时候加--auth,并立即在admin数据库创建一个用户

默认情况下MongoDB是无需验证的,所以这是至关重要的一步

2. 可以考虑安装的时候修改端口和指定访问ip

具体根据实际情况来设定,也可以直接在服务器防火墙上做

3. 安装的时候建议加上--nohttpinterface取消默认的一个网页管理方式

默认的web管理一般不会用,且很多人不知道,最好关闭

4. 管理用户处理

因需要在admin中建立一个管理账户用于管理,最好是设置强密码,但是不要给其他程序使用

5. MongoDB服务运行账户

windows下可以使用network service 或者新建一个用户,使用默认的USERS组,然后添加给予数据库文件及日志存储目录的写权限,并建议取消对cmd等程序的执行权限。

linux下新建一个账户,给予程序的执行权限和数据库文件及日志目录的读写权限,并建议取消对sh等程序的执行权限。

6. 控制好网站或者其他程序使用的连接用户权限

网站或者其他程序使用的用户只给予对应库的权限,不要使用admin数据库中的管理账户。

0x05 常用命令

1. 安装

mongod --dbpath d:\mongodb\data --logpath d:\mongodb\log\mongodb.log ----nohttpinterface --auth --install

2. 添加用户

use admin

db.addUser("test","test")

3. 显示所有数据库

show dbs

4. 使用某个数据库

use test

5. 连接数据库

mongo test -uroot -p123456

6. 添加用户认证

db.auth("username","password")

7. 查看用户

db.system.users.find()

就写几个基本的,其他的网上很多,或者用工具连上去之后操作。

0x06 管理工具

1. MongoVUE

客户端形式的管理工具

2. rockmongo

基于php的web管理

不足之处求大牛指正!

ip地址配置 mongodb_MongoDB安全配置详解相关推荐

  1. 有效ip地址_计算机等级考试详解:用IP地址及域名访问web网站的正确说法

    计算机等级考试详解:用IP地址及域名访问web网站的正确说法! 本经验由宗龙龙原创,全文共1000多字,阅读需要14分钟,如果文中存在错误,还请大家多多指点,我会积极改进的! 11.以下关于访问Web ...

  2. IP地址使用,分类等详解

    目录 一.IP地址和MAC地址 二.IP地址的分类 三.保留的特殊IP地址 四.公网和私网IP地址 一.IP地址和MAC地址 1.MAC地址 MAC(Media Access Control,介质访问 ...

  3. IP地址和子网的划分详解

    IP地址详解 一.IP地址和MAC地址 二.IP地址的分类 三.保留的特殊IP地址 四.公网和私网IP地址 五.子网划分 六.子网划分总结和技巧 一.IP地址和MAC地址 1.MAC地址 MAC(Me ...

  4. IP地址与子网划分(详解)

    文章目录 1 IP地址 1.1 IP地址含义 1.2 IP地址的构成 1.3 IP地址的分类 2 子网划分 2.1 子网掩码 2.2 根据IP地址和掩码计算 2.3 子网划分的原理与步骤 2.4 子网 ...

  5. IP地址和子网划分例题详解

    1.为什么要划分子网? IPv4地址如果只使用有类(A.B.C类)来划分,会造成大量的浪费或者不够用,为了解决这个问题,可以在有类网络的基础上,通过对IP地址的主机号进行再划分,把一部分划入网络号,就 ...

  6. linux单个IP地址绑定多个域名详解

    目录 1.指定IP地址与域名之间的对应关系的配置 2.使用ping命令检查域名解析是否正确 3. 创建存放不同网站的根目录,并写入网站首页内容 4.修改主配置文件 5.重启httpd服务 6.修改自定 ...

  7. IP地址子网划分方法思路详解(附例题)

    如图中题目为例划分网段: R1~R4每个路由器上有2个环回,可将这2个环回看为1个即为4个 一根线上只需要2个地址,为了不浪费地址可将所有的骨干链路先看为1个 也就是说将192.168.1.0/24划 ...

  8. replica文件服务器,MongoDB_mongodb replica set 配置高性能多服务器详解,mongodb的多服务器配置,以前写 - phpStudy...

    mongodb replica set 配置高性能多服务器详解 mongodb的多服务器配置,以前写过一篇文章,是master-slave模式的,请参考:详解mongodb 主从配置.master-s ...

  9. 虚拟机2012搭建DNS服务器,Windows Server2012 安装配置DNS服务器方法详解

    Windows Server2012 安装配置DNS服务器方法详解 在云服务器 Windows Server2012 上安装配置DNS服务器方法,安装与配置非常简单,在这里写个完整教程方便大家查询 一 ...

  10. Win7系统Visual Studio 2013配置OpenCV3.1图文详解

    Win7系统Visual Studio 2013配置OpenCV3.1图文详解 OpenCV3.1对硬件加速和移动开发的支持相对于老版本都有了较大改进,支持新的开发工具,更易于扩展,配置方式也比以前简 ...

最新文章

  1. 利用vue进行页面滚动监听,上拉刷新
  2. html converttopdf无法换行_超文本标记语言的段落与换行显示!
  3. Odoo (OpenERP/TinyERP)-10.0 (Debian 8)
  4. html注释的爱情故事,爱情故事”为你的婚礼贴上专属标签
  5. Kettle之数据抽取、转换、装载
  6. 作者:张岩,男,北京大学教授、博士生导师。
  7. Spring Cloud 服务消费者 rest+ribbon (二)
  8. HDU 3468 HDOJ 3468 A Simple Problem with Integers ACM 3468 IN HDU
  9. python爬取有妖气漫画
  10. Halcon教程八:简单的语法介绍
  11. Groovy 入门教程
  12. tomcat本地运行web项目图片显示不出来
  13. mysql bad handshark_故障分析 | Bad handshake,升级 5.7.28 引起的“血案”
  14. 【Windows系统】产品ID、设备ID等系统参数
  15. 基本算法的设计与实现-史莱姆通话
  16. YYLabel和YYTextView的使用
  17. js教程实践(JS基础)
  18. 在ubuntu下烧写映像文件到SD卡--基于三星210开发板
  19. linux工作中软件运行安装常见问题
  20. 新一代态势感知系统发布——北望

热门文章

  1. C++基础01-C++对c的增强
  2. opencv之namedWindow,imshow出现两个窗口
  3. Pytest Hooks方法之pytest_runtest_makereport获取测试用例结果
  4. Java-ArrayList使用技巧---从第一个List中去除所有第二个List中与之重复的元素
  5. cloudera manager的7180 web界面访问不了的解决办法(图文详解)
  6. [转]ClassPath是什么
  7. 好友消息和群消息区别
  8. iOS基础 - 控制器
  9. Microsoft.Net框架程序设计学习笔记(15):事件之原理分析
  10. YY一下IT业的未来