Introduction

Redis est une base de données de valeurs-clés en mémoire renommée pour sa flexibilité, ses performances et son vaste support linguistique. Ce didacticiel de démarrage rapide est conçu pour vous apprendre à installer, configurer et sécuriser Redis sur un serveur Ubuntu 20.04.

Conditions préalables

redis illustration for: Conditions préalables

Pour suivre ces instructions, vous aurez besoin d'accéder à un serveur Ubuntu 20.04 doté d'un non-root user avec des privilèges sudo et un pare-feu configuré avec ufw. Vous pouvez configurer ceci en suivant notre Guide de configuration initiale du serveur pour Ubuntu 20.04.

Étape 1 — Installation et configuration de Redis

Commencez par mettre à jour votre cache local de package apt :

				
					
sudo apt update

				
			

Installez ensuite Redis en saisissant ce qui suit :

				
					
sudo apt install redis-server

				
			

Ensuite, ouvrez le fichier de configuration Redis avec votre éditeur de texte favori :

				
					
sudo nano /etc/redis/redis.conf

				
			

Dans le fichier, recherchez la directive supervised qui vous permet de déclarer un système init qui gérera Redis en tant que tant Étant donné que vous exécutez Ubuntu, qui utilise le système init systemd, remplacez sa valeur no par systemd :

				
					
[label /etc/redis/redis.conf]

. . .



# If you run Redis from upstart or systemd, Redis can interact with your

# supervision tree. Options:

# supervised no - no supervision interaction

# supervised upstart - signal upstart by putting Redis into SIGSTOP mode

# supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET

# supervised auto - detect upstart or systemd method based on

# UPSTART_JOB or NOTIFY_SOCKET environment variables

# Note: these supervision methods only signal "process is ready."

# They do not enable continuous liveness pings back to your supervisor.

supervised <^>systemd<^>



. . .

				
			

Enregistrez et fermez le fichier lorsque vous avez terminé. Si vous avez modifié le fichier avec nano, faites-le en appuyant sur CTRL + X, Y, puis sur ENTER.

Ensuite, redémarrez le service Redis pour valider les modifications que vous avez apportées au fichier de configuration :

				
					
sudo systemctl restart redis.service

				
			

Pour vérifier si Redis fonctionne correctement, connectez-vous au serveur à l'aide de redis-cli, le client de la ligne de commande de Redis :

				
					
redis-cli

				
			

Dans l'invite qui suit, testez la connectivité avec la commande ping :

				
					
ping

				
			
				
					
[secondary_label Output]

PONG

				
			

Ce résultat confirme que la connexion au serveur est active. Ensuite, vérifiez que vous pouvez configurer des clés en exécutant les commandes suivantes :

				
					
set test "It's working!"

				
			
				
					
[secondary_label Output]

OK

				
			

Récupérez la valeur en saisissant :

				
					
get test

				
			

En supposant que tout fonctionne correctement, vous pourrez récupérer la valeur que vous avez sauvegardée :

				
					
[secondary_label Output]

"It's working!"

				
			

Après avoir confirmé que la valeur est récupérable, quittez l'invite Redis pour revenir au shell :

				
					
exit

				
			

Étape 2 — Configuration d'un mot de passe Redis

Vous pouvez configurer un mot de passe Redis directement dans le fichier de configuration de Redis, /etc/redis/redis.conf. Ouvrez à nouveau ce fichier avec votre éditeur favori :

				
					
sudo nano /etc/redis/redis.conf

				
			

Faites défiler l'écran jusqu'à la section SECURITY et recherchez une directive commentée indiquant ce qui suit :

				
					
[label /etc/redis/redis.conf]

. . .

# requirepass foobared

. . .

				
			

Décommentez-la en supprimant le # et remplacez foobared par un mot de passe sécurisé :

				
					
[label /etc/redis/redis.conf]

. . .

requirepass <^>your_redis_password<^>

. . .

				
			

Une fois le mot de passe configuré, enregistrez et fermez le fichier, puis redémarrez Redis :

				
					
sudo systemctl restart redis.service

				
			

Pour vérifier si le mot de passe fonctionne, ouvrez le client Redis :

				
					
redis-cli

				
			

Ci-après vous voyez une séquence de commandes qui permet de tester le bon fonctionnement du mot de passe Redis. La première commande essaie de définir une clé sur une valeur avant l'authentification :

				
					
set key1 10

				
			

Cela ne fonctionnera pas si vous ne procédez pas à l'authentification. Redis renverra alors une erreur :

				
					
[secondary_label Output]

(error) NOAUTH Authentication required.

				
			

La commande suivante procède à l'authentification avec le mot de passe spécifié dans le fichier de configuration Redis :

				
					
auth <^>your_redis_password<^>

				
			

Redis valide :

				
					
[secondary_label Output]

OK

				
			

Après cela, la ré-exécution de la commande précédente sera probante :

				
					
set key1 10

				
			
				
					
[secondary_label Output]

OK

				
			

get key1 interroge Redis pour obtenir la valeur de la nouvelle clé.

				
					
get key1

				
			
				
					
[secondary_label Output]

"10"

				
			

Après avoir confirmé que vous êtes en mesure d'exécuter des commandes dans le client Redis suite à l'authentification, vous pouvez quitter ​​redis-cli​​​ ​​​:

				
					
quit

				
			

Étape 3 - Renommer les commandes dangereuses

Redis intègre une autre fonctionnalité de sécurité qui consiste à renommer ou à désactiver complètement certaines commandes considérées comme dangereuses. Voici certaines des commandes considérées comme dangereuses : FLUSHDB, FLUSHALL, KEYS, PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM, RENAME et DEBUG. En désactivant ou en renommant ces commandes ainsi que d'autres, vous rendez toute reconfiguration, destruction ou suppression de vos données plus difficile aux utilisateurs non autorisés.

Pour renommer ou désactiver les commandes Redis, rouvrez le fichier de configuration :

				
					
sudo nano /etc/redis/redis.conf

				
			

[warning]

Attention : les étapes suivantes qui vous montrent de quelle manière désactiver et renommer des commandes sont données à titre d'exemple. Vous devez décider de désactiver ou de renommer uniquement les commandes qui ont du sens pour vous. Vous pouvez consulter la liste complète des commandes par vous-même et déterminer de quelle manière elles peuvent être utilisées à mauvais escient sur redis.io/commands.

Pour désactiver une commande, renommez-la simplement dans une chaîne de caractères vide (indiquée par une paire de guillemets sans aucun caractère entre eux), comme illustré ci-dessous :

				
					
[label /etc/redis/redis.conf]

. . .

# It is also possible to completely kill a command by renaming it into

# an empty string:

#

<^>rename-command FLUSHDB ""<^>

<^>rename-command FLUSHALL ""<^>

<^>rename-command DEBUG ""<^>

. . .

				
			

Pour renommer une commande, donnez-lui un autre nom comme indiqué dans les exemples ci-dessous. Les commandes renommées doivent être difficiles à deviner pour les autres, mais faciles à retenir pour vous :

				
					
[label /etc/redis/redis.conf]

. . .

# rename-command CONFIG ""

<^>rename-command SHUTDOWN SHUTDOWN_MENOT<^>

<^>rename-command CONFIG ASC12_CONFIG<^>

. . .

				
			

Sauvegardez vos modifications et fermez le fichier.

Après avoir renommé une commande, appliquez la modification en redémarrant Redis :

				
					
sudo systemctl restart redis.service

				
			

Pour tester la nouvelle commande, saisissez la ligne de commande Redis :

				
					
redis-cli

				
			

Puis procédez à l'authentification :

				
					
auth <^>your_redis_password<^>

				
			
				
					
[secondary_label Output]

OK

				
			

En supposant que vous avez renommé la commande CONFIG avec ASC12_CONFIG comme dans l'exemple précédent, essayez d'utiliser la commande d'origine CONFIG. L'opération devrait échouer, car vous l'avez renommée :

				
					
config get requirepass

				
			
				
					
[secondary_label Output]

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

				
			

Toutefois, en saisissant la commande renommée, cela devrait fonctionner. Elle n'est pas sensible à la casse :

				
					
asc12_config get requirepass

				
			
				
					
[secondary_label Output]

1) "requirepass"

2) "<^>your_redis_password<^>"

				
			

Conclusion

Au cours de ce didacticiel de démarrage rapide, vous avez installé et configuré Redis, vérifié que votre installation Redis fonctionne correctement et utilisé ses fonctions de sécurité intégrées pour le rendre moins vulnérable aux attaques d'utilisateurs malveillants.