Authentification SSH forte par deux facteurs avec Google Authenticator
Un long article a déjà été consacré à SSH. Google depuis tout juste 1 an a lancé son service de double authentification par token. Personnellement je l’utilise pour sécuriser mon compte Google et mon compte LastPass. Le projet Google Authenticator est un projet Open Source développé sous licence Apache 2.0. Une librairie PAM est également disponible. Un moyen supplémentaire d’ajouter de la sécurité lors de la connexion à votre serveur via SSH.
I. L’authentification forte
I.1. Définition
Une authentification dite forte est un mécanisme d’identification requérant au minimum 2 facteurs. Google Authenticator propose une authentification en 2 étapes reposant sur la technique One Time Password:
- Un mot de passe
- Un token d’identification unique, généré par votre téléphone, sa durée de vie est de 30 secondes
I.2. Principe de fonctionnement
Dans la pratique, lorsque vous allez vous loger sur un système vous aller renseigner votre mot de passe puis le token d’identification. Google Authenticator dispose d’une application sur iOS, Android, Windows Phone. Le site du projet Google Authenticator et la description par Google.
II. Mise en oeuvre avec openSSH
Installation des paquets necessaires:
$ sudo apt-get update && sudo apt-get install -y subversion build-essential gcc python-dev |
On installe la version la plus récente de Mercurial car la version du dépôt ne fonctionne pas.
$ wget http://mercurial.selenic.com/release/mercurial-2.1.tar.gz |
Personnellement je n’ai pas pour objectif de disposer de Mercurial de façon permanente sur ma machine. J’effectue donc une installation locale.
$ make local |
Une fois le répo du projet cloné on installe la librairie PAM.
$ cd gauth/libpam/ |
On édite ses directives PAM pour le service SSH dans /etc/pam.d/sshd
en rajoutant après @include common-auth
:
auth required pam_google_authenticator.so |
On édite enfin notre configuration SSH, /etc/ssh/sshd_config
en modifiant à yes la directive suivant:
ChallengeResponseAuthentication yes |
Relancer votre daemon SSH:
$ sudo service ssh restart |
On appelle le binaire de configuration du service de double authentification de Google:
$ google-authenticator |
Copier le lien, coller le dans un navigateur et scanner le QRcode avec votre téléphone. Le lien n’est valide que très peu de temps.
Notes:
- Vous pouvez ajouter des codes personnalisés dans
~/.google_authenticator
- Si vous comme moi vous utilisé l’authentification par clef privé/publique cela ne fonctionnera pas. Fonctionne uniquement avec l’authentification par mot de passe. On test le tout :
$ ssh user@server |
Et voilà !
Comments