Comment effectuer une installation sécurisée de Redis sur Linux

Redis est bénéfique pour de nombreuses choses, dont le caching. Vous pouvez également utiliser Redis comme un magasin de données principal ou même en remplacement d’une base de données. Mais comment effectuer une installation sécurisée de Redis ? Installer Redis peut être compliqué, et si vous n’êtes pas prudent, vous pourriez vous retrouver avec de nombreuses erreurs. Heureusement pour vous, ce tutoriel a tout prévu.

Dans ce tutoriel, vous apprendrez comment installer Redis de manière sécurisée sur votre système Linux, avec quelques conseils pour éviter les erreurs courantes.

Lisez la suite et épargnez-vous les maux de tête liés à la résolution des erreurs d’installation de Redis !

Prérequis

Ce tutoriel sera une démonstration pratique. Si vous souhaitez suivre, assurez-vous d’avoir ce qui suit :

  • Une machine Ubuntu 20.04 LTS – Ce tutoriel utilise Ubuntu 20.04 LTS, mais les instructions sont similaires pour la plupart des distributions Linux.

Installation de Redis avec le Gestionnaire de Paquets APT

Il existe plusieurs façons d’installer Redis sur Ubuntu, mais pour ce tutoriel, vous utiliserez le gestionnaire de paquets APT pour installer Redis.

Redis est écrit en C, vous devrez donc compiler Redis à partir de son code source manuellement. Plusieurs dépendances devront être installées, et le processus de compilation n’est pas totalement infaillible.

Compiler Redis à partir de la source n’est pas recommandé, mais l’avantage est que vous pouvez personnaliser votre installation si vous le souhaitez. Vous téléchargez le code source, puis le configurez manuellement.

Ouvrez votre terminal et exécutez la commande apt update ci-dessous pour vous assurer d’avoir les dernières listes de paquets.

sudo apt update -y
Updating the Linux system

Maintenant, exécutez la commande apt install ci-dessous pour installer Redis sur votre machine.

La commande ci-dessous utilise le gestionnaire de paquets apt pour télécharger et installer le paquet redis-server depuis les dépôts Ubuntu sur votre machine. Le drapeau -y indique à apt d’accepter automatiquement les invites pendant le processus d’installation.

sudo apt install redis-server -y
Installing Redis on your machine

Configuration du fichier Redis.conf pour exécuter Redis en tant que service

Vous venez d’installer Redis, mais il n’est pas encore prêt à être utilisé. Avant de pouvoir commencer à utiliser Redis, vous devrez d’abord configurer le fichier redis.conf.

Le fichier de configuration redis.conf est inclus dans le package Redis que vous avez installé et est stocké dans le répertoire /etc/redis/ par défaut. Ce fichier contient toutes les options de configuration pour Redis.

L’extension de fichier .conf est logique, car elle suit un modèle conventionnel. De nombreux autres programmes utilisent ce même style. Le serveur web Apache, par exemple, utilise l’extension de fichier .conf pour son fichier de configuration principal.

1. Exécutez la commande systemctl suivante pour stopper le service redis-server. Arrêter le service Redis est une pratique recommandée lorsque vous commencez à utiliser Redis.

sudo systemctl stop redis.service

2. Ensuite, ouvrez le fichier /etc/redis/redis.conf dans votre éditeur de texte préféré.

Trouvez la directive supervised, puis définissez-la sur systemd, comme indiqué ci-dessous, et enregistrez les modifications. Cela indique au système d’exploitation d’exécuter Redis en tant que service.

Setting up the systemd directive

3. Maintenant, exécutez la commande systemctl restart ci-dessous pour redémarrer le service Redis (redis.service) car le service Redis n’est pas encore au courant des modifications.

sudo systemctl restart redis.service

4. Enfin, exécutez la commande systemctl status ci-dessous pour voir si Redis est en cours d’exécution.

sudo systemctl status redis.service

Comme vous pouvez le voir ci-dessous, la sortie montre que le service Redis est en cours d’exécution.

Checking if Redis Service is Running

Testez si le serveur Redis fonctionne correctement

Vous avez configuré et vérifié que le service Redis fonctionne activement, mais cela ne signifie pas que le serveur Redis fonctionne. Comment tester si le serveur Redis fonctionne correctement? Connectez-vous au serveur Redis et envoyez des commandes pour voir si le serveur répond.

1. Exécutez la commande redis-cli ci-dessous pour vous connecter au serveur Redis. redis-cli est l’interface en ligne de commande pour Redis, qui vous permet d’envoyer des commandes au serveur et d’inspecter son état.

redis-cli

Vous pouvez voir ci-dessous que vous êtes dans l’invite du serveur Redis (127.0.0.1:6379>). La commande redis-cli essaie de se connecter à un serveur Redis à 127.0.0.1:6379 par défaut.

Connecting to the Redis Server

2. Ensuite, exécutez la commande ping ci-dessous pour vérifier si le serveur Redis est accessible.

ping

Comme vous pouvez le voir, le serveur a renvoyé PONG, ce qui indique que le serveur Redis est accessible et peut désormais communiquer avec le service avec succès.

Pinging the Redis server

Peut-être êtes-vous encore sceptique ; exécutez la commande set ci-dessous. La commande set est une commande Redis qui définit une paire clé-valeur dans une base de données.

set test "This is a test"

Comme vous pouvez le voir, la commande set renvoie  » OK « , ce qui indique que le service Redis fonctionne correctement.

Testing the Redis server

3. Exécutez la commande exit ci-dessous pour quitter le redis-cli. Cela ferme la connexion au serveur Redis.

exit

Liaison du serveur Redis à Localhost

Vous venez de tester que le serveur Redis fonctionne correctement, mais il pourrait être accessible à partir d’autres appareils de votre réseau aussi. Ce comportement est indésirable, et vous voudriez généralement protéger votre serveur Redis des étrangers.

En liant le serveur Redis à localhost, vous définissez un comportement selon lequel seule la machine sur laquelle vous avez installé Redis peut accéder au serveur Redis.

1. Ouvrez le fichier /etc/redis/redis.conf dans votre éditeur de texte.

2. Localisez la ligne qui dit bind 127.0.0.1 ::1 et décommentez la ligne en supprimant le signe dièse (#) au début de la ligne.

Uncommenting the bind 127.0.0.1 ::1 line

3. Maintenant, exécutez la commande ci-dessous pour redémarrer le service redis-server.

sudo systemctl restart redis-server

4. Enfin, exécutez la commande suivante pour vérifier si votre serveur Redis est lié à localhost. La commande netstat -lnp répertorie toutes les connexions réseau actives, et la partie grep redis filtre la sortie pour les lignes contenant  » redis « .

-lnp signifie Protocole de Nom Local, un protocole de réseau utilisé par les systèmes de type UNIX pour résoudre les noms d’hôtes en adresses IP.

sudo netstat -lnp | grep redis

Vous pouvez voir ci-dessous que le serveur Redis écoute désormais uniquement sur l’interface localhost (127.0.0.1:6379). En reflétant le changement dans le fichier de configuration, vous pouvez voir que seule l’interface localhost est répertoriée sous vos connexions Internet actives (tcp).

Maintenant, aucun autre appareil sur votre réseau ne peut se connecter à votre serveur Redis.

Listing all active network connections

Sécuriser la connexion au serveur Redis avec un mot de passe

À ce stade, Redis n’est pas configuré pour exiger des utilisateurs qu’ils s’authentifient avec un mot de passe. Quiconque connaît l’adresse IP ou le nom d’hôte de votre serveur Redis pourrait s’y connecter et modifier ses données.

Comment protéger votre serveur Redis ? Définissez un mot de passe pour exiger une authentification des utilisateurs lors de la connexion à votre serveur Redis.

1. Réouvrez le fichier de configuration redis.conf dans votre éditeur de texte/code.

2. Ensuite, définissez un mot de passe fort avec les étapes suivantes :

  • Recherchez requirepass foobared sous la section SECURITY
  • Supprimez le signe dièse (#) au début de la ligne
  • Remplacez foobared par un mot de passe fort de votre choix et enregistrez les modifications
Providing a secure password

3. Exécutez les commandes suivantes pour redémarrer et vous connecter à votre serveur Redis.

sudo systemctl restart redis-server
redis-cli

4. Maintenant, exécutez la commande ping pour voir si vous obtiendrez une réponse du serveur.

ping

Ci-dessous, vous pouvez voir un message d’erreur qui dit NOAUTH Authentification requise. Ce message indique que vous avez besoin d’un mot de passe d’authentification pour accéder à votre serveur Redis à distance.

Testing connection with the server

5. Exécutez la commande auth suivie de votre mot de passe pour authentifier votre connexion à votre serveur Redis.

auth Qae9p_fY:YjdtJ7k

Vous obtiendrez une réponse OK lorsque l’authentification réussit, comme celle ci-dessous.

Authenticating Redis Server Connection

6. Enfin, relancez la commande ping pour tester si vous avez bien authentifié votre connexion à votre serveur Redis.

ping

Vous obtiendrez maintenant la réponse PONG, comme indiqué ci-dessous, après avoir authentifié votre connexion. À ce stade, vous avez maintenant protégé avec succès votre serveur Redis avec un mot de passe.

Pinging the Redis server

Désactiver les commandes dangereuses pour protéger votre serveur Redis

Définir un mot de passe pour authentifier la connexion à votre serveur Redis ne signifie pas une protection à 100%. Par défaut, Redis inclut plusieurs commandes dangereuses qui permettent aux utilisateurs de modifier les données de votre base de données.

Lorsqu’elles sont exécutées par des utilisateurs non autorisés, ces commandes permettent aux intrus de lire, modifier, détruire, voire éliminer les données de votre base de données Redis.

La liste ci-dessous n’est pas exhaustive, car votre serveur Redis peut avoir des commandes dangereuses supplémentaires, mais dans la plupart des cas, voici les commandes dangereuses :

FLUSHDB, FLUSHALL, KEYS, PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF
BGSAVE, SAVE, SPOP, SREM, RENAME, DEBUG, EVAL

Pour sécuriser davantage votre serveur Redis, renommez ces commandes dangereuses dans le fichier redis.conf :

1. Ouvrez le fichier redis.conf dans votre éditeur de texte et recherchez la section Renommage des commandes.

Renommez les commandes en une chaîne vide pour les désactiver en suivant la syntaxe ci-dessous. Remplacez the-command par la commande réelle à désactiver.

rename-command the-command ""

Par exemple, désactivez la commande CONFIG en renommant CONFIG en une chaîne vide, comme indiqué ci-dessous, puis enregistrez les modifications. Les guillemets doubles (“”) indiquent une chaîne vide qui signifie la désactivation d’une commande.

Renaming the CONFIG command

2. Quittez l’éditeur de texte et exécutez la commande ci-dessous pour redémarrer le serveur Redis.

sudo systemctl restart redis-server

3. Exécutez maintenant les commandes suivantes pour vous connecter à votre serveur Redis.

redis-cli
auth Qae9p_fY:YjdtJ7k

4. Enfin, exécutez la commande config get pour tester que la commande CONFIG est désactivée.

config get requirepass

Vous obtiendrez une réponse ERR unknown command config, comme indiqué ci-dessous, ce qui indique que la commande CONFIG est désactivée.

Checking the CONFIG command

Si la commande config get requirepass est exécutée, elle demande le mot de passe de votre serveur Redis pour authentifier la connexion à votre serveur Redis.

Vous avez maintenant renommé avec succès une commande Redis dangereuse pour protéger votre serveur Redis. Continuez à désactiver d’autres commandes dangereuses dans le fichier redis.conf.

Blocage des demandes de connexion au serveur Redis avec un pare-feu

Une autre façon de sécuriser votre serveur Redis est de configurer un pare-feu. La configuration d’un pare-feu vous oblige à autoriser uniquement le port requis pour chacun des services s’exécutant sur votre serveur.

Par exemple, si vous exécutez Redis sur votre serveur sur le port 6379, alors c’est ce port que vous devez ouvrir. Si vous devez autoriser l’accès à partir d’une adresse IP spécifique ou d’une plage d’adresses, vous pouvez ajouter ces adresses aux règles du pare-feu.

Pour configurer un pare-feu, vous installerez d’abord un outil de configuration de pare-feu. Cet exemple utilise UFW, un outil de configuration de pare-feu couramment utilisé sous Linux. Mais vous pouvez également utiliser un autre outil, tel que iptables, pour configurer un pare-feu.

1. Exécutez la commande suivante pour installer UFW sur votre machine.

sudo apt install ufw -y

2. Ensuite, exécutez la commande ci-dessous pour activer UFW.

sudo ufw enable

Entrez ‘Y’ lorsque vous obtenez l’invite affichée ci-dessous pour continuer à exécuter la commande.

Enabling UFW

3. Exécutez la commande ufw ci-dessous pour ajouter une règle, qui permet (allow) le trafic sur le port 6379 pour votre serveur Redis. Remplacez l’adresse IP 11.22.33.44 par les adresses IP de vos utilisateurs prévus.

sudo ufw allow from 11.22.33.44 to any port 6379
Adding a firewall rule to allow traffic on port 6379

4. Enfin, exécutez la commande ci-dessous pour vérifier que vous avez ajouté la règle de pare-feu avec succès. La commande vérifie le statut de votre pare-feu.

sudo ufw status

Vous pouvez voir dans la sortie ci-dessous que le pare-feu est actif et a la règle permettant le trafic sur le port 6379 pour Redis à partir de l’adresse IP 11.22.33.44.

Checking the UFW rules

Maintenant, tous les utilisateurs avec l’adresse IP 11.22.33.44 peuvent se connecter à Redis via le port 6379 et devront s’authentifier avec un mot de passe. Vous pouvez ajouter des ports supplémentaires pour d’autres services de manière similaire.

Conclusion

Tout au long de ce tutoriel, vous avez appris comment installer et sécuriser votre serveur Redis en renommant les commandes dangereuses en chaînes vides et en configurant un pare-feu.

Avec cette nouvelle connaissance, vous pouvez profiter pleinement des avantages de Redis sans vous soucier d’exposer votre serveur à des risques inutiles.

Envie d’en savoir plus? Pourquoi ne pas commencer par sécuriser un serveur Redis dans Kubernetes?

Source:
https://adamtheautomator.com/redis-install/