web-dev-qa-db-fra.com

Comment désactiver le mode protégé dans Redis 3.2.6 Sentinel?

J'ai essayé tout ce qui est recommandé par le message d'erreur suivant:

(erreur) 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) Il suffit de désactiver le mode protégé en envoyant la commande "CONFIG SET protected-mode no" à partir de l'interface de bouclage en se connectant à Redis à partir du même hôte que le serveur est en cours d'exécution, mais assurez-vous que Redis n'est pas accessible au public à partir d'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 du mode protégé sur "non", puis en redémarrant le serveur. 3) Si vous avez démarré le serveur manuellement juste pour le test, 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 des connexions de l'extérieur.

Ma /etc/redis/sentinel.conf:

démoniser oui 
 sentinelle myid XXX
 maître moniteur sentinelle XXX 6379 2 
 Sentinelle bas-après-millisecondes maître 60000 
 Sentinelle config-Epoch maître 0 
 Mode protégé aucun 
 Bind 0.0.0.0 
 Port 26379

ÉDITER: Ma /etc/redis/redis.conf:

port 6379 
 bind 0.0.0.0 
 mode protégé non

J'ai également essayé d'ajouter sentinel auth-pass master XXX.

Mon backend entier est sur des sous-réseaux privés. Je suis VPN'd dans mon centre de données derrière le pare-feu, provenant du même réseau privé, et je ne peux toujours me connecter que localement sans recevoir ce message d'erreur frustrant.

Environnement serveur: Debian 8, Redis 3.2.6
Environnement client: Ubuntu 16.10, redis-cli 3.2.1
Redis instances: 3
Instances sentinelles: 3

Je n'ai pas fait un seul, mais 3/4 des choses suggérées (n'a pas défini les drapeaux de ligne de commande). Quelqu'un at-il des conseils ou des idées? Il me manque clairement quelque chose que je n'ai pas pu comprendre à partir du message d'erreur, de la documentation, de Stackoverflow, de Google et des essais et erreurs. J'ai pensé que je posterais une question ici avant de plonger dans le code source.

Toute aide est appréciée. Merci!

... et, oui, j'ai redémarré les démons après des changements de configuration. :)

11
pestilence669

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

Comme vous le savez, nous avons rencontré plusieurs problèmes liés à des instances Redis non protégées exposées à Internet. J'ai couvert la raison pour laquelle une liaison restrictive à 127.0.0.1 par défaut peut être un problème d'utilisation et, pire encore, peut ne pas résoudre le problème (hé juste commenter la déclaration "bind" et redémarrer!) Dans mon article de blog.

Le même article de blog a introduit une attaque qui a été largement utilisée par les script kiddies pour s'introduire dans les instances de Redis (les chercheurs en sécurité sérieux étaient déjà en mesure de le faire, je suppose).

J'ai donc finalement décidé de faire quelque chose avant la sortie officielle de Redis 3.2: le mode protégé est le résultat et sera fusionné dans 3.2 RC2.

La fonctionnalité est déjà disponible dans la branche unstable, introduite par ce commit. Voilà comment cela fonctionne.

Si et seulement si: Le mode protégé est activé (il s'agit de la valeur par défaut dans le fichier de configuration et dans la valeur par défaut sans configuration).

ET SI aucun mot de passe AUTH n'est configuré.

ET SI Aucune directive "bind" n'est utilisée pour restreindre Redis à certaines interfaces.

Ensuite, Redis accepte uniquement les connexions à partir des adresses IPv4 et IPv6 de bouclage. Les connexions externes sont acceptées juste pour le temps d'envoyer au client une erreur qui informe l'utilisateur de ce qui se passe:

> PING

(erreur) 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 d'analyse. 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 du mode protégé sur "non", puis en redémarrant le serveur.

3) Si vous avez démarré le serveur manuellement juste pour le test, redémarrez-le avec l'option --portected-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 des connexions de l'extérieur.

Cela devrait protéger les erreurs de manière raisonnable tout en fournissant aux utilisateurs un indice au lieu d'une connexion refusée. Veuillez partager vos commentaires afin que nous puissions apporter des modifications à cette fonctionnalité si nécessaire, avant qu'elle ne soit fusionnée dans Redis 3.2 RC2. Merci.

1
Allen