GNU/Linux >> Tutoriels Linux >  >> Linux

Comment effectuer une installation Redis sécurisée sous Linux

Redis est bénéfique pour de nombreuses choses, dont la mise en cache. Vous pouvez également utiliser Redis comme magasin de données principal ou même en remplacement d'une base de données. Mais comment exécuter une installation Redis sécurisée ? L'installation de Redis peut être pénible, et si vous ne faites pas attention, vous pourriez vous retrouver avec de nombreuses erreurs. Heureusement pour vous, ce didacticiel vous a couvert.

Dans ce didacticiel, vous apprendrez à installer en toute sécurité Redis sur votre système Linux, ainsi que quelques conseils pour éviter les erreurs courantes.

Continuez à lire et évitez les maux de tête liés au dépannage des erreurs d'installation de Redis !

Prérequis

Ce tutoriel sera une démonstration pratique. Si vous souhaitez suivre, assurez-vous d'avoir les éléments suivants :

  • Une machine Ubuntu 20.04 LTS :ce didacticiel utilise Ubuntu 20.04 LTS, mais les instructions sont similaires pour la plupart des distributions Linux.
  • Privilèges root ou utilisateur non root avec sudo privilèges

Installer Redis avec le gestionnaire de packages APT

Il existe plusieurs façons d'installer Redis sur Ubuntu, mais pour ce didacticiel, vous utiliserez le gestionnaire de packages APT pour installer Redis.

Redis est écrit en C, vous devez donc compiler manuellement Redis à partir de son code source. Plusieurs dépendances devraient être installées, et le processus de construction n'est pas exactement infaillible.

Compiler Redis à partir des sources 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 lancez le apt update commande ci-dessous pour vous assurer que vous disposez des dernières listes de packages.

sudo apt update -y

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

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

sudo apt install redis-server -y

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 devez d'abord configurer le redis.conf fichier.

Le redis.conf Le fichier de configuration est inclus avec le package Redis que vous avez installé et est stocké dans /etc/redis/ répertoire 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 le systemctl suivant commande à stop le redis-server service. L'arrêt de l'exécution du service Redis est une pratique recommandée lorsque vous débutez avec Redis.

sudo systemctl stop redis.service

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

Trouver le supervisé directive, 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.

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

sudo systemctl restart redis.service

4. Enfin, exécutez le systemctl status commande 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.

Tester si le serveur Redis fonctionne correctement

Vous avez configuré et vérifié que le service Redis est en cours d'exécution, 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 le redis-cli commande ci-dessous pour vous connecter au serveur Redis. redis-cli est l'interface de ligne de commande pour Redis, qui vous permet d'envoyer des commandes au serveur et d'inspecter son état.

redis-cli

Ci-dessous, vous pouvez dire que vous êtes dans l'invite du serveur Redis (127.0.0.1:6379> ). Le redis-cli la commande essaie de se connecter à un serveur Redis à 127.0.0.1:6379 par défaut.

2. Ensuite, exécutez le ping commande 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.

Peut-être êtes-vous encore sceptique ; exécutez le set commande ci-dessous. Le set command 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.

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

exit

Lier le serveur Redis à Localhost

Vous venez de tester que le serveur Redis fonctionne correctement, mais il peut également être accessible à partir d'autres appareils de votre réseau. Ce comportement n'est pas souhaitable et vous souhaitez généralement protéger votre serveur Redis des étrangers.

La liaison du serveur Redis à localhost définit 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 fichier 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 (# ) en début de ligne.

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

sudo systemctl restart redis-server

4. Enfin, exécutez la commande suivante pour vérifier si votre serveur Redis est lié à localhost. Le netstat -lnp La commande répertorie toutes les connexions réseau actives et le grep redis part filtre la sortie aux lignes qui contiennent "redis .”

-lnp signifie Local Name Protocol, un protocole réseau utilisé par les systèmes de type UNIX pour résoudre les noms d'hôte 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 ). 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 ).

Désormais, aucun autre appareil de votre réseau ne peut se connecter à votre serveur Redis.

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

À ce stade, Redis n'est pas configuré pour obliger les utilisateurs à s'authentifier avec un mot de passe. Toute personne connaissant l'adresse IP ou le nom d'hôte de votre serveur Redis pourrait s'y connecter et modifier ses données.

Comment protégez-vous votre serveur Redis ? Définissez un mot de passe pour demander aux utilisateurs de s'authentifier lors de la connexion à votre serveur Redis.

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

2. Ensuite, définissez un mot de passe fort avec ce qui suit :

  • Recherchez requirepass foobared sous le SECURITY rubrique
  • Supprimez le signe dièse (# ) en début de ligne
  • Remplacer foobared avec un mot de passe fort de votre choix et enregistrez les modifications

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 le ping commande pour voir si vous obtiendrez une réponse du serveur.

ping

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

5. Exécutez le auth ci-dessous suivi de votre mot de passe pour authentifier votre connexion à votre serveur Redis.

auth Qae9p_fY:YjdtJ7k

Vous obtiendrez un OK réponse lorsque l'authentification est réussie, comme celle ci-dessous.

6. Enfin, réexécutez le ping pour tester si vous avez authentifié votre connexion à votre serveur Redis.

ping

Vous obtiendrez maintenant le PONG réponse, 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.

Désactivation des commandes dangereuses pour protéger votre serveur Redis

Définir un mot de passe pour authentifier la connexion à votre serveur Redis ne signifie pas qu'il bénéficie d'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 et même effacer 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, ce sont 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 redis.conf fichier :

1. Ouvrez le redis.conf fichier dans votre éditeur de texte et recherchez le renommage de la commande section.

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

rename-command the-command ""

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

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 le config get commande pour tester que le CONFIG la commande est désactivée.

config get requirepass

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

Si le config get requirepass commande passe, il demande à votre serveur Redis le mot de passe 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 maintenant à désactiver les autres commandes dangereuses dans redis.conf fichier.

Bloquer la demande de connexion au serveur Redis avec un pare-feu

Une autre façon de sécuriser votre serveur Redis consiste à configurer un pare-feu. La configuration d'un pare-feu nécessite que vous n'autorisiez que le port requis pour chacun des services exécutés sur votre serveur.

Par exemple, si vous exécutez Redis sur votre serveur au port 6379 , alors ce port est ce qu'il vous suffit d'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 de pare-feu.

Pour configurer un pare-feu, vous devez d'abord installer 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, comme 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 ci-dessous pour continuer à exécuter la commande.

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

sudo ufw allow from 11.22.33.44 to any 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 status de votre pare-feu.

sudo ufw status

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

Désormais, tous les utilisateurs dont l'adresse IP est 11.22.33.44 peut se connecter à Redis via le port 6379 et devra s'authentifier avec un mot de passe. Vous pouvez ajouter des ports supplémentaires pour d'autres services de la même manière.

Conclusion

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

Grâce à ces nouvelles connaissances, vous pouvez profiter de tous les 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 ?


Linux
  1. Comment installer Python sur Linux

  2. Comment installer Java sur Linux

  3. Comment installer et sécuriser Redis sur Ubuntu 20.04

  4. Comment installer et sécuriser Redis sur Ubuntu 18.04

  5. Comment installer et configurer Redis sur Debian

Comment installer Grafana sur Rocky Linux

Comment installer FreeOffice sur Linux

Comment installer le langage Go sous Linux

Comment installer Redis sur Linux Mint 20

Comment installer et configurer Redis sur le système Linux

Comment effectuer une installation de Samba Active Directory sur Linux