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, telles que les chaînes, les hachages, les listes, les ensembles et bien d'autres. 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.
Dans ce tutoriel, nous apprendrons comment installer et sécuriser Redis sur le serveur Debian 10.
Exigences
- Un serveur exécutant Debian 10.
- Un mot de passe root est configuré sur votre serveur.
Mise en route
Avant de commencer, vous devrez mettre à jour votre système avec la dernière version. Vous pouvez le faire en exécutant la commande suivante :
apt-get update -y
apt-get upgrade -y
Une fois votre serveur mis à jour, redémarrez votre serveur pour appliquer les modifications.
Installer Redis
Par défaut, Redis est disponible dans le référentiel Debian 10. Vous pouvez l'installer en exécutant simplement la commande suivante :
apt-get install redis-server -y
Après avoir installé Redis, démarrez le service Redis et activez-le après le redémarrage du système avec la commande suivante :
systemctl start redis-server
systemctl enable redis-server
Vous pouvez également vérifier l'état du serveur Redis avec la commande suivante :
systemctl status redis-server
Vous devriez obtenir le résultat suivant :
? 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. Vous pouvez le vérifier avec la commande suivante :
ps -ef | grep redis
Vous devriez voir le résultat suivant :
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, testez la connectivité Redis avec la commande suivante :
redis-cli
Vous devriez voir le résultat suivant :
127.0.0.1:6379>
Maintenant, vérifiez la connectivité Redis avec la commande ping :
127.0.0.1:6379> ping
Si tout va bien, vous devriez voir le résultat suivant :
PONG
Une fois que vous avez terminé. Vous pouvez passer à l'étape suivante.
Configurer Redis en cache
Vous pouvez configurer Redis en cache en modifiant le fichier /etc/redis/redis.conf :
nano /etc/redis/redis.conf
Ajoutez les lignes suivantes à la fin du fichier :
maxmemory 64mb maxmemory-policy allkeys-lru
Lorsque la mémoire maximale de 64 Mo est atteinte. Redis supprimera toute clé conformément à l'algorithme LRU. Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, redémarrez le service Redis avec la commande suivante :
systemctl restart redis-server
Une fois que vous avez terminé. Vous pouvez passer à l'étape suivante.
Configurer l'authentification Redis
Par défaut, vous pouvez 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 des commandes. Vous pouvez configurer l'authentification par mot de passe directement dans le fichier de configuration de Redis. Pour cela, ouvrez le fichier /etc/redis/redis.conf avec votre éditeur préféré :
nano /etc/redis/redis.conf
Sous la section SÉCURITÉ, recherchez la ligne suivante :
# requirepass foobared
Décommentez et remplacez-le par le mot de passe souhaité, comme indiqué ci-dessous :
requirepass AlsW34%#df
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, redémarrez le service Redis pour appliquer les modifications de configuration :
systemctl restart redis-server
Maintenant, accédez au shell Redis avec la commande suivante :
redis-cli
Maintenant, exécutez la commande suivante sans vous authentifier :
127.0.0.1:6379> INFO server
Cela ne fonctionnera pas car vous ne vous authentifiez pas. Vous devriez obtenir l'erreur suivante :
NOAUTH Authentication required.
Ensuite, exécutez la commande suivante pour vous authentifier avec le mot de passe spécifié dans le fichier de configuration Redis :
127.0.0.1:6379> AUTH AlsW34%#df
Vous devriez obtenir le résultat suivant :
OK
Maintenant, exécutez à nouveau la commande précédente :
127.0.0.1:6379> INFO server
Cela fonctionnera avec succès et vous devriez 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 vous avez terminé. Vous pouvez passer à l'étape suivante.
Renommer des commandes spécifiques
Pour des raisons de sécurité, il est recommandé de renommer certaines commandes 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 Redis. Voyons avec un exemple :
Tout d'abord, connectez-vous et authentifiez-vous le shell Redis avec la commande suivante :
redis-cli
127.0.0.1:6379> AUTH AlsW34%#df
Ensuite, récupérez le mot de passe Redis avec la commande suivante :
127.0.0.1:6379> config get requirepass
Vous devriez obtenir le résultat suivant :
1) "requirepass" 2) "AlsW34%#df" 127.0.0.1:6379>
Vous pouvez renommer la commande de configuration en modifiant le fichier /etc/redis/redis.conf :
nano /etc/redis/redis.conf
Recherchez la ligne suivante :
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
Décommentez et remplacez par la chaîne souhaitée :
rename-command CONFIG H2sW_Config
Enregistrez et fermez le fichier. Ensuite, redémarrez le service Redis avec la commande suivante :
systemctl restart redis-server
Ensuite, connectez-vous et authentifiez-vous le shell Redis avec la commande suivante :
redis-cli
127.0.0.1:6379> AUTH AlsW34%#df
Ensuite, récupérez le mot de passe Redis avec la commande config :
127.0.0.1:6379> config get requirepass
Nous avons renommé cette commande pour que vous obteniez l'erreur suivante :
(error) ERR unknown command `config`, with args beginning with: `get`, `requirepass`,
Maintenant, exécutez la commande renommée comme indiqué ci-dessous :
127.0.0.1:6379> H2sW_Config get requirepass
Vous devriez obtenir le résultat suivant :
1) "requirepass" 2) "AlsW34%#df"
Enfin, quittez le shell Redis avec la commande suivante :
127.0.0.1:6379> exit
Conclusion
Toutes nos félicitations! vous avez installé et sécurisé avec succès le serveur Redis sur Debian 10. J'espère que vous avez maintenant suffisamment de connaissances pour sécuriser votre serveur Redis avec une authentification par mot de passe. N'hésitez pas à me demander si vous avez des questions.