mongodb3.0配置权限漏洞修复方案
阿里云中的mongodb配置漏洞
在阿里云看到的mongodb配置漏洞其中的手动解决方案已经不适用于目前的3.x版本的mongodb.于是这边找了一下资料写一个简单的教程
原因
mongodb之所以会产生的原因还是在于平时我们启动mongodb都是直接mongod –dbpath启动的. 这种启动方式是没有用户名和密码验证的.所以会导致某些用户可以不经过授权直接访问数据库内容.解决方案也很简单 加上-auth即可
mongodb3.0添加auth用户
参考官方案例 和推酷案例 的添加用户先添加一个用户.因为我们这边只想单纯的添加一个root用户并且他拥有管理所有库的权限权力所以我们可以这样
mongo
use admin;
db.createUser({
user:"root",
pwd:"rootpassword",
roles:[{role:"root",db:"admin"}]
})
这样就创建了一个用户名为密码为的用户.接下来我们就检查用户是否创建成功和重启下mongodb服务
show users //如果创建成功这条语句会看到新创建的用户
db.shutdownServer() //重启服务器
开启auth启动mongodb
mongod -auth --dbpath=xxx
输入用户账号密码来使用数据库
因为我们开启了auth所以我们show dbs 等这些指令都需要认证使用.
mongo
db.auth('root','rootpassword');
仅需一条就ok 接下来就愉快的使用mongodb吧
如何修改auth的账号密码
更新用户文档 注意当你更新的时候请重新填写roles
mongo
use admin
db.auth('root','rootpassword');
db.updateUser("root",{
roles:[{role:"root",db:"admin"}],
pwd:"rootNEWPW"
})
添加新用户管理其他数据库
use soulChat;
db.createUser(
{
user:"user",
pwd:"pwd",
roles:[{role:"userAdmin",db:"soulChat"},{'role':"readWrite",db:'soulChat'}]
}
参考代码
// creat database user
db.createUser(
{
user: "user1",
pwd: "user1",
roles: [ { role: "readWrite", db: "yapi" } ]
}
)
db.auth('user1','user1')
// update user role function1
db.updateUser("user1",{
roles:[{role:"root",db:"admin"},"root","readWriteAnyDatabase"],
pwd:"user1"
})
// update user role function2
db.grantRolesToUser(
"user1",
[{role:"readWrite", db:"yapi"}]
)