Installer et sécuriser le serveur Redis sur Debian 10

Redis, également connu sous le nom de « Remote Dictionary Server », est une base de données open-source et en mémoire qui peut être utilisée comme base de données, cache et courtier de messages. Redis prend en charge diverses structures de données, comme les chaînes de caractères, les hachages, les listes, les ensembles et bien d’autres encore. Redis est écrit en langage de programmation C et fonctionne dans la plupart des systèmes POSIX comme Linux, Free BSD et OS X. Redis est capable d’exécuter des milliers de commandes par seconde. Redis est livré avec un riche ensemble de fonctionnalités, notamment la réplication, le basculement automatique, les scripts Lua, l’éviction LRU des clés, les transactions et bien d’autres encore.

Dans ce tutoriel, nous allons apprendre à installer et à sécuriser Redis sur un serveur Debian 10.

Exigences

  • Un serveur fonctionnant sous Debian 10.
  • Un mot de passe root est installé sur ton serveur.

Pour commencer

Avant de commencer, tu dois mettre à jour ton système avec la dernière version. Tu peux le faire en exécutant la commande suivante :

apt-get update -y
apt-get upgrade -y

Une fois que ton serveur est mis à jour, redémarre ton serveur pour appliquer les changements.

Installe Redis

Par défaut, Redis est disponible dans le référentiel Debian 10. Tu peux l’installer en exécutant la commande suivante :

apt-get install redis-server -y

Après avoir installé Redis, démarre le service Redis et active son démarrage après le redémarrage du système avec la commande suivante :

systemctl start redis-server
systemctl enable redis-server

Tu peux aussi vérifier l’état du serveur Redis avec la commande suivante :

systemctl status redis-server

Tu devrais obtenir la sortie suivante :

? redis-server.service - Advanced key-value store
   Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2019-09-06 05:57:45 EDT; 4s ago
     Docs: http://redis.io/documentation,
           man:redis-server(1)
  Process: 2284 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS)
 Main PID: 2285 (redis-server)
    Tasks: 4 (limit: 1138)
   Memory: 6.8M
   CGroup: /system.slice/redis-server.service
           ??2285 /usr/bin/redis-server 127.0.0.1:6379

Sep 06 05:57:45 debian systemd[1]: Starting Advanced key-value store...
Sep 06 05:57:45 debian systemd[1]: redis-server.service: Can't open PID file /run/redis/redis-server.pid (yet?) after start: No such file or di
Sep 06 05:57:45 debian systemd[1]: Started Advanced key-value store.

Par défaut, Redis écoute sur l’hôte local sur le port 6379. Tu peux le vérifier avec la commande suivante :

ps -ef | grep redis

Tu devrais voir la sortie suivante: :

redis     2285     1  0 05:57 ?        00:00:00 /usr/bin/redis-server 127.0.0.1:6379
root      2294   706  0 05:59 pts/0    00:00:00 grep redis

Ensuite, teste la connectivité de Redis avec la commande suivante :

redis-cli

Tu devrais voir le résultat suivant :

127.0.0.1:6379> 

Maintenant, vérifie la connectivité de Redis avec la commande ping :

127.0.0.1:6379> ping

Si tout va bien, tu devrais voir le résultat suivant :

PONG

Une fois que tu as terminé. Tu peux passer à l’étape suivante.

Configurer Redis comme un cache

Tu peux configurer Redis en tant que Cache en modifiant le fichier /etc/redis/redis.conf :

nano /etc/redis/redis.conf

Ajoute les lignes suivantes à la fin du fichier :

maxmemory 64mb
maxmemory-policy allkeys-lru

Lorsque la mémoire maximale de 64mb est atteinte. Redis supprimera toute clé selon l’algorithme LRU. Enregistre et ferme le fichier lorsque tu as terminé. Ensuite, redémarre le service Redis avec la commande suivante :

systemctl restart redis-server

Une fois que tu as terminé. Tu peux passer à l’étape suivante.

Configurer l’authentification Redis

Par défaut, tu peux exécuter n’importe quelle commande dans le shell Redis. Il est donc recommandé de configurer l’authentification Redis pour que les clients exigent un mot de passe avant d’exécuter une commande. Tu peux configurer l’authentification par mot de passe directement dans le fichier de configuration de Redis. Pour ce faire, ouvre le fichier /etc/redis/redis.conf avec ton éditeur préféré :

nano /etc/redis/redis.conf

Sous la section SECURITE, trouve la ligne suivante :

# requirepass foobared

Décommente-la et remplace-la par le mot de passe de ton choix, comme indiqué ci-dessous :

requirepass AlsW34%#df

Enregistre et ferme le fichier lorsque tu as terminé. Ensuite, redémarre le service Redis pour appliquer les changements de configuration :

systemctl restart redis-server

Maintenant, accède au shell Redis avec la commande suivante :

redis-cli

Maintenant, exécute la commande suivante sans t’authentifier :

127.0.0.1:6379> INFO server

Cela ne fonctionnera pas car tu ne t’authentifies pas. Tu devrais obtenir l’erreur suivante :

NOAUTH Authentication required.

Ensuite, exécute la commande suivante pour t’authentifier avec le mot de passe spécifié dans le fichier de configuration de Redis :

127.0.0.1:6379> AUTH AlsW34%#df

Tu devrais obtenir le résultat suivant :

OK

Maintenant, exécute à nouveau la commande précédente :

127.0.0.1:6379> INFO server

Elle s’exécutera avec succès et tu devrais voir la sortie suivante :

# Server
redis_version:5.0.3
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:afa0decbb6de285f
redis_mode:standalone
os:Linux 4.19.0-5-amd64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:8.3.0
process_id:2308
run_id:2cf0470a9492deddf98bcc72fa9ec94e941edf6c
tcp_port:6379
uptime_in_seconds:50
uptime_in_days:0
hz:10
configured_hz:10
lru_clock:7483371
executable:/usr/bin/redis-server
config_file:/etc/redis/redis.conf

Une fois que tu as terminé. Tu peux passer à l’étape suivante.

Renommer des commandes spécifiques

Pour des raisons de sécurité, il est recommandé de renommer certaines commandes qui sont considérées comme dangereuses.

Ici, nous allons renommer la commande « config ». La commande config est utilisée pour récupérer le mot de passe de Redis. Voyons cela à l’aide d’un exemple :

Tout d’abord, connecte-toi et authentifie le shell Redis avec la commande suivante :

redis-cli
127.0.0.1:6379> AUTH AlsW34%#df

Ensuite, récupère le mot de passe Redis avec la commande suivante :

127.0.0.1:6379> config get requirepass

Tu devrais obtenir le résultat suivant :

1) "requirepass"
2) "AlsW34%#df"
127.0.0.1:6379> 

Tu peux renommer la commande config en éditant le fichier /etc/redis/redis.conf :

nano /etc/redis/redis.conf

Trouve la ligne suivante :

# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52

Décommente et remplace par la chaîne de caractères de ton choix :

rename-command CONFIG H2sW_Config        

Sauvegarde et ferme le fichier. Ensuite, redémarre le service Redis avec la commande suivante :

systemctl restart redis-server

Ensuite, connecte-toi et authentifie le shell Redis avec la commande suivante :

redis-cli
127.0.0.1:6379> AUTH AlsW34%#df

Ensuite, récupère le mot de passe Redis avec la commande config :

127.0.0.1:6379> config get requirepass

Nous avons renommé cette commande, tu devrais donc obtenir l’erreur suivante :

(error) ERR unknown command `config`, with args beginning with: `get`, `requirepass`, 

Maintenant, exécute la commande renommée comme indiqué ci-dessous :

127.0.0.1:6379> H2sW_Config get requirepass

Tu devrais obtenir le résultat suivant :

1) "requirepass"
2) "AlsW34%#df"

Enfin, quitte le shell Redis avec la commande suivante :

127.0.0.1:6379> exit

Conclusion

Félicitations ! Tu as réussi à installer et à sécuriser le serveur Redis sur Debian 10. J’espère que tu as maintenant suffisamment de connaissances pour sécuriser ton serveur Redis avec l’authentification par mot de passe. N’hésite pas à me demander si tu as des questions.

Vous aimerez aussi...