如何在Redis 3.2.6 Sentinel中禁用保护模式?

pes*_*669 10 redis sentinel redis-sentinel

我尝试了以下错误消息推荐的所有内容:

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

我的/etc/redis/sentinel.conf:

daemonize yes
sentinel myid XXX
sentinel monitor master XXX 6379 2
sentinel down-after-milliseconds master 60000
sentinel config-epoch master 0
protected-mode no
bind 0.0.0.0
port 26379

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

port 6379
bind 0.0.0.0
protected-mode no

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

我的整个后端都在私有子网上.我已经进入防火墙后面的数据中心,来自同一个专用网络,我仍然可以只在本地连接而不会收到令人沮丧的错误消息.

服务器环境: Debian 8,Redis 3.2.6
客户端环境: Ubuntu 16.10,redis-cli 3.2.1
Redis实例: 3个
Sentinel实例: 3

我不只是一个,而是建议的3/4(没有设置命令行标志).有没有人有任何指导或想法?我显然遗漏了一些我无法从错误消息,文档,Stackoverflow,Google和试错中找到的东西.在想深入了解源代码之前,我想先在这里发一个问题.

任何帮助表示赞赏.谢谢!

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

小智 4

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 不使用“bind”指令来将 Redis 限制到某些接口。

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

> PING
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

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

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