【问题标题】:How to refuse unauthenticated connections to mongodb如何拒绝未经身份验证的连接到 mongodb
【发布时间】:2014-09-24 19:55:57
【问题描述】:

所以我已经设法让 mongodb 启动并运行,在 admin db 中添加了一个超级管理员用户,在我的测试表中添加了一个本地管理员用户。我已经用

开始了 mongod
mongod --dbpath ./ --auth

但是如果我运行

mongo 

从终端,我无法执行任何修改或读取,但我似乎仍然能够使用

嗅探数据库
use <DBNAME>

如果没有提供用户名和密码,我是否可以完全拒绝与 mongod 实例的连接?

【问题讨论】:

  • use &lt;DBNAME&gt; 允许您选择任何数据库名称,无论它是否已经退出(或已通过身份验证)。

标签: mongodb authentication connection


【解决方案1】:

这里有一个误解,use &lt;dbname&gt; 无论数据库是否存在都可以工作,没有信息泄漏,因为他们无法运行show databasesshow collections 来确认某些东西确实存在(因为他们没有足够的权限)。未经身份验证的会话并不比原始 TCP 套接字好,它只是看起来更多,因为您将 mongo shell 用作客户端(您也可以运行 mongo --nodb 并做一些事情,但这并不意味着任何事情都会受到损害,在那种情况下甚至没有与数据库的连接)。

因此,您要求的是一种在建立 TCP 连接之前拒绝连接的方法。但是,您必须首先建立 TCP 连接,然后才能真正进行身份验证(否则您如何与数据库对话以进行身份​​验证?),因此当您考虑分布式数据库的工作方式时,这真的没有多大意义。

如果您想拒绝来自受信任 IP 地址以外的连接并锁定等,那么这通常是一个好主意,但它是在数据库之外、iptables 或您选择的防火墙中完成的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-13
    • 2014-08-20
    • 2020-09-24
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 2021-01-18
    相关资源
    最近更新 更多