web-dev-qa-db-fra.com

Comment désactiver le «mode protégé» dans Redis?

Je voudrais désactiver protected-mode sur ma production Redis. En ce qui concerne l'erreur suivante que j'ai reçue de mon autre instance Redis-Sentinel, je pouvais la désactiver en direct en me connectant à Redis à partir de la machine principale sur laquelle elle fonctionne.

REFUSÉ Redis s'exécute en mode protégé car le mode protégé est activé, aucune adresse de liaison n'a été spécifiée, aucun mot de passe d'authentification n'est demandé aux clients. Dans ce mode, les connexions ne sont acceptées qu'à partir de l'interface de bouclage. Si vous souhaitez vous connecter à partir d'ordinateurs externes à Redis, vous pouvez adopter l'une des solutions suivantes:

1) Désactivez simplement le mode protégé en envoyant la commande `` CONFIG SET protected-mode no '' à partir de l'interface de bouclage en vous connectant à Redis à partir du même hôte que le serveur exécute, mais assurez-vous que Redis n'est pas accessible publiquement depuis Internet si vous le faites. Utilisez CONFIG REWRITE pour rendre ce changement permanent.

2) Alternativement, vous pouvez simplement désactiver le mode protégé en modifiant le fichier de configuration Redis et en définissant l'option de mode protégé sur "non", puis en redémarrant le serveur.

3) Si vous avez démarré le serveur manuellement juste pour le tester, redémarrez-le avec l'option '--protected-mode no'.

4) Configurez une adresse de liaison ou un mot de passe d'authentification.

REMARQUE: Vous devez uniquement effectuer l'une des opérations ci-dessus pour que le serveur commence à accepter les connexions de l'extérieur.

Mais lorsque je me connecte et essaie de le désactiver, j'obtiens l'erreur (error) ERR Unsupported CONFIG parameter: protected-mode.

Il n'y a pas d'authentification configurée ou autre - toute la sécurité est gérée par des règles de pare-feu. Le redis.conf est presque par défaut.

Démo

root@svim-redis03 /etc/redis # redis-cli

127.0.0.1:6379> CONFIG GET protected*
(empty list or set)
127.0.0.1:6379> CONFIG GET bind*
1) "bind"
2) "127.0.0.1"
127.0.0.1:6379> CONFIG SET protected-mode no
(error) ERR Unsupported CONFIG parameter: protected-mode
127.0.0.1:6379> exit

root@svim-redis03 /etc/redis # redis-server --version
Redis server v=3.2.9 sha=00000000:0 malloc=jemalloc-4.0.3 bits=64 build=86450d2ba8219c1e

Y a-t-il quelque chose que je dois vérifier ou modifier avant? Je n'ai trouvé aucun indice dans documentation ou problèmes GitHub .

Mise à jour 01

Il n'est même pas possible de changer l'adresse de liaison ou tout autre paramètre de configuration. Dois-je d'abord activer les modifications de configuration?

127.0.0.1:6379> config set bind "127.0.0.1 11.12.13.14"
(error) ERR Unsupported CONFIG parameter: bind
6
Thomas Schwärzl

Il s'avère que le serveur actuel en cours d'exécution n'est pas la même version que le binaire que j'ai installé.

Comment reproduire cela?

Connectez-vous simplement via redis-cli à votre instance redis et saisissez INFO server qui renvoie un tas d'informations.

127.0.0.1:6379> INFO server
# Server
redis_version:3.0.7
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:869e89100d5ea8c2
redis_mode:standalone
os:Linux 4.2.0-35-generic x86_64
Arch_bits:64
multiplexing_api:epoll
gcc_version:4.8.4
process_id:26720
run_id:6645270dd2ac6a7f96caa054f9dbba9e66566755
tcp_port:6379
uptime_in_seconds:10971777
uptime_in_days:126
hz:10
lru_clock:6676576
config_file:/etc/redis/redis.conf

Comme vous pouvez le voir, cette instance de redis fonctionne pendant près de 127 jours et utilise redis_version:3.0.7.

Comment régler ceci?

Redémarrez votre serveur et assurez-vous de l'avoir redémarré! Par exemple, avec la plupart des distributions Linux, vous pouvez le faire en appuyant sur les commandes suivantes.

root@svim-redis03 ~ # service redis-server stop
Stopping redis-server: redis-server.

Vérifiez s'il est vraiment hors ligne en essayant de vous connecter avec redis-cli. Si vous pouvez toujours vous connecter, l'instance est toujours en cours d'exécution. Vérifiez cela en recherchant les processus de redis actifs.

root@svim-redis03 ~ # ps -efl |grep redis
1 S redis    12418     1  0  80   0 - 10673 ep_pol  2016 ?        05:33:17 /usr/bin/redis-server 127.0.0.1:6381
1 S redis    12442     1  0  80   0 - 11697 ep_pol  2016 ?        05:33:46 /usr/bin/redis-server 127.0.0.1:6382
1 S redis    12453     1  0  80   0 - 10673 ep_pol  2016 ?        05:40:17 /usr/bin/redis-server 127.0.0.1:6383
4 S root     16570 16386  0  80   0 -  2489 wait_w 10:42 pts/7    00:00:00 tail -f /var/log/redis/redis-server-6379.log
0 S root     17064 12637  0  80   0 -  3617 pipe_w 10:47 pts/1    00:00:00 grep --color=auto redis
1 S redis    26720     1  0  80   0 - 453041 ep_pol Mar07 ?       08:37:01 /usr/bin/redis-server 127.0.0.1:6379

Comme vous pouvez le voir, l'instance (ID de processus: 26720) est toujours en cours d'exécution. Quittez-le avec la commande suivante.

kill 26720

Après avoir tué le processus, vérifiez à nouveau avec ps -efl |grep redis si l'instance est vraiment en panne.

Enfin recommencez avec

root@svim-redis03 ~ # service redis-server start
Starting redis-server: redis-server.

Vérifiez maintenant si l'instance fonctionne avec la bonne version.

root@svim-redis03 ~ # redis-cli
127.0.0.1:6379> INFO server
# Server
redis_version:3.2.9
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:86450d2ba8219c1e
redis_mode:standalone
os:Linux 4.2.0-35-generic x86_64
Arch_bits:64
multiplexing_api:epoll
gcc_version:4.8.4
process_id:17135
run_id:40d6fa2e2b25e8f5b97a3c97ec1bddb8edda0014
tcp_port:6379
uptime_in_seconds:11
uptime_in_days:0
hz:10
lru_clock:6677102
executable:/usr/bin/redis-server
config_file:/etc/redis/redis.conf
6
Thomas Schwärzl