Comment configurer SSH pour utiliser l'authentification à deux facteurs
Sécurisez votre accès SSH comme un pro avec l'authentification à deux facteurs (2FA) pour protéger encore plus efficacement vos connexions à distance.
Secure Shell (SSH), un protocole largement utilisé pour la connexion à distance sécurisée d'un ordinateur à un autre, offre un cryptage robuste pour protéger contre les accès non autorisés.
Cependant, avec la sophistication croissante des cybermenaces, s'appuyer uniquement sur l'authentification traditionnelle par mot de passe peut rendre les systèmes vulnérables aux attaques par force brute et au vol de mots de passe. C’est là qu’intervient l’authentification à deux facteurs (2FA).
Il ajoute une couche de sécurité supplémentaire en exigeant non seulement un mot de passe (quelque chose que vous connaissez), mais également un deuxième facteur, généralement quelque chose que vous possédez (comme un appareil mobile) ou quelque chose que vous êtes (comme une empreinte digitale).
L'intégration de 2FA avec SSH réduit considérablement le risque d'accès non autorisé à vos systèmes, même si un mot de passe est compromis. Alors laissez-nous vous montrer comment procéder.
Étape 1 : Installez l'application 2FA Authenticator sur votre téléphone
Pour commencer, vous devez installer une application d'authentification 2FA sur votre appareil mobile pour utiliser l'authentification à deux facteurs avec SSH. Cette application génère des codes à usage unique et urgents qui servent de deuxième facteur dans le processus d'authentification.
Les choix populaires pour ces applications incluent Google Authenticator ou Microsoft Authenticator. Ils sont disponibles pour les appareils Android et iOS et peuvent être téléchargés depuis les magasins d'applications respectifs.
- Google Authenticateur pour Android
- Google Authenticateur pour iOS
- Authentificateur Microsoft pour Android
- Authentificateur Microsoft pour iOS
Pour ce guide, nous utiliserons l'application Google Authenticator. Il est important de l’avoir préinstallé sur votre appareil mobile, car un peu plus bas à l’étape 3, nous l’utiliserons lors de la configuration initiale de 2FA avec votre serveur SSH.
Étape 2 : Installez le module d'authentification PAM de Google
Google Authenticator est un outil d'authentification logiciel qui implémente des services d'authentification à deux facteurs (2FA) à l'aide de l'algorithme de mot de passe à usage unique basé sur le temps (TOTP) et de l'algorithme de mot de passe à usage unique basé sur HMAC (HOTP) pour authentifier les utilisateurs d'applications logicielles. .
Pour préparer votre système Linux à cela, vous devez installer le package requis appelé « libpam-google-authenticator » ou « google-authenticator », selon votre distribution. Mais quelle est la fonction de ce package ?
En bref, il fournit un module logiciel pour Linux qui intègre Google Authenticator dans le système Pluggable Authentication Module (PAM). PAM est un framework permettant d'intégrer plusieurs schémas d'authentification de bas niveau dans une API de haut niveau, permettant d'implémenter diverses méthodes d'authentification dans des programmes nécessitant une vérification de l'utilisateur.
Ubuntu/Debian
Ubuntu, Debian et d'autres distributions basées sur celles-ci, telles que Linux Mint ou Pop!_OS, peuvent installer Google Authenticator à l'aide de la commande apt ci-dessous :
sudo apt install libpam-google-authenticator
Rocky Linux/AlmaLinux
Pour les distributions Linux d'entreprise comme Rocky et Alma, Google Authenticator est disponible via le référentiel EPEL. Vous devez donc d’abord l’ajouter à votre système (si ce n’est pas déjà fait), puis installer Google Authenticator lui-même.
sudo dnf install epel-release
sudo dnf install google-authenticator
Feutre
Les utilisateurs de Fedora peuvent trouver Google Authenticator dans les référentiels de distribution officiels. Pour l'installer, exécutez la commande suivante :
sudo dnf install google-authenticator
Arch Linux
Google Authenticator est disponible dans les dépôts de la distribution pour les dérivés Arch et Arch. Pour l'installer, exécutez :
sudo pacman -S libpam-google-authenticator
Étape 3 : Configurer Google Authenticator
Après avoir installé avec succès Google Authenticator, nous sommes maintenant prêts à le configurer. Pour ce faire, ouvrez le terminal et exécutez la commande ci-dessous.
google-authenticator
À partir de là, vous devrez répondre à quelques questions, la première étant : « Voulez-vous que les jetons d'authentification soient basés sur le temps ? » Répondez « o » à activer les mots de passe à usage unique basés sur le temps (TOTP).
Un code QR s'affichera sur l'écran de votre terminal. C'est là qu'intervient l'application Google Authenticator sur votre appareil mobile. Ouvrez-le et cliquez sur l'icône « + » dans le coin inférieur droit.
Vous rencontrerez deux options : "Scanner un code QR" et "Entrer une clé de configuration". Étant donné que le code QR affiché dans le terminal peut souvent être trop volumineux et difficile à scanner directement depuis votre appareil, nous optons pour l'option « Entrer une clé de configuration ». Allez-y et cliquez dessus.
Dans le champ « Compte », saisissez le nom de votre choix, par exemple « my2fa ». Ensuite, dans le champ « Clé » de l'application Google Authenticator de votre appareil mobile, saisissez le code de la ligne « Votre nouvelle clé secrète est » depuis le terminal. Enfin, cliquez sur le bouton « Ajouter ».
En réponse, l'application générera un code à 6 chiffres.
Entrez ce code dans le terminal et appuyez sur « Entrée ».
Vous devriez recevoir un message « Code confirmé ». De plus, vous recevrez cinq codes d’urgence que nous vous recommandons de noter et de conserver dans un endroit sûr.
Ces codes sont uniques et vous accordent un accès SSH, par exemple, lorsque vous n'avez pas votre appareil mobile à portée de main pour générer du code. Répondez par « o » lorsqu'on vous demande de mettre à jour le fichier « .google_authenticator ».
À la question suivante, pour augmenter la sécurité, répondez encore une fois par « o », confirmant que vous souhaitez désactiver les utilisations multiples du même code.
L'option de configuration suivante de Google Authenticator concerne la possibilité d'utiliser des codes générés précédemment si vous n'avez pas pu respecter le délai de 30 secondes, qui correspond à la validité de chaque token à partir du moment de sa génération.
Toutefois, étant donné que cette option réduit la sécurité, nous vous recommandons fortement de répondre par « n ».
Enfin, répondez par « y » pour activer la limite de débit, autorisant jusqu'à trois tentatives de connexion dans une fenêtre de 30 secondes, minimisant ainsi les chances de réussite d'une attaque par force brute sur votre serveur SSH.
Nous avons terminé la configuration de Google Authenticator, il est donc maintenant temps de procéder à la configuration du serveur SSH lui-même pour permettre l'authentification à deux facteurs.
Étape 4 : Configurer SSH pour utiliser l'authentification à deux facteurs
Ouvrez le fichier de configuration du serveur SSH pour le modifier avec votre éditeur de texte de terminal préféré :
sudo vim /etc/ssh/sshd_config
La chose à faire ici est d'ajouter/modifier les deux valeurs de configuration suivantes :
KbdInteractiveAuthentication yes
ChallengeResponseAuthentication yes
Si vous trouvez l'un des deux paramètres dans le fichier, remplacez leurs valeurs par « oui ». S'ils ne sont pas là, ajoutez-les simplement à la fin du fichier comme dans l'exemple ci-dessous, puis enregistrez et quittez le fichier.
Maintenant, décomposons ce que signifient ces deux options :
- KbdInteractiveAuthentication – Lorsqu'il est activé dans SSH, il permet au serveur de s'engager dans le processus interactif 2FA. Par exemple, après avoir saisi votre mot de passe (le premier facteur), le serveur peut vous demander un code de votre application 2FA (le deuxième facteur).
- ChallengeResponseAuthentication – Lorsqu'il est activé, le serveur SSH peut utiliser des méthodes de défi-réponse pour l'authentification. Cela inclut des méthodes telles que l'authentification interactive au clavier, où l'utilisateur est invité à saisir des informations en réponse à un défi. En d’autres termes, dans ce cas, cela permet au serveur SSH de demander à l’utilisateur de saisir un code généré par une application 2FA.
Enfin, redémarrez le serveur SSH, puis nous pourrons passer à la dernière étape de configuration de l'authentification à deux facteurs pour notre serveur SSH.
sudo systemctl restart ssh
Étape 5 : Configuration de PAM pour l'authentification à deux facteurs de SSH
PAM (Pluggable Authentication Modules) joue un rôle crucial dans le processus d'authentification SSH, fournissant un cadre flexible et modulaire pour l'authentification. Cela signifie qu'au lieu que SSH ait ses méthodes d'authentification codées en dur, il utilise PAM pour intégrer divers mécanismes d'authentification selon les besoins.
La dernière étape consiste donc à le configurer pour autoriser SSH 2FA. Pour cela, on ouvre son fichier de configuration :
sudo vim /etc/pam.d/sshd
Ensuite, nous devrions ajouter la ligne suivante au début :
auth required pam_google_authenticator.so
Enregistrez le fichier, quittez et passez à la partie finale et la plus excitante.
Étape 6 : tester SSH 2FA
Maintenant, vérifions si tout fonctionne correctement. Pour ce faire depuis une machine distante, essayez d'établir une connexion SSH au serveur configuré pour utiliser l'authentification à deux facteurs.
Vous serez invité à saisir le code de vérification. Ouvrez l'application Google Authenticator sur votre appareil mobile et saisissez dans le terminal le code à 6 chiffres qu'il affiche. Lorsque vous tapez, cela n’apparaît pas à l’écran.
Ensuite, vous devrez saisir le mot de passe de l’utilisateur. Une fois que vous avez entré le bon, vous obtiendrez un accès SSH au serveur.
Si vous regardez ce qui se passe sous le capot, dans les journaux systemd, vous constaterez que le processus de connexion a bien fonctionné. Le code d’authentification à deux facteurs de Google Authenticator et le mot de passe de l’utilisateur ont été acceptés avec succès.
Cependant, même si vous saisissez le bon mot de passe mais utilisez le mauvais code, votre connexion SSH au serveur ne sera pas autorisée, comme le montrent les journaux systemd.
Super travail ! Vous avez configuré avec succès l'authentification SSH à deux facteurs, rendant votre serveur beaucoup plus sûr et bien protégé contre les accès non autorisés.
Facultatif : impliquer l'authentification par clé dans SSH 2FA
D’accord, nous avons bien progressé, mais nous pouvons encore améliorer les choses. Ajoutons une clé SSH au processus d'authentification à deux facteurs. Cela ajoute une couche de sécurité supplémentaire et, en même temps, évite l'approche moins sécurisée consistant à s'appuyer sur les mots de passe des utilisateurs.
Pour y parvenir, nous supposons que vous disposez déjà d’une paire de clés privées et publiques générées et que vous disposez d’une authentification SSH sans mot de passe sur le serveur configuré et en cours d’exécution. Cependant, si vous n’en avez pas déjà un, nous vous proposons un guide pour vous aider à le faire rapidement et simplement. Maintenant, revenons au sujet.
Tout d'abord, ouvrez le fichier « /etc/ssh/sshd_config » et définissez l'option « PasswordAuthentication » sur « no », comme indiqué dans le image ci-dessous.
Cela indique au serveur SSH de désactiver l'authentification par mot de passe afin que les utilisateurs ne puissent pas se connecter en utilisant leur nom d'utilisateur et leur mot de passe habituels. Au lieu de cela, ils doivent utiliser des méthodes d’authentification alternatives, comme l’authentification par clé SSH.
Ensuite, ajoutez l'option ci-dessous à votre fichier « sshd_config ».
AuthenticationMethods publickey,keyboard-interactive
- AuthenticationMethods : spécifie les méthodes d'authentification qui doivent être exécutées avec succès pour qu'un utilisateur puisse obtenir l'accès.
- publickey : ceci indique que la première méthode d'authentification est basée sur l'authentification par clé publique.
- clavier interactif : il s'agit de la deuxième méthode d'authentification requise une fois la méthode « publickey » terminée avec succès. Cela implique généralement que l'utilisateur saisisse des informations en réponse à une invite. Dans notre cas, il s'agit d'introduire un code 2FA généré par l'application Google Authenticator.
Enregistrez le fichier, fermez-le et redémarrez le service SSH.
sudo systemctl restart ssh
Maintenant, ouvrez le fichier « /etc/pam.d/sshd », recherchez la ligne « @include common-auth » et mettez un commentaire (#) avant il. Cela empêche PAM d'utiliser le mot de passe du compte de l'utilisateur pour se connecter.
Essayez maintenant de vous reconnecter via SSH – et la magie opère ! L'invite vous demandant de saisir un mot de passe utilisateur a disparu.
Tapez simplement le code à 6 chiffres généré par l'application Google Authenticator sur votre appareil mobile et vous serez connecté. La clé SSH sera envoyée automatiquement au serveur en arrière-plan.
Cependant, encore une fois, nous précisons que vous devez configurer une authentification sans mot de passe sur le serveur SSH avant de mettre en œuvre cette méthode.
Conclusion
La mise en place d'une authentification à deux facteurs (2FA) pour l'accès SSH est essentielle pour renforcer la sécurité de vos connexions à distance. Cet article détaille les étapes de configuration de Google Authenticator, de modification des paramètres du serveur SSH et de configuration de PAM pour le 2FA de SSH.
Le résultat est que votre serveur SSH est désormais bien protégé contre les attaques par force brute et les tentatives d'accès non autorisées. De plus, l’intégration de l’authentification par clé dans le processus SSH 2FA ajoute une couche de sécurité, allant au-delà du seul recours aux mots de passe.
Merci pour votre temps ! Comme toujours, vos retours et commentaires sont les bienvenus.