如何拒绝与mongodb的未经身份验证的连接

时间:2014-09-24 19:55:58

标签: mongodb authentication connection

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

mongod --dbpath ./ --auth

但是如果我跑

mongo 

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

来嗅探数据库
use <DBNAME>

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

1 个答案:

答案 0 :(得分:4)

这里有一个误解,use <dbname>无论数据库是否存在都会有效,没有信息泄漏,因为它们无法运行show databasesshow collections来确认某些内容确实存在(因为他们没有足够的权限)。非认证会话并不比原始TCP套接字更好,它看起来更像是因为您使用mongo shell作为客户端(您也可以运行mongo --nodb并执行操作但这并不意味着任何事情都受到了损害,在那种情况下甚至没有与数据库的连接)。

因此,您要求的是在建立TCP连接之前拒绝连接的方法。但是,您必须首先在实际进行身份验证之前建立TCP连接(否则,您如何与数据库进行身份验证?),因此在考虑分布式数据库的工作方式时,这确实没有多大意义。

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