Sécurisez votre Raspberry Pi - Sécurité du protocole SSH

Jinku Hu 14 avril 2022
Sécurisez votre Raspberry Pi - Sécurité du protocole SSH

Cet article présentera plusieurs méthodes pour sécuriser votre connexion à distance SSH à Raspberry Pi contre les failles de sécurité courantes.

Renforcer la configuration SSH pour sécuriser l’accès à distance sur Raspberry Pi

Le SSH est une méthode courante d’accès aux hôtes distants pour l’administration du système ou d’autres tâches.

Il est souvent utilisé pour accéder à distance aux appareils Raspberry Pi sur le réseau local. Il est donc essentiel de sécuriser la méthode d’authentification SSH et certains de ses paramètres de configuration pour s’assurer que l’attaquant n’accède pas à votre appareil.

Si vous venez d’entendre parler du protocole d’accès à distance SSH, nous vous suggérons de consulter d’abord notre article introduction sur ce sujet, puis de suivre les instructions suivantes.

La connexion SSH utilise par défaut un schéma d’authentification nom d’utilisateur/mot de passe, que les attaquants peuvent forcer brutalement. Par conséquent, il est recommandé de passer à l’authentification par clé publique et même de la rendre obligatoire pour toutes les sessions.

Au début, vous devez générer une paire de clés publiques si vous n’en avez pas pour la machine hôte qui accédera au Raspberry Pi en utilisant SSH. Cette dernière peut être effectuée à l’aide de l’utilitaire de ligne de commande ssh-keygen, qui est inclus sur la plupart des systèmes Linux/BSD dans le cadre de la boîte à outils OpenSSH.

La commande suivante génère la paire de clés ed25519, et elle est considérée comme l’un des algorithmes sûrs pour le moment :

ssh-keygen -o -a 256 -t ed25519 -C "$(hostname)-$(date +'%d-%m-%Y')"

La commande précédente vous demandera de spécifier un nom de fichier de clé, mais vous pouvez appuyer sur Entrée pour utiliser le nom par défaut si vous générez des clés publiques pour la première fois.

Il vous demandera d’entrer une phrase de passe, ce qui est fortement recommandé si vous souhaitez rendre le travail de l’attaquant plus difficile. La phrase de passe spécifiée sera utilisée pour vérifier votre identité à chaque nouvelle session d’accès à distance.

Notez que cette phrase de passe n’est pas automatiquement enregistrée dans un fichier. Par conséquent, vous devez vous en souvenir si vous devez utiliser la paire de clés publiques générée à l’avenir.

Par défaut, deux fichiers de clé générés se trouvent dans le répertoire ~/.ssh/, nommés id_ed25519 et id_ed25519.pub. Vous ne devez pas partager le contenu de id_ed25519 avec qui que ce soit, mais copiez généralement le contenu de id_ed25519.pub sur n’importe quelle machine (par exemple, Raspberry Pi) sur laquelle vous devez établir une connexion SSH.

Ensuite, vous pouvez vous connecter à une console Raspberry Pi et configurer les paramètres du serveur SSH. Notez que les instructions suivantes supposent que vous avez précédemment activé le serveur SSH sur Pi.

Dans un premier temps, nous devons copier le contenu du fichier id_ed25519.pub.. au fichier /home/pi/.ssh/authorized_keys sur Raspberry Pi. Ce dernier fichier peut ne pas exister sur le Pi, vous devrez donc peut-être le créer manuellement.

Alternativement, vous pouvez copier le fichier en utilisant la commande scp sur la machine hôte à partir de laquelle vous avez un accès SSH au Pi.

Notez que vous devez modifier l’adresse IP du Pi dans la commande suivante et changer le nom du fichier source si vous avez spécifié un nom de fichier de clé personnalisé à l’invite de commande ssh-keygen.

scp ~/.ssh/id_ed25519.pub pi@192.168.0.12:/home/pi/.ssh/authorized_keys

Une fois copié avec succès, vous pouvez passer à l’édition du fichier /etc/ssh/sshd_config sur le Raspberry Pi OS. Cette étape nécessitera des privilèges sudo pour chaque commande.

Ouvrez le fichier sshd_config à l’aide de n’importe quel éditeur de texte (avec sudo) avec lequel vous êtes à l’aise et décommentez/insérez les lignes suivantes comme indiqué et enregistrez les modifications :

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

PubkeyAuthentication yes
AuthorizedKeysFile    .ssh/authorized_keys .ssh/authorized_keys2

PasswordAuthentication no
ChallengeResponseAuthentication no

Après la modification du fichier de configuration, vous pouvez redémarrer le service sshd avec la commande suivante pour que les changements prennent effet :

sudo systemctl restart sshd.service

Vous pouvez maintenant vous reconnecter au Pi en utilisant SSH, et il devrait automatiquement vous connecter au système. Cependant, vous serez toujours invité à saisir une phrase secrète de clé publique si vous l’avez spécifiée lors de la commande ssh-keygen.

Changer le port par défaut pour le serveur SSH sur Raspberry Pi OS

Une autre mesure de sécurité utile consiste à modifier le port de service par défaut 22 pour le SSH. Vous pouvez modifier le port par défaut dans le fichier /etc/ssh/sshd_config que nous avons modifié dans les étapes précédentes.

Cette fois, nous allons décommenter et modifier la ligne suivante :

Port 60001

Vous pouvez choisir le numéro de port parmi les ports de service privés dans la plage - 49152-65535. Il est peu probable qu’il entre en conflit avec d’autres services exécutés sur le système.

Notez que les lignes précédentes sont généralement déjà incluses dans le fichier sshd_config mais sont commentées en utilisant le caractère # comme préfixe. Vous pouvez décommenter n’importe lequel d’entre eux en supprimant ce préfixe.

N’oubliez pas non plus d’enregistrer les modifications apportées au fichier et de redémarrer le service SSH avec la commande systemctl restart comme indiqué dans les étapes précédentes. De plus, vous devrez ajouter le numéro de port à votre commande ssh pour accéder au Raspberry Pi à partir d’autres hôtes comme suit :

ssh pi@192.168.0.12 -p 600001
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Article connexe - Raspberry Pi