Mongodb 添加安全设置
Minbin Jiang Lv4

2016-12-26
在digitalocen上部署了mongodb,为了测试方便,对mongodb全部采用默认设置,处于裸奔状态。让人意想不到的是,居然被黑了。所有数据被删除,且让交0.15比特币的赎金。从网上查了查,很多人遇到同样问题。

基础的安全加固,就是对mongodb设置安全认证。将步骤记录如下:

环境:

OS:OSX EI Captain
mongodb:v3.2.8

步骤

  1. 以非认证模式启动服务

    ./mongod —dbpath db
    不需要任何用户名和密码即可操作mongodb

  2. 添加角色用户
    use admin
    db.createUser( { user: “admin”,
    pwd: “changeMe”,
    roles:  { role: “clusterAdmin”, db: “nodded” }, ]( { role: “readAnyDatabase”, db: “nodedb” },
    “readWrite”] },
    { w: “majority” , wtimeout: 5000 } )
    \这里在admin 数据库中 创建一个admin 的用户,其有clusterAdmin,readAnyDatabase和readWrite的角色。

mongodb有一些列build-in的role。

  1. 以认证模式启动服务

    ./mongod —dbpath db —auth

此时再操作数据库需要,根据操作需要提供相对应的权限。

  1. shell中操作

在shell中权限认证,有两种方式:

  • 在连接数据时提供认证
    格式如下:

    ./mongo 数据库名称 -u 用户名 -p 密码
    可以-p后面填写密码,但是会prompt 让输入密码

  • 在使用数据是提供该库认证
    命令行如下:

    use noddb
    db.auth(“用户名“,”密码“)
    认证成功,返回1,失败返回0