web-dev-qa-db-fra.com

Comment utiliser un générateur de code d'authentification pour l'authentification pour les connexions à distance?

J'aimerais renforcer l'authentification de mes connexions SSH en ajoutant un autre facteur: un dispositif générateur de code d'authentification ou une application de génération de code d'authentification sur mon téléphone portable. Les seules options évidentes dans la configuration par défaut sont un mot de passe fixe et une paire de clés. Comment puis-je faire ceci?

(Si j'utilise un mot de passe plus un générateur de code, ceci fournit authentification à deux facteurs (2FA): le mot de passe est "ce que je sais" et le code est "ce que j'ai".

55
Jorge Castro

Une façon de faire est d'utiliser un outil fourni par Google appelé Google Authenticator .

  1. Installer libpam-google-authentatorInstall libpam-google-authenticator

    • ou juste Sudo apt-get install libpam-google-authenticator
  2. Éditez /etc/pam.d/sshd pour inclure le module:

    • sudoedit /etc/pam.d/sshd
    • puis incluez cette ligne en haut du fichier et enregistrez:

      auth required pam_google_authenticator.so
      
  3. Modifiez votre fichier de configuration SSH pour activer le défi:

    • sudoedit /etc/ssh/sshd_config puis modifiez l'authentification de la réponse à partir de:

      ChallengeResponseAuthentication no 
      

      à

      ChallengeResponseAuthentication yes
      

      puis enregistrez le fichier.

  4. Sudo restart ssh pour redémarrer SSH

  5. Exécutez google-authenticator

    • Cela vous donnera votre clé secrète, votre code de vérification et vos codes de grattage d'urgence. Il vous posera également des questions limitant le taux.

Applications mobiles:

Vous aurez besoin de l’un d’eux pour recevoir le code d’authentification sur un autre appareil.

Connexes et utiles:

Notez que la combinaison d'un mot de passe avec des codes à usage unique est une authentification à deux facteurs: elle associe "ce que vous savez" (un mot de passe) à "ce que vous avez" (le générateur de code d'accès). D'autre part, si vous combinez des codes d'accès à usage unique avec une paire de clés SSH, tout dépend de "ce que vous avez". Lorsque deux facteurs d'authentification sont du même type, vous ne disposez pas d'une authentification à deux facteurs. cela s'appelle parfois "authentification à un facteur et demi".

49
Jorge Castro

Google Authenticator convient à vos serveurs personnels, mais vous constaterez peut-être que cela ne correspond pas bien à votre infrastructure d'identité existante. Si vous souhaitez explorer d'autres options, pensez à utiliser RADIUS comme protocole d'authentification et le plug-in pam-radius. Tous les systèmes d'authentification à deux facteurs orientés entreprise prennent en charge le rayon. Nous avons écrit une documentation sur la façon d'ajouter authentification à deux facteurs WiKID via pam-radius pour Ubunt .

L'utilisation de radius vous permet de relier d'autres systèmes que SSH au même serveur d'authentification. Vous pouvez également router les demandes d'authentification via freeradius vers LDAP puis vers votre serveur 2FA afin de séparer l'autorisation de l'authentification. Vous pouvez faire la même chose avec AD btw.

12
nowen

J'exhorte tout le monde à mettre la ligne suivante en haut et non en bas de /etc/pam.d/sshd comme décrit précédemment (maintenant corrigé):

auth required pam_google_authenticator.so

Sinon, votre système restera ouvert aux attaques par force brute sur votre mot de passe, comprenant la première partie de l'authentification à deux facteurs: votre mot de passe.

On vous demandera d’abord votre code de vérification, puis votre mot de passe (que le code soit correct ou non). Si l’un ou l’autre est faux, vous devez les saisir à nouveau. Vous pouvez le configurer à l’inverse mais c’est un changement un peu plus difficile à décrire dans la configuration actuelle par défaut de ubuntu (15.04) sshd.

Pour savoir pourquoi c'est nécessaire, vérifiez ce problème:

https://github.com/google/google-authenticator/issues/514

1
Maarten