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 vos connexions à distance de manière encore plus efficace.
Le Shell sécurisé (SSH), un protocole largement utilisé pour la connexion à distance sécurisée d'un ordinateur à un autre, offre un chiffrement robuste pour protéger contre l'accès non autorisé.
Cependant, avec la sophistication croissante des menaces cybernétiques, compter uniquement sur l'authentification 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).
Cela ajoute une couche de sécurité supplémentaire en exigeant non seulement un mot de passe (ce que vous savez) mais aussi un deuxième facteur, généralement quelque chose que vous avez (comme un appareil mobile) ou quelque chose que vous êtes (comme une empreinte digitale).
L'intégration de l'authentification à deux facteurs (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, montrons-vous comment le faire.
Étape 1 : Installez l'application d'authentification 2FA 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 sensibles au temps qui servent de deuxième facteur dans le processus d'authentification.
Les choix populaires pour de telles applications incluent Google Authenticator ou Microsoft Authenticator. Elles sont disponibles pour les appareils Android et iOS et peuvent être téléchargées depuis les magasins d'applications respectifs.
- Google Authenticator pour Android
- Google Authenticator pour iOS
- Microsoft Authenticator pour Android
- Microsoft Authenticator pour iOS
Pour ce guide, nous allons utiliser l'application Google Authenticator. Il est important de l'avoir préinstallée sur votre appareil mobile, car un peu plus loin, à l'étape 3, nous l'utiliserons lors de la configuration initiale de la 2FA avec votre serveur SSH.
Étape 2 : Installer le module d'authentification PAM de Google
Google Authenticator est un outil d'authentification basé sur un logiciel qui met en œuvre des services d'authentification à deux facteurs (2FA) en utilisant l'algorithme de mot de passe à usage unique basé sur le temps (TOTP) et 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 paquet requis appelé « libpam-google-authenticator » ou « google-authenticator, selon votre distribution. Mais quelle est la fonction de ce paquet ?
En résumé, il fournit un module logiciel pour Linux qui intègre Google Authenticator dans le système de Module d'Authentification Pluggable (PAM). PAM est un cadre permettant d'intégrer plusieurs systèmes d'authentification de bas niveau dans une API de haut niveau, permettant ainsi la mise en œuvre de diverses méthodes d'authentification dans les programmes nécessitant une vérification de l'utilisateur.
Ubuntu/Debian
Ubuntu, Debian et d'autres distributions basées sur ceux-ci, tels que Linux Mint ou Pop!_OS, peuvent installer Google Authenticator en utilisant la commande apt ci-dessous :
sudo apt install libpam-google-authenticatorRocky Linux/AlmaLinux
Pour les distributions Linux d'entreprise comme Rocky et Alma, Google Authenticator est disponible via le dépôt EPEL. Vous devez donc d'abord l'ajouter à votre système (si ce n'est pas déjà fait) et ensuite installer le Google Authenticator lui-même.
sudo dnf install epel-release
sudo dnf install google-authenticatorFedora
Les utilisateurs de Fedora peuvent trouver Google Authenticator dans les dépôts officiels de distribution. Pour l'installer, exécutez la commande suivante :
sudo dnf install google-authenticatorArch Linux
Google Authenticator est disponible dans les dépôts de la distribution pour Arch et les dérivés basés sur Arch. Pour l'installer, exécutez :
sudo pacman -S libpam-google-authenticatorÉtape 3 : Configurer Google Authenticator
Ayant installé avec succès Google Authenticator, nous sommes maintenant prêts à le configurer. Pour ce faire, ouvrez le terminal et exécutez la commande montrée ci-dessous.
google-authenticatorÀ partir de maintenant, 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 « y » pour activer les mots de passe à usage unique basés sur le temps (TOTP).
Un code QR sera affiché sur l'écran de votre terminal. C'est ici que l'application Google Authenticator sur votre appareil mobile entre en jeu. Ouvrez-la 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 grand et difficile à scanner directement depuis votre appareil, nous opterons pour l'option « Entrer une clé de configuration ». Allez-y et cliquez dessus.
Dans le champ « Compte », entrez un nom de votre choix, par exemple, « my2fa ». Ensuite, dans le champ « Clé » de l'application Google Authenticator sur votre appareil mobile, tapez le code de la ligne « Votre nouvelle clé secrète est » du 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 à usage unique et vous donnent accès SSH, par exemple, lorsque vous n'avez pas votre appareil mobile à portée de main pour générer des codes. Répondez par « y » lorsqu'il vous est demandé de mettre à jour le fichier « .google_authenticator ».
À la question suivante, afin d'augmenter la sécurité, répondez à nouveau avec « y », 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 précédemment générés si vous n'avez pas pu vous inscrire dans le délai de 30 secondes, qui est la validité de chaque jeton depuis le moment de sa génération.
Cependant, comme cette option réduit la sécurité, nous vous recommandons fortement de répondre par « n. ».
Enfin, répondez avec « y » pour activer la limite de taux, permettant jusqu'à trois tentatives de connexion dans une fenêtre de 30 secondes, minimisant ainsi les chances d'une attaque par force brute réussie sur votre serveur SSH.
Nous avons terminé la configuration de Google Authenticator, il est donc temps de procéder à la configuration du serveur SSH lui-même pour autoriser 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 terminal préféré :
sudo vim /etc/ssh/sshd_configLa chose à faire ici est d'ajouter/changer les deux valeurs de configuration suivantes :
KbdInteractiveAuthentication yes
ChallengeResponseAuthentication yesSi vous trouvez l'une des deux configurations dans le fichier, changez leurs valeurs en « oui ». S'ils ne s'y trouvent pas, ajoutez-les simplement à la fin du fichier comme dans l'exemple ci-dessous, puis enregistrez et quittez le fichier.
Maintenant, décomposons ce que ces deux options signifient :
- KbdInteractiveAuthentication – Lorsqu'il est activé dans SSH, il permet au serveur de s'engager dans le processus interactif d'authentification à deux facteurs (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).
- Authentification par réponse à un défi – Lorsqu'elle est activée, le serveur SSH peut utiliser des méthodes de réponse à un défi pour l'authentification. Cela inclut des méthodes comme l'authentification interactive par clavier, où l'utilisateur est invité à entrer des informations en réponse à un défi. En d'autres termes, dans ce cas, cela permet au serveur SSH d'inviter l'utilisateur à entrer un code généré par une application 2FA.
Enfin, redémarrez le serveur SSH, puis nous pourrons passer à la dernière étape de la configuration de l'authentification à deux facteurs pour notre serveur SSH.
sudo systemctl restart sshÉtape 5 : Configurer PAM pour l'authentification à deux facteurs de SSH
PAM (Modules d'Authentification Pluggable) joue un rôle crucial dans le processus d'authentification de 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 brancher divers mécanismes d'authentification selon les besoins.
Donc, la dernière étape est de le configurer pour permettre l'authentification à deux facteurs par SSH. Pour cela, nous ouvrons son fichier de configuration :
sudo vim /etc/pam.d/sshdEnsuite, nous devrions ajouter la ligne suivante au début :
auth required pam_google_authenticator.soEnregistrez le fichier, quittez et passez à la dernière partie, la plus excitante.
Étape 6 : Tester la 2FA SSH
Maintenant, vérifions si tout fonctionne correctement. Pour ce faire depuis une machine distante, essayez de vous connecter au serveur configuré pour utiliser l'authentification à deux facteurs via SSH.
Vous serez invité à entrer le code de vérification. Ouvrez l'application Google Authenticator sur votre appareil mobile et tapez dans le terminal le code à 6 chiffres qu'elle affiche. Lorsque vous tapez, cela ne s'affiche pas à l'écran.
Ensuite, vous devrez entrer le mot de passe de l'utilisateur. Une fois que vous avez entré le bon, vous aurez un accès SSH au serveur.
Si vous regardez ce qui se passe en coulisses, dans les journaux systemd, vous constaterez que le processus de connexion s'est bien déroulé. Le code d'authentification à deux facteurs du Google Authenticator et le mot de passe de l'utilisateur ont été acceptés avec succès.
Cependant, même si vous saisissez le mot de passe correct mais que vous utilisez le mauvais code, votre connexion SSH au serveur ne sera pas autorisée, comme le montrent les journaux systemd.
Super travail ! Vous avez réussi à configurer l'authentification SSH à deux facteurs, rendant votre serveur beaucoup plus sûr et bien protégé contre tout accès non autorisé.
Optionnel : Impliquer l'authentification par clé dans la 2FA SSH
D'accord, nous avons fait de bons progrès, 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 qui consiste à compter sur les mots de passe des utilisateurs.
Pour ce faire, nous supposons que vous avez déjà une paire de clés privées et publiques générées et que l'authentification SSH sans mot de passe vers le serveur est configurée et opérationnelle. Cependant, si vous n'en avez pas déjà une, nous avons fourni 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 l'image ci-dessous.
Cela dit au serveur SSH de désactiver l'authentification par mot de passe afin que les utilisateurs ne puissent pas se connecter avec 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 montrée ci-dessous à votre fichier "sshd_config".
AuthenticationMethods publickey,keyboard-interactive- MéthodesD'Authentification: Spécifie les méthodes d'authentification qui doivent être réussies pour qu'un utilisateur obtienne accès.
- clé publique : Cela 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 après que la méthode « clef publique » a été réussie. Cela implique généralement que l'utilisateur saisisse des informations en réponse à une invite. Dans notre cas, cela implique d'introduire un code 2FA généré par l'application Google Authenticator.
Sauvegardez le fichier, fermez-le et redémarrez le service SSH.
sudo systemctl restart sshMaintenant, ouvrez le fichier « /etc/pam.d/sshd », trouvez la ligne « @include common-auth » et mettez un caractère de commentaire (#) devant. Cela empêche PAM d'utiliser le mot de passe du compte de l'utilisateur pour se connecter.
Essayez maintenant de vous connecter à nouveau via SSH - et la magie se produit ! L'invite vous demandant de saisir un mot de passe utilisateur a disparu.
Il suffit de saisir 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, nous précisons une fois de plus que vous devez configurer l'authentification sans mot de passe sur le serveur SSH avant de mettre en œuvre cette méthode.
Conclusion
La mise en place de l'authentification à deux facteurs (2FA) pour l'accès SSH est essentielle pour améliorer la sécurité de vos connexions à distance. Cet article a détaillé les étapes de configuration de Google Authenticator, de modification des paramètres du serveur SSH et de mise en place de PAM pour la 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'incorporation de l'authentification par clé dans le processus d'authentification à deux facteurs SSH ajoute une couche de sécurité, allant au-delà de la seule dépendance aux mots de passe.
Merci de votre temps ! Comme toujours, vos retours et commentaires sont les bienvenus.

















