Redis est un puissant magasin de clés-valeurs en mémoire qui peut être utilisé comme serveur de base de données, cache et courtier de messages. Il est largement connu pour ses performances rapides, sa flexibilité et sa prise en charge d'une grande variété de langages. C'est un logiciel libre et open-source écrit en langage de programmation C. Dans ce guide, découvrez comment installer et sécuriser Redis sur Ubuntu 18.04.
Prérequis
Pour suivre ce guide, vous devrez préparer quelques éléments à l'avance. Vous devez disposer d'un serveur Ubuntu 18.04, que vous pouvez facilement installer en suivant notre tutoriel. De plus, vous devez disposer d'un utilisateur non-root avec des privilèges sudo et d'un pare-feu de base configuré. Vous pouvez configurer cela en suivant nos guides sur la configuration du fichier sudoers Linux et la configuration d'un pare-feu UFW sur un serveur cloud Ubuntu et Debian.
Maintenant, commençons !
Installation de Redis
Redis est directement disponible depuis le dépôt officiel Ubuntu. C'est le moyen le plus simple de l'installer et de le configurer. Nous vous recommandons de suivre cette voie, à moins qu'il n'y ait des raisons spécifiques de ne pas le faire. Comme le code source de Redis est disponible gratuitement, il est également possible de compiler Redis à partir des sources. Cependant, nous ne le recommandons pas car il est plus difficile de le gérer et de le mettre à jour.
Installer Redis depuis le dépôt Ubuntu
Tout d'abord, mettez à jour le cache local des paquets APT :
|
1 |
sudo apt update |
Ensuite, installez Redis avec la commande suivante :
|
1 |
sudo apt install redis-server |
Installer Redis à partir des sources
Ubuntu n'est pas fourni par défaut avec les outils de compilation et les bibliothèques nécessaires. La commande suivante installera tous les outils nécessaires à la compilation de Redis :
|
1 |
sudo apt install git build-essential |
Il existe deux dépendances supplémentaires pour compiler Redis. Ces dépendances sont nécessaires pour compiler Redis avec des fonctionnalités supplémentaires, par exemple, le support TLS, l'intégration systemd, etc. Pour compiler Redis avec le support TLS, installez le paquet « libssl-dev ». Pour compiler Redis avec le support systemd, installez le paquet « libsystemd-dev » :
|
1 |
sudo apt install libssl-dev libsystemd-dev |
Le code source de Redis est disponible sur GitHub. Consultez la page GitHub de Redis. Ensuite, récupérez le code source :
|
1 |
git clone https://github.com/redis/redis.git |
Changez le répertoire actif actuel pour le répertoire du code source de Redis :
|
1 |
cd redis/ |
Après cela, exécutez l'outil make pour démarrer la compilation. Il compilera Redis sans aucun élément supplémentaire :
|
1 |
make -j$(nproc) |
Pour activer le support TLS (en supposant que « libssl-dev » soit installé), utilisez plutôt la commande suivante :
|
1 |
make -j$(nproc) BUILD_TLS=yes |
Pour activer le support de systemd (en supposant que « libsystemd-dev » soit installé), utilisez la commande suivante :
|
1 |
make -j$(nproc) USE_SYSTEMD=yes |
Ensuite, testez si la compilation a réussi. Notez que cela peut nécessiter un paquet supplémentaire « tcl-dev » et les dépendances associées pour exécuter le test :
|
1 |
make test |
Enfin, installez Redis en exécutant la commande suivante :
|
1 |
sudo make install |
Si Redis a été compilé avec TLS, le lancement du serveur devra se faire de la manière suivante :
|
1 2 |
./utils/gen-test-certs.sh ./runtest --tls |
Configuration de Redis
Une fois l'installation terminée, il est temps de configurer Redis. Ouvrez le fichier de configuration de Redis dans un éditeur de texte et faites défiler vers le bas jusqu'à la section « supervised » :
|
1 |
sudo vim /etc/redis/redis.conf |
Modifiez la valeur de « supervised » en « systemd ». Cela garantira que le service Redis sera géré par systemd. Pour que les modifications prennent effet, redémarrez le service Redis :
|
1 |
sudo systemctl restart redis.service |
Tester Redis
Il est toujours judicieux de tester si Redis fonctionne correctement avant de l'utiliser davantage. Voici quelques façons de tester le comportement de Redis. La première étape consiste à vérifier si le service Redis est actif et opérationnel :
|
1 |
sudo systemctl status redis |
Ici, Redis est déjà en cours d'exécution. Par défaut, le service Redis démarrera au démarrage du système. Si le service Redis doit être exécuté manuellement, désactivez-le :
|
1 |
sudo systemctl disable redis |
Le test suivant consiste à vérifier en utilisant la console Redis. Lancez le client en ligne de commande Redis :
|
1 |
redis-cli |
Exécutez la commande « ping » :
|
1 |
ping |
Le résultat confirme que la connexion au serveur est toujours active. Le test suivant consiste à voir s'il permet de définir des clés. Créez une clé « temp » avec la valeur « hello world » :
|
1 |
set temp “hello world” |
Récupérez la valeur à l'aide de la commande « get » :
|
1 |
get temp |
Si tout fonctionne correctement jusqu'à présent, Redis devrait renvoyer la valeur de la clé sans aucun problème. Fermez le client en ligne de commande Redis :
|
1 |
exit |
Le dernier test consiste à vérifier si Redis peut conserver les données même s'il est arrêté ou redémarré. Redémarrez le service Redis :
|
1 |
sudo systemctl restart redis |
Si vous obtenez une erreur lors de l'exécution de la commande ci-dessus, utilisez la commande “systemctl enable redis-server” :
|
1 |
sudo systemctl enable redis-server |
Lancez le client en ligne de commande Redis et récupérez la valeur de la clé « temp » que nous avons créée précédemment :
|
1 2 |
redis-cli get temp |
Ceci conclut les tests de Redis. Votre serveur Redis est maintenant prêt à être utilisé pour l'usage souhaité.
Sécuriser Redis
À ce stade, Redis est pleinement opérationnel. Cependant, certaines de ses configurations par défaut n'offrent pas la meilleure sécurité. Si elles ne sont pas mises à jour, tout acteur malveillant peut en profiter pour accéder au serveur et à ses données. Cette section montrera comment atténuer ces vulnérabilités. Bien que ces étapes soient facultatives, il est fortement recommandé de les suivre pour renforcer la sécurité du système.
Liaison à localhost
Par défaut, Redis n'est accessible que depuis localhost. Cependant, si Redis a été configuré sur un serveur distant, la configuration doit être mise à jour pour autoriser la connexion depuis n'importe où. Toutefois, cela peut ne pas être aussi sécurisé que la liaison à localhost. Pour lier à nouveau Redis à localhost, ouvrez le fichier de configuration de Redis dans un éditeur de texte :
|
1 |
sudo vim /etc/redis/redis.conf |
Faites défiler vers le bas et trouvez la ligne suivante. Assurez-vous qu'elle n'est pas commentée :
|
1 |
bind 127.0.0.1 ::1 |
Enregistrez et fermez le fichier. Ensuite, redémarrez le service Redis pour vous assurer que la modification est effective immédiatement :
|
1 |
sudo systemctl restart redis |
Vérifiez que la modification a réussi :
|
1 |
sudo netstat -lnp | grep redis |
Si vous obtenez une erreur telle que ‘netstat: command not found’, utilisez la commande “sudo apt-get install net-tools” pour installer net-tools. Le résultat vérifie que « redis-server » est correctement lié à localhost (127.0.0.1), reflétant la modification récemment apportée. S'il y a une autre adresse IP (par exemple, 0.0.0.0), vérifiez à nouveau le fichier de configuration et redémarrez le serveur Redis.
Configuration du mot de passe Redis
La configuration d'un mot de passe permet d'utiliser une fonctionnalité de sécurité intégrée de Redis – la commande « AUTH ». Elle exige que les clients s'authentifient pour accéder à la base de données. Par défaut, aucun mot de passe n'est configuré pour Redis. Le mot de passe doit être déclaré dans le fichier de configuration de Redis. Ouvrez le fichier de configuration dans un éditeur de texte :
|
1 |
sudo vim /etc/redis/redis.conf |
Ensuite, faites défiler vers le bas jusqu'à la ligne suivante et décommentez-la :
|
1 |
requirepass foobared |
Après avoir décommenté, « foobared » sera le mot de passe par défaut. Remplacez-le par le mot de passe de votre choix. En ce qui concerne Redis, la force du mot de passe est un facteur de préoccupation majeur. Comme Redis est un serveur à hautes performances, il est potentiellement plus facile à exploiter à l'aide d'attaques par force brute. C'est pourquoi le fichier de configuration contient directement l'avertissement suivant. Voici un exemple rapide de génération d'un mot de passe aléatoire très fort. Nous utiliserons la commande OpenSSL pour générer une chaîne aléatoire :
|
1 |
echo $(openssl rand 60 | openssl base64 -A) |
Après avoir configuré un nouveau mot de passe, redémarrez le service Redis pour que les modifications prennent effet :
|
1 |
sudo systemctl restart redis.service |
Il est temps de tester si le mot de passe est correctement appliqué. Lancez la console en ligne de commande Redis :
|
1 |
redis-cli |
Ensuite, essayez de définir une nouvelle clé :
|
1 |
set user “cloudsigma” |
Redis rejettera la demande car il n'y a pas d'authentification pour l'action. Pour effectuer toute action sur le serveur, l'utilisateur doit d'abord être autorisé. Autorisez l'utilisateur à l'aide de la commande suivante :
|
1 |
auth <mot_de_passe> |
Si le mot de passe est correct, Redis confirmera l'action. Maintenant, Redis permettra l'accès aux fonctionnalités de son serveur :
|
1 2 |
set user “cloudsigma” get user |
Pour l'instant, notre travail avec la console Redis est terminé. Vous pouvez fermer la console :
|
1 |
exit |
Renommer les commandes dangereuses
Redis permet de renommer ou de désactiver complètement certaines commandes considérées comme dangereuses. Il s'agit d'une autre fonctionnalité de sécurité intégrée importante de Redis. Pourquoi les commandes sont-elles jugées dangereuses ? Si elles sont exécutées par un utilisateur non autorisé, ces commandes peuvent reconfigurer, détruire ou effacer les données du serveur. Il est courant de désactiver/renommer un ensemble de commandes Redis dangereuses. Notez que la menace de sécurité d'une commande dépend de la situation. Par exemple, certaines des commandes suivantes peuvent être nécessaires régulièrement. Dans ce cas, il n'est pas recommandé de les désactiver. Dans une telle situation, renommer la commande peut s'avérer plus avantageux. Voici une liste rapide des commandes jugées dangereuses. C'est un bon point de départ pour améliorer la sécurité du serveur Redis :
- FLUSHDB
- FLUSHALL
- KEYS
- PEXPIRE
- DEL
- CONFIG
- SHUTDOWN
- BGREWRITEAOF
- BGSAVE
- SAVE
- SPOP
- SREM
- RENAME
- DEBUG
Pour renommer ou désactiver une commande, elle doit être déclarée dans le fichier de configuration de Redis. Ouvrez le fichier de configuration de Redis et ajoutez les lignes suivantes. Ici, « rename-command » est utilisé pour renommer les commandes en une chaîne vide. Ajoutez autant d'entrées que nécessaire :
|
1 |
sudo vim /etc/redis/redis.conf |
|
1 2 3 4 |
$ rename-command FLUSHDB "" $ rename-command FLUSHALL "" $ rename-command SHUTDOWN "" $ rename-command CONFIG "" |
De même, il est également possible de renommer les commandes avec un nom différent. Dans certaines situations, cela peut offrir plus de flexibilité :
|
1 2 3 4 |
$ rename-command FLUSHDB "command_1" $ rename-command FLUSHALL "command_2" $ rename-command SHUTDOWN "command_3" $ rename-command CONFIG "command_4" |
Enregistrez le fichier et quittez l'éditeur. Pour que les modifications prennent effet, redémarrez le service Redis :
|
1 |
sudo systemctl restart redis.service |
Vérifiez les modifications. Ensuite, lancez la console Redis et authentifiez l'accès :
|
1 2 |
redis-cli auth <mot_de_passe> |
Supposons que la commande « CONFIG » ait été désactivée ou renommée. Essayez d'utiliser la commande « CONFIG » suivante. Elle échouera :
|
1 |
config get requirepass |
Si la commande a été désactivée, elle ne sera pas accessible tant qu'elle n'aura pas été réactivée. Cependant, si elle a été renommée, utilisez le nouvel alias :
|
1 |
command_4 get requirepass |
Conclusion
Ce tutoriel montre comment installer, sécuriser, configurer et valider une installation Redis. Il montre également comment utiliser les fonctionnalités de sécurité intégrées de Redis pour le rendre moins vulnérable aux attaques. Cependant, si quelqu'un est déjà connecté au serveur, il est assez facile de contourner les fonctionnalités de sécurité spécifiques à Redis. C'est pourquoi il est crucial de disposer d'un pare-feu pour protéger l'accès au serveur Redis.
Bonne informatique !






Commentaires
Aucun commentaire pour l'instant. Soyez le premier.