Authentication en deux étapes sur un serveur SSH – Clé publique + code TOTP

By | April 21, 2017

OpenSSH permet plusieurs types de combinaisons pour sécuriser vos accès SSH.
Dans ce billet, nous verrons comment mettre en place une authentification en deux étapes sur un serveur SSH installé sur un système Ubuntu 16.04.2.

Sous Linux, PAM ou Pluggable Authentication Module est un système d’authentification qui peut intègrer d’autres méthodes d’authentification. Pour générer le code TOTP, nous utiliserons le module PAM de Google Authenticator.
Installez le module PAM de Google Authenticator.

$ sudo apt-get install libpam-google-authenticator

Pour générer un token, lancez l’une de ces commandes:
_ pour l’utilisateur actuel:

$ google-authenticator

_ ou pour un utilisateur bien précis:

$ su -l koffi -c google-authenticator

Pour des raisons de sécurité, vous aurez quelques petites questions à répondre, rien de bien compliqué. Je vous recommande de répondre à yes (y) à toutes ces questions.
Une fois terminé, vous aurez un fichier caché .google-authenticator qui sera créé à la racine de votre répertoire (/home/$USER/).

questions de sécurité

 

Copiez l’url fourni et collez-le dans votre navigateur puis scannez le code qr qui s’affiche avec une application de code qr comme FreeOTP ou GoogleAuthenticator.

url à copier

Passons à présent à la configuration des fichiers du serveur SSH.
Tout d’abord, nous aurons à modifier le fichier /etc/pam.p/sshd pour utiliser ce nouveau service.
Ajoutez la ligne suivante au bas du fichier:

auth required pam_google_authenticator.so

Ensuite, ajoutez le symbole # à l’option @include common-auth. Cette modification sert à désactiver l’authentification par mot passe.

# @include common-auth

Passons à présent au fichier /etc/ssh/sshd_config:

_ Assurez-vous que ces deux paramètres ont pour argument yes :

ChallengeResponseAuthentication yes
UsePAM yes

_ puis, ajoutez cette ligne à la fin du fichier:

AuthenticationMethods publickey,keyboard-interactive

Cette dernière ligne permet de spécifier à OpenSSH les méthodes d’Authentification qu’on voudrait. publickey pour la clé publique et keyboard-interactive pour le code de vérification TOTP

Redémarrez le service:

$ sudo systemctl restart sshd.service

A la prochaine connexion, en plus de votre clé publique, le serveur vous demandera votre code de vérification que vous verrez apparaître dans votre application OTP.

clé publique + code totp

mdestroy

Leave a Reply

Your email address will not be published. Required fields are marked *