Comment sécuriser les installations Redis : Conseils de configuration essentiels

Assurez la sécurité de votre installation Redis haute performance contre les accès non autorisés et la perte de données. Ce guide essentiel fournit des conseils de configuration pratiques et étape par étape, axés sur l'isolation réseau, l'authentification et les meilleures pratiques opérationnelles. Apprenez à restreindre l'accès à l'aide de la directive `bind`, à implémenter une protection par mot de passe robuste (`requirepass` ou ACLs), à désactiver les commandes dangereuses et à sécuriser les fichiers de persistance. Lecture essentielle pour déployer Redis en toute sécurité dans tout environnement de production.

30 vues

Comment Sécuriser les Installations Redis : Conseils de Configuration Essentiels

Redis est un magasin de données en mémoire puissant et haute performance, fréquemment utilisé pour la mise en cache, la gestion des sessions et le courtage de messages. En raison de sa rapidité et de sa simplicité, les configurations Redis par défaut sont souvent optimisées pour les environnements de développement — privilégiant la facilité d'utilisation à une sécurité stricte.

Cependant, exposer une instance Redis non sécurisée à Internet ou même à un réseau interne non segmenté peut entraîner des violations de données catastrophiques, une perte de données (via FLUSHALL), ou même une exécution de code à distance (via la manipulation de fichiers de persistance). Sécuriser votre déploiement Redis en production n'est pas négociable. Ce guide détaille les étapes de configuration essentielles et exploitables pour verrouiller efficacement votre serveur Redis.


1. Configuration Réseau : Limiter l'Exposition

La mesure de sécurité la plus immédiate et la plus efficace consiste à contrôler les interfaces réseau sur lesquelles Redis écoute. Par défaut, Redis se lie souvent à toutes les interfaces disponibles (0.0.0.0), le rendant potentiellement accessible de n'importe où.

Liaison à des Interfaces Spécifiques (bind)

Vous devez configurer Redis pour qu'il n'écoute que sur les interfaces nécessaires. Dans la plupart des environnements de production, cela signifie se lier uniquement à l'adresse de bouclage (loopback) ou à une adresse IP privée spécifique utilisée par les serveurs d'applications.

Accès Interne ou Local Uniquement

Si votre serveur d'application réside sur le même hôte que Redis, liez-vous exclusivement à l'adresse de bouclage.

# Extrait de configuration redis.conf
bind 127.0.0.1

Accès Réseau Privé

Si vos serveurs d'applications se trouvent sur un segment de réseau privé (par exemple, un sous-réseau backend) et nécessitent un accès réseau, liez-vous à cette adresse IP privée spécifique. Ne vous liez jamais à des IP faisant face à l'Internet public sans règles de pare-feu robustes.

# Lister les adresses IP internes spécifiques qui devraient accéder à Redis
bind 192.168.1.100 10.0.0.5

Comprendre le Mode Protégé

Depuis Redis 3.2, le Mode Protégé est activé par défaut. Ce mode bloque les connexions provenant de tout client externe si le serveur fonctionne sans mot de passe (requirepass) et est lié à une interface publique. Bien qu'utile, se fier uniquement au Mode Protégé est insuffisant ; appliquez toujours les restrictions de liaison et l'authentification.

Si vous devez le désactiver pour une configuration spécifique, vous pouvez utiliser :

protected-mode no

⚠️ Avertissement : Ne désactivez protected-mode que si vous avez correctement configuré bind et requirepass. Sinon, votre instance Redis sera grande ouverte.

2. Authentification et Contrôle d'Accès

Une fois l'accès réseau restreint, la couche de défense suivante est l'authentification. Les clients ne devraient pouvoir interagir avec Redis que s'ils fournissent un mot de passe valide ou, de préférence, s'ils utilisent le système moderne de Liste de Contrôle d'Accès (ACL).

Mise en Œuvre de la Protection par Mot de Passe (requirepass)

Utilisez la directive requirepass dans votre fichier redis.conf pour imposer l'authentification des clients. Cela agit comme un secret partagé global pour une sécurité de base.

# Définir un mot de passe fort et unique
requirepass T4h!S_Is_V3ry_S3cure_P@ss

Pour se connecter en utilisant un mot de passe, les clients doivent utiliser la commande AUTH :

# Exemple utilisant redis-cli
$ redis-cli
127.0.0.1:6379> AUTH T4h!S_Is_V3ry_S3cure_P@ss
OK
127.0.0.1:6379> PING
PONG

Sécurité Avancée : Listes de Contrôle d'Accès Redis (ACLs)

Pour les environnements de production exécutant Redis 6.0 et versions ultérieures, les ACLs sont la méthode d'authentification préférée. Les ACLs vous permettent de définir plusieurs utilisateurs avec des mots de passe spécifiques et des autorisations granulaires (par exemple, l'utilisateur A ne peut que lire, l'utilisateur B peut écrire sur des espaces de clés spécifiques).

La configuration des ACL implique généralement la définition des utilisateurs et de leurs règles dans redis.conf ou un fichier ACL séparé :

# Exemple de définition d'utilisateur ACL (dans redis.conf ou aclfile)
user default on # l'utilisateur default est activé
user app_reader on >app_read_P@ss ~cache:* +get +scan
user app_writer on >app_write_P@ss ~data:* +set +del

Renommage ou Désactivation des Commandes Dangereuses

Certaines commandes administratives (telles que FLUSHALL, CONFIG, KEYS et SHUTDOWN) peuvent entraîner des perturbations opérationnelles ou exposer des détails de configuration sensibles en cas de mauvaise utilisation. Il est recommandé de renommer ces commandes avec des noms obscurs ou de les désactiver complètement.

Pour renommer une commande, utilisez rename-command :

# Renommer la commande CONFIG pour empêcher les modifications non autorisées
rename-command CONFIG HIDE_MY_CONFIG

# Désactiver FLUSHALL complètement
rename-command FLUSHALL ""

3. Bonnes Pratiques de Sécurité Opérationnelle

Au-delà de la configuration interne de Redis, l'application de mesures de sécurité opérationnelles externes robustes est cruciale pour une posture de sécurité complète.

Appliquer des Règles de Pare-feu Strictes

Indépendamment du paramètre de la directive bind, appliquez toujours un filtrage réseau à l'aide de groupes de sécurité cloud, d' iptables ou de solutions de pare-feu similaires. Le port par défaut de Redis (6379) ne doit être ouvert qu'aux adresses IP ou plages d'adresses IP spécifiques de vos serveurs d'applications de confiance.

Exemple de Règle de Pare-feu (Linux/iptables)

Autoriser le trafic entrant sur le port 6379 uniquement à partir d'un serveur d'application connu (192.168.1.50) :

# Bloquer tout le trafic entrant sur le port 6379 par défaut
iptables -A INPUT -p tcp --dport 6379 -j DROP

# Autoriser un serveur d'application spécifique
iptables -A INPUT -p tcp -s 192.168.1.50 --dport 6379 -j ACCEPT

Exécuter avec le Moindre Privilège

Ne jamais exécuter le processus du serveur Redis en tant qu'utilisateur root. Si un attaquant compromet le processus Redis, l'exécution en tant que root lui donne un contrôle total sur l'ensemble du système d'exploitation.

Créez un utilisateur système dédié et non privilégié (par exemple, redis) et configurez le système d'exploitation et le script d'initialisation de Redis pour exécuter le serveur sous cet utilisateur. La configuration Redis peut l'imposer en utilisant la directive user (bien que cela soit généralement géré par les paramètres système) :

# Assurez-vous que le processus Redis s'exécute sous un utilisateur restreint (configuration au niveau système préférée)
user redis

Sécurisation des Fichiers de Configuration et de la Persistance

Le fichier redis.conf contient des informations sensibles telles que le mot de passe requirepass et les paramètres réseau. Assurez-vous que ce fichier, ainsi que les fichiers de persistance (instantanés RDB et journaux AOF), sont protégés par des autorisations de fichiers restrictives, empêchant la lecture ou la modification non autorisées par d'autres utilisateurs du système.

# Exemple d'autorisations recommandées
# Seul l'utilisateur 'redis' et root devraient pouvoir lire/écrire
chown redis:redis /etc/redis/redis.conf
chmod 600 /etc/redis/redis.conf

Implémenter le Chiffrement SSL/TLS

Pour les environnements où le trafic Redis traverse un segment réseau non fiable (même en interne), implémentez le chiffrement SSL/TLS. Bien que Redis manquait historiquement de support TLS natif, les versions modernes (à partir de Redis 6) le prennent entièrement en charge. La configuration de TLS nécessite la génération de certificats et la définition des directives pertinentes dans redis.conf :

# Activer TLS
tls-port 6379
tls-auth-clients yes
tls-cert-file /etc/redis/tls/redis.crt
tls-key-file /etc/redis/tls/redis.key

Résumé des Étapes de Sécurité Essentielles

Sécuriser une installation Redis nécessite une approche par couches. En appliquant ces étapes fondamentales, vous réduisez considérablement la surface d'attaque et protégez vos précieuses données en mémoire :

  1. Restreindre l'Accès Réseau : Utiliser bind 127.0.0.1 ou des adresses IP privées spécifiques.
  2. Imposer l'Authentification : Utiliser requirepass (basique) ou les ACLs (avancé).
  3. Durcir les Commandes : Désactiver ou renommer les commandes administratives dangereuses (FLUSHALL, CONFIG).
  4. Utiliser des Pare-feu : N'autoriser le trafic sur le port 6379 qu'à partir des serveurs d'applications de confiance.
  5. Moindre Privilège : Exécuter le processus Redis en tant qu'utilisateur dédié et non root.
  6. Chiffrer le Trafic : Activer SSL/TLS pour les connexions réseau lorsque cela est approprié.