禁用对MongoDB的匿名访问

时间:2014-03-25 22:41:30

标签: mongodb

我已经在Windows 2012 Server上安装了MongoDB并在Windows服务上运行它。

为了防止匿名登录,我按照以下步骤启用身份验证并禁用匿名访问

Create the Administrator Credentials and then Enable Authentication

  1. 在没有mongodmongos设置的情况下启动authkeyFile个实例。
  2. 按照Create a User Administrator
  3. 中的说明创建管理员用户
  4. 使用mongodmongos设置重新启动authkeyFile个实例。
  5. 根据文档,通过运行此shell命令

      

    db.auth(<username>,<password>)

    它应该启用授权并重新启动它应禁用匿名访问的实例。

    我不确定第3步是什么意思,我停止了MongoDB服务并重新启动它。 但我仍然可以匿名登录到远程MongoDB

    如何禁用对MongoDB的匿名访问?

    更新

    执行db.serverCmdLineOpts()

    /* 0 */
    {
        "argv" : [ 
            "c:\\Program Files\\mongodb\\bin\\mongod.exe", 
            "--directoryperdb", 
            "--dbpath", 
            "c:\\mongodb\\data", 
            "--logpath", 
            "c:\\mongodb\\log\\mongodb_master.log", 
            "--logappend", 
            "--rest", 
            "--service"
        ],
        "parsed" : {
            "dbpath" : "c:\\mongodb\\data",
            "directoryperdb" : true,
            "logappend" : true,
            "logpath" : "c:\\mongodb\\log\\mongodb_master.log",
            "rest" : true,
            "service" : true
        },
        "ok" : 1
    }
    

    这意味着我没有授权密钥。如何在那里设置身份验证密钥?

4 个答案:

答案 0 :(得分:15)

要完全禁用匿名身份验证,您需要确保:

1)Add an administrative useradmin数据库。

在创建第一个管理员用户之前,默认情况下会有一个localhost bypass,允许您匿名登录并设置第一个用户。

要检查管理数据库中是否至少有一个用户,请运行:

db.getSiblingDB('admin').system.users.find()

2)启用auth启用MongoDB服务器(独立服务器)或启用keyFile(副本集)。

keyFile选项隐含auth,用于副本集节点之间的内部身份验证。

要检查正在运行的MongoDB实例的配置设置,您可以参考db.serverCmdLineOpts() shell中mongo的输出。

如果选项已从默认值更改,则它们应显示在输出的parsed部分中。也就是说,其中一个应该返回true:

db.serverCmdLineOpts().parsed.auth
db.serverCmdLineOpts().parsed.keyFile

答案 1 :(得分:4)

在2.6+版本中启用授权 - 它采用yml格式:

security:
    authorization: enabled

额外信息:

另请注意,如果您使用的是安全配置,例如密钥文件配置,

security:
    authorization: enabled

键不是必需的,这就是为什么你可能会看到没有这个标志的配置文件... 另一个说明: 在最新版本中,4.x还需要配置访问IP列表:     净:         bindIp :: ::,0.0.0.0#绑定所有v4和v6 ip地址,或使用特定主机访问的特定地址,建议用于生产

net:
    net.bindIpAll: true #to bind all ip addresses

答案 2 :(得分:1)

  

我不确定第3步是什么意思

将文档发送到Install MongoDB On Windows ...

  

将MongoDB作为Windows运行时,应指定两个选项   服务:日志输出的路径(即logpath)和配置   文件。

这意味着您的mongod命令(在Windows服务中定义)应如下所示:

c:\mongodb\bin\mongod.exe --config c:\mongodb\mongod.cfg

在你的配置文件中(无论它在我上面的例子中是什么叫mongod.cfg)你都希望有这样的一行:

auth = true

试试看,看看它是否有效。如果您的服务定义不包含“--config”选项,请重新安装您的服务(遵循我引用的文档)以添加它。

答案 3 :(得分:1)

您必须使用--auth命令行选项重新启动mongod实例(在shell中运行它):

mongod --auth --port 27017 --dbpath /var/lib/mongodb

请记住,mongodb的路径可能不同,因此您可以检查mongodb配置文件中的dbPath值:

sudo vi /etc/mongod.conf