L'installation et la configuration d'un serveur Redis sur un système Linux nécessitent plusieurs étapes pour garantir à la fois son fonctionnement optimal et sa sécurité. Ce guide détaille le déploiement, la sécurisation par mot de passe, l'ouverture de l'accès réseau et la mise en place d'un outil de gestion visuelle.
Déploiement du serveur Redis
Sur une distribution basée sur Debian comme Ubuntu, le gestionnaire de paquets permet d'installer rapidement le service. Il est recommandé de mettre à jour l'index des paquets avant l'installation.
sudo apt update
sudo apt install redis-server -y
Sécurisation par authentification
Par défaut, Redis n'exige aucune authentification. Pour sécuriser l'instance, il faut modiifer le fichier de configuration principal.
sudo nano /etc/redis/redis.conf
Recherchez la directive requirepass. Décommentez-la et attribuez une phrase secrète robuste. Depuis la version 6, cette option agit comme une couche de compatibilité pour le système ACL, définissant le mot de passe de l'utilisateur par défaut.
# requirepass foobared
requirepass SecretDbPass!2024
Appliquez les modifications en redémarrant le service :
sudo systemctl restart redis-server
Validation de l'authentification locale
Connectez-vous à l'interface en ligne de commande locale pour vérifier que l'accès est bien restreint.
$ redis-cli
127.0.0.1:6379> ping
(error) NOAUTH Authentication required.
127.0.0.1:6379> AUTH SecretDbPass!2024
OK
127.0.0.1:6379> ping
PONG
Configuration de l'accès distant
Pour permettre à d'autres machines du réseau d'interagir avec la base de données, il faut installer les utilitaires clients sur la machine distante et ajuster les paramètres réseau du serveur.
Installation du client sur la machine distante
sudo apt install redis-tools -y
Une tentative de connexion directe échouera initialement car le service n'écoute que sur l'interface de bouclage locale.
$ redis-cli -h 10.0.0.50 -a SecretDbPass!2024
Could not connect to Redis at 10.0.0.50:6379: Connection refused
Modification des interfaces d'écoute
Retournez sur le serveur hébergeant Redis et éditez à nouveau le fichier de configuration.
sudo nano /etc/redis/redis.conf
Localisez la section réseau et modifiez la directive bind. Pour écouter sur toutes les interfaces IPv4, utilisez 0.0.0.0, ou spécifiez l'adresse IP du réseau local.
# bind 127.0.0.1 ::1
bind 0.0.0.0
Redémarrez le service pour prendre en compte la nouvelle configuration réseau :
sudo systemctl restart redis-server
La connexion distante fonctionne désormais :
$ redis-cli -h 10.0.0.50 -a SecretDbPass!2024
10.0.0.50:6379>
Administration visuelle avec RedisInsight
Pour faciliter la surveillance et la gestion des clés, l'outil officiel RedisInsight peut être déployé via un conteneur Docker.
Déploiement via Docker Compose
Créez un fichier docker-compose.yml pour orchestrer le conteneur.
version: '3.8'
services:
redis-gui:
image: redis/redisinsight:2.42
container_name: redis-gui-manager
restart: unless-stopped
volumes:
- ./redisinsight_data:/data
ports:
- "8001:5540"
environment:
- TZ=Europe/Paris
Avant de démarrer le conteneur, assurez-vous que le répertoire de données possède les permissions adéquates pour l'utilisateur interne du conteneur.
mkdir -p redisinsight_data
chmod -R 777 redisinsight_data
docker-compose up -d
Connexion à l'instance distante
Accédez à l'interface web via le port configuré (par exemple, http://localhost:8001). Lors de l'ajout d'une nouvelle base de données, il est crucial de ne pas utiliser 127.0.0.1 comme hôte. Étant donné que RedisInsight s'exécute dans un conteneur isolé, 127.0.0.1 pointerait vers le conteneur lui-même et non vers le serveur hôte. Utilisez l'adresse IP réelle du serveur Redis (ex. 10.0.0.50) et fournissez le mot de passe configuré précédemment pour établir la liaison.