Les mots de passe deviennent vulnérables avec l'environnement de cybersécurité en constante évolution. Plus que jamais, les systèmes deviennent sujets aux attaques par force brute. Les utilisateurs permettent également aux pirates d'infiltrer facilement leurs systèmes en sécurisant les systèmes avec des mots de passe faibles et souvent devinables. L'authentification à 2 facteurs est désormais monnaie courante et offre une couche de protection supplémentaire à l'aide de codes OTP pour garantir que c'est bien l'utilisateur qui se connecte au système.
Une autre façon de sécuriser votre serveur consiste à configurer une authentification SSH sans mot de passe sur votre serveur. Cela utilise l'authentification SSH à clé publique où une paire de clés SSH est générée sur le système local. La paire de clés est composée d'une clé SSH privée et d'une clé SSH publique. La clé privée reste sur le système local tandis que la clé publique est téléchargée sur le système distant. Lors de l'authentification, un échange de clé a lieu entre la clé publique enregistrée sur le système distant et la clé privée sur le système local. Les connexions ultérieures sont ainsi sécurisées et aucun mot de passe ne vous sera demandé.
Dans ce guide, nous vous expliquons comment configurer l'authentification SSH par mot de passe en 3 étapes simples.
Laboratoire de configuration SSH sans mot de passe
À des fins de démonstration, nous utiliserons la configuration de laboratoire suivante :
Local Linux system - 192.168.2.104
Remote Linux system - 192.168.2.108
Il serait prudent de vous assurer également que vous pouvez accéder au système distant à partir de votre système local en utilisant l'authentification par mot de passe SSH.
Commençons !
Étape 1. Générer une paire de clés SSH
Dès le départ, nous allons générer une paire de clés SSH qui sera stockée dans le répertoire personnel. Alors, invoquez le ssh-keygen commande comme indiqué. Ici, nous créons une paire de clés de 4096 bits.
$ ssh-keygen -b 4096
Acceptez les valeurs par défaut en appuyant simplement sur ENTER. Vous pouvez trouver la paire de clés SSH dans le fichier ~/.ssh répertoire qui est un répertoire caché dans votre dossier personnel.
Juste pour être sûr, utilisez la commande ls pour vérifier la présence des clés SSH.
$ ls .ssh
La clé privée est désignée par id_rsa tandis que id_rsa.pub est la clé publique. Ce sont des clés cryptographiques qui sont cryptées. Nous copierons plus tard la clé publique sur le système distant.
Étape 2. Copiez la paire de clés SSH sur le système distant
Ensuite, vous devez copier et enregistrer la clé publique sur le système Linux distant. Pourquoi fait-on ça? Dans l'authentification par clé publique, une poignée de main d'authentification a lieu entre la clé publique sur le système distant et la clé privée résidant sur le système local. Cela garantit que tout le trafic ultérieur entre le système hôte local et le système distant est chiffré.
Pour copier la clé publique SSH, exécutez le ssh-copy-id commande comme suit.
$ ssh-copy-id [email protected]
Dans notre cas, ce sera :
$ ssh-copy-id [email protected]
Pour continuer la connexion, tapez « Yes » et appuyez sur ENTER. Ensuite, fournissez le mot de passe au système distant pour vous connecter et copiez la clé publique SSH.
La clé SSH publique est ajoutée à un fichier unique appelé authorized_keys dans le répertoire personnel du compte utilisateur auquel vous vous connectez. Le chemin complet vers ce fichier est ~/.ssh/authorized_keys
Après avoir réussi à copier la clé SSH, vous pouvez maintenant vous connecter au système distant en utilisant l'authentification par clé publique comme suit.
$ ssh [email protected]
À partir de l'extrait ci-dessous, vous pouvez voir que nous nous sommes connectés au système distant sans même être invité à entrer un mot de passe. Génial !
Comme mentionné précédemment, la clé publique est enregistrée dans le fichier ~/.ssh/authorized_keys chemin.
Étape 3. Désactiver l'authentification par mot de passe (facultatif)
Si vous souhaitez renforcer la sécurité de votre système distant, vous pouvez envisager de désactiver l'authentification par mot de passe. Ce faisant, vous vous assurez que vous êtes le seul à pouvoir accéder au système à l'aide de la clé privée installée sur votre système local. La clé doit toujours être top secrète. Ne le partagez jamais avec qui que ce soit, de peur que votre système ne soit compromis.
Sur l'hôte distant, ouvrez l'accès à /etc/sshd_config fichier a montré.
$ sudo vim /etc/sshd_config
Localisez le PasswordAuthentication paramètre et réglez-le sur non comme indiqué.
Ensuite, assurez-vous que l'authentification par clé publique est activée comme indiqué.
Pour que les modifications persistent, effectuez un redémarrage du service SSH comme suit.
$ sudo systemctl restart ssh
Pour démontrer que l'authentification par mot de passe est désactivée, nous allons essayer d'accéder au serveur à l'aide du client Putty SSH. Indiquez l'adresse du système distant et appuyez sur "Ouvrir"
Fournissez le nom d'utilisateur distant et appuyez sur ENTRÉE. Cette fois-ci, vous obtenez une authentification puisque nous avons désactivé l'authentification par mot de passe.
Conclusion
L'authentification par clé publique est un moyen inviolable de connecter et de renforcer votre serveur. Il élimine les vecteurs d'attaque tels que les attaques par mot de passe par force brute qui sont inquiétantes lorsque votre système dispose d'une authentification par mot de passe.