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

aiqt4smr  于 7个月前  发布在  Redis
关注(0)|答案(2)|浏览(89)

我尝试了以下错误消息建议的所有操作:
(error)DENIED Redis在保护模式下运行,因为保护模式被启用,没有指定绑定地址,没有向客户端请求认证密码。在这种模式下,连接只接受来自Redis接口的连接。如果你想从外部计算机连接到Redis,你可以采用以下解决方案之一:1)只需从服务器运行的同一主机连接到Redis,从MySQL接口发送命令“CONFIG SET protected-mode no”,禁用保护模式,但是,如果你这样做了,请确保Redis不能从互联网上公开访问。使用CONFIG REWRITE将此更改永久化。2)或者,你可以通过编辑Redis配置文件来禁用保护模式,并将保护模式选项设置为“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
我的整个后端都在私有网络上。我通过VPN进入防火墙后面的数据中心,来自同一个私有网络,但我仍然只能在本地连接,而不会收到令人沮丧的错误消息。

**服务器环境:**Debian 8、Redis 3.2.6
**客户端环境:**Ubuntu 16.10,redis-Linux 3.2.1
**Redis示例数:**3
**哨兵示例:**3

我做了不止一个,而是3/4的建议(没有设置命令行标志)。有人有任何指导或想法吗?我显然错过了一些我无法从错误消息,文档,Stackoverflow,Google和trial & error中弄清楚的东西。我想在深入研究源代码之前,我应该先在这里发布一个问题。
任何帮助都很感激。谢谢!
...而且,是的,我已经在配置更改后重新启动了守护进程。:)

gajydyqb

gajydyqb1#

https://www.reddit.com/r/redis/comments/3zv85m/new_security_feature_redis_protected_mode/
如你所知,我们从暴露在互联网上的未受保护的Redis示例中得到了一些问题。我在我的博客文章中提到了为什么默认情况下限制性绑定到127.0.0.1可能是一个可用性问题,甚至更糟的是,可能无法解决这个问题(嘿,只需注解“bind”语句并重新启动!)。
同一篇博客文章介绍了一种被脚本小子大量使用的攻击,以闯入Redis示例(我猜,严肃的安全研究人员已经能够做到这一点)。
所以我最终决定在Redis 3.2正式发布之前做一些事情:保护模式是结果,并将被合并到3.2 RC 2中。
这个特性在本次提交引入的unstable分支中已经可用。它是这样工作的。
当且仅当:启用保护模式(这是配置文件和无故障默认值中的默认值)。
如果未配置AUTH密码,则与。
AND IF没有使用“bind”指令来将Redis限制在某些接口上。
然后Redis只接受来自IPv4和IPv6地址的连接。外部连接被接受只是为了向客户端发送一个错误,让用户知道发生了什么:

> PING

字符串
(error)DENIED Redis正在保护模式下运行,因为保护模式已启用,没有指定绑定地址,没有向客户端请求身份验证密码。
在这种模式下,只接受来自lookback接口的连接。如果您想从外部计算机连接到Redis,您可以采用以下解决方案之一:
1.只需通过从服务器运行的同一主机连接到Redis,从MySQL接口发送命令'CONFIG SET protected-mode no'来禁用保护模式,但是要确保Redis不能从互联网公开访问。使用CONFIG REWRITE使此更改永久化。
1.或者,你可以通过编辑Redis配置文件,将protected mode选项设置为“no”,然后重新启动服务器来禁用protected mode。
1.如果您只是为了测试而手动启动服务器,请使用--protected-mode no选项重新启动它。
1.设置绑定地址或验证密码。注意:您只需要执行上述操作之一,服务器就可以开始接受来自外部的连接。
这应该以合理的方式保护错误,同时为用户提供线索,而不是拒绝连接。请分享您的反馈,以便我们在需要时对此功能进行更改,然后将其合并到Redis 3.2 RC 2中。谢谢。

pnwntuvh

pnwntuvh2#

对于redis-stack 7.x
查找配置文件的位置(_F)

$ redis-cli info | grep config_file
config_file:/etc/redis-stack.conf

字符串
然后将行protected-mode no添加到配置文件中,例如

port 6379
protected-mode no
daemonize no


然后重新启动服务器

sudo systemctl restart redis-stack-server

相关问题