我的机器中有一个新的mongodb服务器(2.6.0),我使用以下配置文件启动了mongod实例:
dbpath = c:\mongo\data\db
port = 27017
logpath = c:\mongo\data\logs\mongo.log
auth = true
Run Code Online (Sandbox Code Playgroud)
后来,我通过mongo shell连接到这个mongod实例并创建了一个admin用户:
use admin
db.createUser(
{
user: "tugberk",
pwd: "12345678",
roles:
[
{
role: "userAdminAnyDatabase",
db: "admin"
}
]
}
)
Run Code Online (Sandbox Code Playgroud)
然后,我从shell注销并使用以下命令重新连接:
mongo --host localhost --port 27017 -u tugberk -p 12345678 --authenticationDatabase admin
Run Code Online (Sandbox Code Playgroud)
然后,我创建了一个具有root访问权限的用户:
use admin
db.createUser(
{
user: "tugberkRoot",
pwd: "12345678",
roles: [ "root" ]
}
)
Run Code Online (Sandbox Code Playgroud)
这里不需要最后一步,但现在应该完全禁用匿名访问.但是,我仍然可以通过mongo shell匿名连接它(即使我没有任何访问权限):

我该怎么做才能阻止任何匿名连接?
Ada*_*ord 21
身份验证阻止您对数据库执行操作(如屏幕截图所示 - 您甚至无法列出数据库),它不会阻止连接 - 毕竟,您必须能够连接才能进行身份验证.
有一个添加超时的功能请求,但是现在这实际上是服务器的行为方式.
值得注意的是,直到你尝试做某事,这与仅仅连接到端口没有区别telnet- 开头显示的文本"连接到:"等来自客户端,而不是服务器.只要它尝试执行任何未经身份验证的操作,甚至列出服务器警告,就会抛出错误,因为它没有足够的权限.
如果要从连接角度锁定内容,MongoDB透视图中唯一的选项是使用该bindIp选项限制它侦听的IP地址(默认为all).例如,使用127.0.0.1会将其锁定为本地使用(但是您将无法从远程主机连接),这会使复制成为问题,因此在选择绑定地址时要小心.
在MongoDB之外,你应该从防火墙的角度来看待锁定.在Linux上,这将是IPTables,ufw,hosts.allow/deny或类似的.Windows防火墙不是我的专业领域,但我想你也可以在那里做类似的事情.
| 归档时间: |
|
| 查看次数: |
11843 次 |
| 最近记录: |