Fork me on GitHub

MongoDB安全策略

MongoDB安装启动详解

一,修改启动端口

mongo的默认端口为27017 如果启用的是27017端口并且在公网上很容易被人攻击,所以第一点我们要修改端口

sudo ./mongod --dbpath=/data/db --fork --port 29089 --logpath=/data/logs

我们现在启动的是29089端口

启动shell

$ ./mongo

image

报错:

Failed to connect to 127.0.0.1:27017, reason: errno:61 Connection refused

这是是因为我们修改了端口,而默认连接的是27017的端口,所以我们进入shell时也要指定启动服务似的端口

$ ./mongo --port 29089

这样就可以进入了

image

二,用户认证

mongodb默认是没有管理账户的,需要开发人员添加管理员账户,在启动mongo服务时添加身份认证才可以进入数据库,所以我们需要做两点:

  • 添加管理员
  • 启动服务时时添加 auth 指令

mogodb 默认有两个数据库:
在我们初次安装并启动mongo服务后,进入shell管理可以看到已存在两个数据库,在执行show dbs时 会显示以下两个数据库

  • admin
  • local

我们要在admin里添加用户以便在进入数据库时认证,我是在mac下操作,以下都是mac下的命令,下面演示整个用户添加和认证的过程

1.检查mongo服务是否开启

 $ ps -ef | grep mongo
 

image

未找到mongo启动进程

2.启动mongo服务

$ cd /usr/local/bin
$ ./mongod --dbpath=/data/db --fork --port 29089 --logpath=/data/logs

image

成功启动mongo

3.进入shell管理后台

$ cd /usr/local/bin
$ ./mongo --port 29089

image

4.查看当前所有数据库

$ show dbs

image

除了admin,local数据库其他都是我业务上使用后建立的数据库,可以看到我们直接就访问到数据库并且可以操作

5.在admin库里添加管理员用户

$ use admin
$ db.getUsers();

image

使用admin数据库并检查是否存在用户

6 创建用户

$ db.createUser({user:"leinov",pwd:"123456",roles:["root"]})

db.getUsers();

image

db.createUser()创建一个用户,并分配角色,我们创建里一个超级管理员,这个角色可以对本机mongo实例内的所有数据库做有效的读写操作,关于db.createUser()方法参考官方文档 https://docs.mongodb.com/manual/reference/method/db.auth/

7 重新启动服务并添加认证auth

$ sudo ./mongod --dbpath=/data/db --fork --port 29089  --logpath=/data/logs --auth

在启动命令后面加上auth这样在进入数据库时就会开启认证

8.重新进入shell后台

$ ./mongo--port29089
$ show dbs

image

提示没有权限查看数据库list

9.切换到admin数据库验证

$ use admin
$ db.auth({user:"leinov",pwd:"123456"})

db.auth()方法是验证用户的操作方法,返回值为0/1 1为验证成功
image

10.再次查看数据库

$ show dbs

image

完成端口修改和用户认证基本上就可以保证数据库的安全了,我自己的mongo也被黑了,网上其实还有很多裸奔的mongo数据库,所以一定要给自己的mongo修改端口添加用户认证保证安全。

image

3.0后的mongo很多方法都有变化,具体参考官方文档 https://docs.mongodb.com/

posted @ 2017-08-11 12:27  小象Frey  阅读(2923)  评论(8编辑  收藏  举报
Fork me on GitHub