Table de Matieres
I. Présentation
Dans ce tutoriel, nous allons apprendre à configurer l’authentification multi-facteurs (MFA) sur l’accès SSH d’un serveur Linux afin de renforcer l’authentification : en complément de l’identifiant et du mot de passe, un code de vérification à usage unique devra être saisi pour s’authentifier sur le serveur.
Le MFA est compatible avec l’authentification par identifiants (utilisateur / mot de passe), mais aussi avec l’authentification par clés.
Sur le serveur Linux, nous allons devoir installer et configurer Google PAM Authenticator, correspondant au paquet « libpam-google-authenticator » (page du projet). Du côté de votre smartphone, vous pouvez utiliser l’application de génération de code de votre choix : FreeOTP, Microsoft Authenticator, Google Authenticator, etc… Il y a du choix !
Cette configuration s’applique à différentes distributions, notamment Debian, Ubuntu, Fedora, Rocky Linux, etc… Pour ma part, j’utilise une machine Debian 11 pour cette démonstration.
II. Installation et configuration de Google PAM Authenticator
Connectez-vous sur votre serveur Linux, mettez à jour le cache des paquets et installez le paquet mentionné en introduction :
sudo apt-get update sudo apt-get install libpam-google-authenticator
Une fois l’installation effectuée, nous pouvons attaquer la configuration du module. Ceci va nécessiter d’utiliser votre smartphone avec votre application OTP. Exécutez cette commande :
google-authenticator
Répondez « y » à la première question pour qu’un QR code soit généré. Ce code doit être scanné avec votre application OTP, à partir de votre smartphone.
Sous le QR code, il y a la question « Enter code from app » : saisissez le code affiché sur votre smartphone, et validez, afin de vérifier que cela fonctionne correctement. Notez également les codes d’urgence en lieu sûr, dans votre gestionnaire de mots de passe préféré, par exemple. Ces codes sont à utiliser uniquement si vous avez un problème avec l’application OTP sur votre smartphone.
Ensuite, il faut répondre à 4 questions pour affiner la configuration. Pour que la configuration soit sécurisée (protection contre certaines attaques), il est nécessaire de répondre « y » donc « oui » à l’ensemble de ces questions. Par exemple, cela va imposer une limite pour les tentatives de connexion : 3 tentatives toutes les 30 secondes.
La configuration de Google PAM est terminée ! Passons à la suite.
III. Activer le MFA sur la connexion SSH
Maintenant, nous devons configurer le module d’authentification de Linux et SSH pour qu’ils s’appuient sur Google PAM afin d’activer le MFA. Commencez par modifiez ce fichier :
sudo nano /etc/pam.d/sshd
Ajoutez cette ligne à la fin du fichier et enregistrez :
auth required pam_google_authenticator.so
Si vous souhaitez autoriser la connexion sans MFA, par exemple pour un utilisateur pour lequel le MFA n’est pas configuré, ajoutez cette option :
auth required pam_google_authenticator.so nullok
Ensuite, c’est le serveur SSH en lui-même qu’il faut configurer. Ouvrez le fichier de configuration de SSH :
sudo nano /etc/ssh/sshd_config
Recherchez l’option « ChallengeResponseAuthentication » est définissez là sur « yes » à la place de « no ».
ChallengeResponseAuthentication yes
Pour utiliser le MFA avec l’authentification par clés (ce qui suit n’est pas utile pour une authentification par login et mot de passe), la configuration est un peu différente… Car, en plus de l’option que nous venons d’activer, il faut ajouter cette option :
AuthenticationMethods publickey,keyboard-interactive
Bien sûr, cela vient s’ajouter aux lignes pour désactiver l’authentification par mot de passe et pour activer la méthode basée sur une clé publique :
PubkeyAuthentication yes PasswordAuthentication no
Fermez le fichier et redémarrez le service SSH pour appliquer les changements :
sudo systemctl restart sshd
Il est temps de tester !
IV. SSH : tester la connexion MFA
À partir d’une machine distante, initiez une connexion SSH vers votre serveur sur lequel le MFA est actif, et connectez-vous avec l’utilisateur pour lequel nous venons d’activer le MFA. Et là, surprise, une nouvelle étape nommée « Verification code » s’affiche ! C’est à ce moment-là qu’il faut ouvrir l’application de génération de code sur votre smartphone pour obtenir un code et le saisir.
Suite à cette connexion, dans le journal « /var/log/auth.log« , vous verrez une ligne comme celle-ci :
sshd(pam_google_authenticator)(1192687): Accepted google_authenticator for flo
Dans le cas où un mauvais code est saisi, il y aura également une entrée dans les logs pour notifier cette tentative. Cet événement est intéressant et peut indiquer un signe de compromission, car il indique que quelqu’un connaît le nom d’utilisateur et le mot de passe, mais qu’il bloque sur le second facteur d’authentification.
Maintenant, c’est à vous de configurer vos serveurs !
Hébergez votre site à partir de 2$ sur 👉👉👉 https://www.tnctech.ca