【问题标题】:How can you disable protected mode in Redis 3.2.6 Sentinel?如何在 Redis 3.2.6 Sentinel 中禁用保护模式?
【发布时间】:2017-08-23 18:28:43
【问题描述】:

我已经尝试了以下错误消息所推荐的一切:

(错误)拒绝 Redis 在保护模式下运行,因为启用了保护模式,未指定绑定地址,未向客户端请求身份验证密码。在此模式下,仅接受来自环回接口的连接。如果您想从外部计算机连接到 Redis,您可以采用以下解决方案之一: 1) 只需禁用保护模式,通过从服务器的同一主机连接到 Redis 从环回接口发送命令 'CONFIG SET protected-mode no'正在运行,但是如果这样做,请确保 Redis 不能从 Internet 公开访问。使用 CONFIG REWRITE 使此更改永久生效。 2) 或者,您可以通过编辑 Redis 配置文件并将保护模式选项设置为“否”来禁用保护模式,然后重新启动服务器。 3) 如果您手动启动服务器只是为了测试,请使用“--protected-mode no”选项重新启动它。 4) 设置绑定地址或认证密码。注意:您只需执行上述操作之一,服务器即可开始接受来自外部的连接。

我的/etc/redis/sentinel.conf

守护进程是的
哨兵myid XXX
哨兵监控主XXX 6379 2
sentinel down-after-milliseconds master 60000
哨兵配置时代大师 0
保护模式无
绑定 0.0.0.0
端口 26379

编辑:我的/etc/redis/redis.conf

端口 6379
绑定 0.0.0.0
保护模式无

我也试过添加sentinel auth-pass master XXX

我的整个后端都在私有子网上。我通过 VPN 连接到防火墙后面的数据中心,来自同一个专用网络,但我仍然只能在本地连接而不会收到令人沮丧的错误消息。

服务器环境: Debian 8、Redis 3.2.6
客户端环境: Ubuntu 16.10、redis-cli 3.2.1
Redis 实例: 3
哨兵实例: 3

我不仅做了一个,而且做了 3/4 的建议(没有设置命令行标志)。有没有人有任何指导或想法?我显然遗漏了一些我无法从错误消息、文档、Stackoverflow、Google 和反复试验中弄清楚的东西。我想我先在这里发布一个问题,然后再深入研究源代码。

感谢任何帮助。谢谢!

...而且,是的,我在配置更改后重新启动了守护程序。 :)

【问题讨论】:

  • 你解决了吗?我遇到了同样的问题:-/

标签: redis sentinel redis-sentinel


【解决方案1】:

https://www.reddit.com/r/redis/comments/3zv85m/new_security_feature_redis_protected_mode/

如您所知,我们遇到了几个暴露在互联网上的未受保护的 Redis 实例的问题。我在我的博客文章中介绍了为什么默认情况下限制性绑定到 127.0.0.1 可能是一个可用性问题,更糟糕的是,可能无法解决问题(嘿,只需评论“绑定”语句并重新启动!)。

同一篇博文介绍了一种攻击,脚本小子大量使用该攻击来侵入 Redis 实例(我猜是认真的安全研究人员已经能够做到这一点)。

所以我最终决定在 Redis 3.2 正式发布之前做点事情:保护模式是结果,将被合并到 3.2 RC2 中。

此提交引入的不稳定分支中已经提供了该功能。这就是它的工作原理。

当且仅当: 保护模式已启用(这是配置文件和无配置默认值中的默认值)。

如果没有配置 AUTH 密码。

AND IF 没有使用“绑定”指令来将 Redis 限制为某些接口。

那么 Redis 只接受来自环回 IPv4 和 IPv6 地址的连接。外部连接被接受只是为了向客户端发送一个错误,让用户知道正在发生的事情:

> PING

(错误)拒绝 Redis 在保护模式下运行,因为启用了保护模式,未指定绑定地址,未向客户端请求身份验证密码。

在此模式下,仅接受来自回溯界面的连接。如果您想从外部计算机连接到 Redis,您可以采用以下解决方案之一:

  1. 通过从服务器运行的同一主机连接到 Redis,只需禁用从环回接口发送命令“CONFIG SET protected-mode no”的保护模式,但是如果这样做,请确保 Redis 不能从 Internet 公开访问。使用 CONFIG REWRITE 使此更改永久生效。

  2. 或者,您可以通过编辑 Redis 配置文件并将保护模式选项设置为“否”来禁用保护模式,然后重新启动服务器。

  3. 如果您手动启动服务器只是为了测试,请使用--protected-mode no 选项重新启动它。

  4. 设置绑定地址或验证密码。注意:您只需执行上述操作之一,服务器即可开始接受来自外部的连接。

这应该以合理的方式保护错误,同时为用户提供线索而不是连接被拒绝。请分享您的反馈,以便我们可以在需要时对此功能进行更改,然后再将其合并到 Redis 3.2 RC2 中。谢谢。

【讨论】:

    猜你喜欢
    • 2017-03-05
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    • 1970-01-01
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多