我们有6个redis服务器在端口上运行(8001、8002、8003、8004、8005、8006)。在每个redis服务器的redis.conf上,我们用不同的方式绑定ip,如:
绑定0.0.0.0
绑定私有-公共
绑定公共
如果我们喜欢它的工作方式:
redis-cli -h PUBLIC_IP -p 8001
但是当我们想要创建我们运行的集群时:
./src/redis-cli --cluster create PUBLIC_IP:8001 PUBLIC_IP:8002 PUBLIC_IP:8003 PUBLIC_IP:8004 PUBLIC_IP:8005 PUBLIC_IP:8006 --cluster-replicas 1
控制台始终显示并永远等待群集:
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica PUBLIC_IP:8005 to PUBLIC_IP:8001
Adding replica PUBLIC_IP:8006 to PUBLIC_IP:8002
Adding replica PUBLIC_IP:8004 to PUBLIC_IP:8003
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 7ab009459f7f5cf6cef5f46b691748dc236e4c26 PUBLIC_IP:8001
slots:[0-5460] (5461 slots) master
M: 0048ca2cd65c1315b8f0a7c952b69bfb494d5ace PUBLIC_IP:8002
slots:[5461-10922] (5462 slots) master
M: c6ee023719f200b0d175f428fa15e5ab767d0e04 PUBLIC_IP:8003
slots:[10923-16383] (5461 slots) master
S: cf636a1a46b1e947daec3e797cac524c613f08ca PUBLIC_IP:8004
replicates 7ab009459f7f5cf6cef5f46b691748dc236e4c26
S: 5d4bd1041457114353b0b30dbefd86ab8e4ae020 PUBLIC_IP:8005
replicates 0048ca2cd65c1315b8f0a7c952b69bfb494d5ace
S: 62f01289dc3f72cac4a1745fc77b7bd91ec5d107 PUBLIC_IP:8006
replicates c6ee023719f200b0d175f428fa15e5ab767d0e04
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
很多人说我们需要绑定私有ip,但是我们想在公共上绑定,因为当我们与外部机器连接时,集群重定向到包含密钥的主机,如果我们绑定私有ip,重定向将显示“重定向到私有ip”,这将无法按预期工作。
我们是否遗漏了让集群通过公共ip加入的内容?
2条答案
按热度按时间ars1skjm1#
如果我在你家我会做的是:
使用专用ip和环回ip绑定所有服务器,即
bind {{ private_ip }} 127.0.0.1
在每台服务器上启用ufw(或其他任何防火墙工具)并执行(对于ufw)allow from {{ private_ip }} to any port {{ redis_port }}
或者类似的。我的内部dns将为所有服务器提供相应的专用ip条目。
瞧!安全创建和访问redis集群,无任何安全漏洞。
注意:如果您仍然希望通过公共网络访问它们,那么您可以使用snat进行一些变通
警告:将redis服务器绑定到
0.0.0.0
或者公共ip可能会导致严重的漏洞问题,如:https://www.exploit-db.com/exploits/47195
https://medium.com/@knownsec404team/rce-基于redis-on-master-slave-replication-ef7a664ce1d0的漏洞利用
附言:你也可以按照这个中等教程。
xj3cbfub2#
redis安全指南:
redis被设计为在可信环境中由可信客户机访问。
另请参阅:how to connect to redis from remote guide
当一个服务器绑定到它的公共ip时,它可以从每个人那里得到请求,所以除非你在它周围建立了某种安全机制,否则任何人都可以访问和操作你的数据。
在redis集群中,规则是相同的,绑定在公共ip上的副本是公开的。
redis集群的默认用例是一台机器(或多台机器)从它的私有网络中访问它,除非你知道你在做什么,否则你不应该转移。
如果这对您的用例有意义,那么您应该将访问redis集群的机器作为集群专用网络的一部分。