mongodb3.0配置权限漏洞修复方案

阿里云中的mongodb配置漏洞

在阿里云看到的mongodb配置漏洞其中的手动解决方案已经不适用于目前的3.x版本的mongodb.于是这边找了一下资料写一个简单的教程

原因

mongodb之所以会产生的原因还是在于平时我们启动mongodb都是直接mongod –dbpath启动的. 这种启动方式是没有用户名和密码验证的.所以会导致某些用户可以不经过授权直接访问数据库内容.解决方案也很简单 加上-auth即可

mongodb3.0添加auth用户

参考官方案例推酷案例的添加用户先添加一个用户.
因为我们这边只想单纯的添加一个root用户并且他拥有管理所有库的权限权力所以我们可以这样

1
2
3
4
5
6
7
mongo
use admin;
db.createUser({
user:"root",
pwd:"rootpassword",
roles:[{role:"root",db:"admin"}]
})

这样就创建了一个用户名为root密码为rootpassword的用户.
接下来我们就检查用户是否创建成功和重启下mongodb服务

1
2
show users //如果创建成功这条语句会看到新创建的用户
db.shutdownServer() //重启服务器

开启auth启动mongodb

1
mongod -auth --dbpath=xxx

输入用户账号密码来使用数据库

因为我们开启了auth所以我们show dbs 等这些指令都需要认证使用.

1
2
3
mongo
db.auth('root','rootpassword');

仅需一条就ok 接下来就愉快的使用mongodb吧

如何修改auth的账号密码

更新用户文档
注意当你更新的时候请重新填写roles

1
2
3
4
5
6
7
mongo
use admin
db.auth('root','rootpassword');
db.updateUser("root",{
roles:[{role:"root",db:"admin"}],
pwd:"rootNEWPW"
})

添加新用户管理其他数据库

1
2
3
4
5
6
7
use soulChat;
db.createUser(
{
user:"user",
pwd:"pwd",
roles:[{role:"userAdmin",db:"soulChat"},{'role':"readWrite",db:'soulChat'}]
}