GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Configurer l'authentification à deux facteurs SSH (2FA) sur le serveur Ubuntu

Ce didacticiel vous montrera comment configurer l'authentification à deux facteurs SSH sur le serveur Ubuntu à l'aide du célèbre Google Authenticator. Cela améliorera considérablement la sécurité du service SSH sur votre serveur Ubuntu.

Fonctionnement de l'authentification à deux facteurs

Normalement, il vous suffit d'entrer un mot de passe ou d'utiliser la clé SSH pour vous connecter à distance à votre serveur Ubuntu. L'authentification à deux facteurs (2FA) nécessite que vous saisissiez deux informations pour vous connecter. Vous devrez donc également saisir un mot de passe à usage unique basé sur le temps pour vous connecter à votre serveur SSH. Ce mot de passe à usage unique est calculé à l'aide de l'algorithme TOTP, qui est une norme IETF. De nos jours, de nombreux sites Web et services (Facebook, Google, Twitter, etc.) proposent 2FA aux utilisateurs pour sécuriser leurs comptes et c'est une bonne idée d'activer également 2FA sur votre serveur SSH.

Ce tutoriel vous montrera comment configurer

  • Authentification par mot de passe avec 2FA
  • Authentification par clé publique avec 2FA

Remarque  :Le logiciel serveur open-source que nous utiliserons dans cet article s'appelle libpam-google-authenticator , qui est installé à partir du référentiel Ubuntu par défaut. La société Google n'intervient sous aucune forme dans le processus d'authentification. Le logiciel serveur et l'application mobile n'ont pas besoin d'un accès au réseau.

Étape 1 :Installer et configurer Google Authenticator sur le serveur Ubuntu

Connectez-vous à votre serveur Ubuntu et exécutez la commande suivante pour installer Google Authenticator à partir du référentiel de packages Ubuntu par défaut.

sudo apt install -y libpam-google-authenticator

Exécutez ensuite le google-authenticator commande pour créer une nouvelle clé secrète dans votre répertoire personnel.

google-authenticator

À la question "Voulez-vous que les jetons d'authentification soient basés sur le temps ?" Répondez y .

Ensuite, vous verrez un code QR que vous pourrez scanner à l'aide d'une application TOTP sur votre téléphone. Il y a deux applications que je recommande :

  • Google Authenticator est l'application mobile TOTP la plus connue. Vous pouvez l'installer via Google Play ou l'App Store d'Apple sur votre téléphone portable.
  • L'Google Authenticator l'application mobile n'est pas open-source. Si vous ne faites pas confiance à Google, vous pouvez utiliser FreeOTP, une application mobile TOTP open source développée par Red Hat.

Scannez le code QR avec Google Authenticator ou FreeOTP sur votre téléphone portable. Notez que vous devez agrandir la fenêtre du terminal pour scanner le code QR complet.

Le code QR représente la clé secrète, qui n'est connue que de votre serveur SSH et de votre application mobile TOTP. Une fois le code QR scanné, vous pouvez voir un mot de passe à usage unique à six chiffres sur votre téléphone. Par défaut, il change toutes les 30 secondes. Vous devrez saisir ce mot de passe à usage unique ultérieurement pour vous connecter au serveur Ubuntu via SSH.

Dans la fenêtre du terminal, vous pouvez voir la clé secrète, le code de vérification et le code à gratter d'urgence. Il est recommandé de sauvegarder ces informations dans un endroit sûr pour une utilisation ultérieure.

Ensuite, vous pouvez saisir y pour répondre à toutes les questions restantes. Cela mettra à jour votre fichier de configuration Google Authenticator, désactivera les utilisations multiples du même jeton d'authentification, augmentera la fenêtre de temps et activera la limitation du débit pour vous protéger contre les tentatives de connexion par force brute.

Étape 2 : Configurer le démon SSH pour utiliser Google Authenticator

  • Authentification par mot de passe avec 2FA
  • Authentification par clé publique avec 2FA

Authentification par mot de passe avec 2FA

Si vous n'utilisez pas de clé SSH, suivez les instructions ci-dessous.

Ouvrez le fichier de configuration du serveur SSH.

sudo nano /etc/ssh/sshd_config

Recherchez les deux paramètres suivants dans le fichier et assurez-vous qu'ils sont tous les deux définis sur oui .

UsePAM yes

ChallengeResponseAuthentication yes

PAM signifie module d'authentification enfichable. Il fournit un moyen simple de connecter différentes méthodes d'authentification à votre système Linux. Pour activer Google Authenticator avec SSH, l'authentification PAM et Challenge-Response doivent être activées.

Si vous souhaitez autoriser l'utilisateur root à utiliser 2FA, recherchez le PermitRootLogin paramètre et définissez sa valeur sur yes . Il ne peut pas s'agir de PermitRootLogin no ou PermitRootLogin prohibit-password .

PermitRootLogin yes

Enregistrez et fermez le fichier. Ensuite, modifiez le fichier de règles PAM pour le démon SSH.

sudo nano /etc/pam.d/sshd

Au début de ce fichier, vous pouvez voir la ligne suivante, qui active l'authentification par mot de passe lorsque ChallengeResponseAuthentication est défini sur yes .

@include common-auth

Pour activer 2FA dans SSH, ajoutez les deux lignes suivantes.

# two-factor authentication via Google Authenticator
auth   required   pam_google_authenticator.so

Enregistrez et fermez le fichier. Redémarrez ensuite le démon SSH pour que la modification prenne effet.

sudo systemctl restart ssh

À partir de maintenant, le démon SSH vous demandera de saisir un mot de passe utilisateur et un code de vérification (le mot de passe à usage unique généré par Google Authenticator). La capture d'écran suivante montre une session de connexion SSH depuis une boîte CentOS vers un serveur Ubuntu 20.04.

Authentification par clé publique avec 2FA

Si vous utilisez la clé SSH pour vous connecter au serveur SSH, suivez les instructions ci-dessous.

Ouvrez le fichier de configuration du serveur SSH.

sudo nano /etc/ssh/sshd_config

Recherchez les deux paramètres suivants dans le fichier et assurez-vous qu'ils sont tous les deux définis sur oui .

UsePAM yes

ChallengeResponseAuthentication yes

PAM signifie module d'authentification enfichable. Il fournit un moyen simple de connecter différentes méthodes d'authentification à votre système Linux. Pour activer Google Authenticator avec SSH, l'authentification PAM et Challenge-Response doivent être activées.

Si vous souhaitez autoriser l'utilisateur root à utiliser 2FA, recherchez le PermitRootLogin paramètre et définissez sa valeur sur yes . Il ne peut pas s'agir de PermitRootLogin no ou PermitRootLogin prohibit-password .

PermitRootLogin yes

Ensuite, ajoutez la ligne suivante à la fin de ce fichier. Cela indique au démon SSH que l'utilisateur doit réussir à la fois l'authentification par clé publique et l'authentification challenge-réponse.

AuthenticationMethods publickey,keyboard-interactive

Enregistrez et fermez le fichier. Ensuite, modifiez le fichier de règles PAM pour le démon SSH.

sudo nano /etc/pam.d/sshd

Au début de ce fichier, vous pouvez voir la ligne suivante, qui active l'authentification par mot de passe lorsque ChallengeResponseAuthentication est défini sur yes . Nous devons commenter cette ligne, car nous utiliserons la clé SSH au lieu du mot de passe.

@include common-auth

Pour activer 2FA dans SSH, ajoutez les deux lignes suivantes.

# two-factor authentication via Google Authenticator
auth   required   pam_google_authenticator.so

Enregistrez et fermez le fichier. Redémarrez ensuite le démon SSH pour que la modification prenne effet.

sudo systemctl restart ssh

À partir de maintenant, vous devez utiliser la clé SSH et le code de vérification Google Authenticator pour vous connecter.

Remarques

  • Chaque utilisateur de votre serveur Ubuntu doit exécuter google-authenticator commande et scannez le code QR afin d'utiliser l'authentification à deux facteurs. Si l'utilisateur n'a pas configuré et tente de se connecter, le message d'erreur "Autorisation refusée (clavier interactif) ” s'affichera.
  • Le code à gratter d'urgence est votre code de secours. Si vous perdez votre téléphone, vous pouvez saisir l'un des cinq codes à gratter d'urgence au lieu d'un mot de passe à usage unique pour effectuer la vérification en deux étapes. Ces codes sont à usage unique.
  • Si vous souhaitez modifier la clé secrète, connectez-vous simplement à votre serveur et exécutez google-authenticator commande à nouveau pour mettre à jour le ~/.google_authenticator fichier.
  • Étant donné que le mot de passe à usage unique est calculé à l'aide de la clé secrète partagée et de l'heure actuelle, il est donc judicieux d'activer la synchronisation de l'heure NTP sur votre serveur Ubuntu pour conserver une heure précise, bien que nous ayons précédemment autorisé un décalage temporel de 4 minutes entre le serveur Ubuntu et l'application mobile. Votre serveur Ubuntu et l'application mobile TOTP peuvent utiliser des fuseaux horaires différents.

Comment désactiver l'authentification à deux facteurs SSH

Modifiez le fichier de règles PAM pour le démon SSH.

sudo nano /etc/pam.d/sshd

Commentez la ligne suivante.

auth   required   pam_google_authenticator.so

Enregistrez et fermez le fichier. Si vous avez ajouté la ligne suivante dans /etc/ssh/sshd_config fichier,

AuthenticationMethods publickey,keyboard-interactive

Supprimer le keyboard-interactive méthode d'authentification.

AuthenticationMethods publickey

Enregistrez et fermez le fichier. Redémarrez ensuite le démon SSH.

sudo systemctl restart ssh

Ubuntu
  1. Comment générer des clés SSH sur Ubuntu 18.04

  2. Comment installer et configurer le serveur sftp dans Ubuntu 20.04

  3. Sécurisez SSH en utilisant l'authentification à deux facteurs sur Ubuntu 16.04

  4. Configurer l'authentification multifacteur pour SSH sur Ubuntu 20.04

  5. Configurer l'authentification à deux facteurs à l'aide de Google Authenticator

Comment installer le serveur SSH sur Ubuntu 22.04

Comment installer OpenSSH sur Ubuntu 20.04

Comment configurer l'authentification à deux facteurs SSH sur Ubuntu 16.04 avec Google Authenticator

Comment activer le serveur SSH sur Ubuntu 22.04

Comment configurer l'authentification à deux facteurs sur Ubuntu 20.04 LTS

Comment utiliser l'authentification à deux facteurs avec Ubuntu