Authentification en 2 étapes sous Linux (SSH/PAM) avec Google Authenticator
Depuis plusieurs mois déjà, les utilisateurs d'un compte Google ont la possibilité de mettre en place une vérification en 2 étapes lors de leur connexion (2-steps authentication), en passant par cette page, permettant ainsi d'ajouter une couche de sécurité supplémentaire à leur compte.
La méthode la plus simple afin de générer le code temporaire nécessaire à la 2ème étape d'authentification est d'utiliser l'application mobile (Android, iOS et Blackberry) open source Google Authenticator.
Google propose également un module PAM permettant de mettre en place une authentification en 2 étapes sur un poste Linux / Ubuntu.
Connectez-vous à votre poste avec le compte que vous souhaitez sécuriser et depuis une console téléchargez libpam : http://code.google.com/p/google-authenticator/downloads/list puis décompressez l'archive.
Quelques librairies sont à installer afin de permettre la compilation du module et la génération d'un QR Code :
sudo apt-get install libpam0g-dev libqrencode3
cd libpam-google-authenticator-*
make
sudo make install
Lors de l'installation, plusieurs questions vous serons posées, lisez-les avec attention afin de sélectionner l'option adaptée à votre contexte pour chacune d'entre elles.
Installez l'application mobile Google Authenticator sur votre téléphone (version Android sur Google Play, version iOS sur l'App Store) puis ajoutez votre compte en scannant le QR Code qui est apparu dans votre console (ou visible depuis le lien qui vous a été fourni) : une nouvelle ligne apparaît donc dans votre application mobile avec un nouveau code toutes les 30 secondes.
Reste maintenant à rendre obligatoire l'utilisation du module libpam-google-authenticator lors d'une connexion avec votre compte. Le plus simple ici est d'ajouter la ligne suivante à la fin de votre fichier /etc/pam.d/common-auth (sans oublier d'en faire une copie de sauvegarde au préalable) :
auth required pam_google_authenticator.so
Si vous vous connectez à votre poste via SSH, il est également nécessaire de modifier les deux paramètres de configuration suivants dans votre /etc/ssh/sshd_config :
ChallengeResponseAuthentication yes
UsePAM yes
Redémarrez ensuite votre serveur SSH. Par défaut, les codes générés sont basés sur l'heure, il est donc impératif que votre téléphone (sur lequel sera généré le code) et votre ordinateur soient à la bonne et même heure (synchronisation NTP).
Veillez également par sécurité à noter les codes de secours forunis permettant de se connecter en cas de perte de votre mobile par exemple. Vous pouvez désormais tester cette authentification en 2 étapes en vous connectant via une console, SSH ou Gnome (GDM) par exemple, qui vous demdanderont le code de vérification.
Par défaut, il vous sera également demandé lors d'un sudo. Deux petites remarques pour l'instant d'après mon expérience :
- Si vous utilisez une clé SSH pour vous connecter (avec mot de passe, pas testé sans), le code de vérification ne vous sera pas demandé
- Cette authentification en 2 étapes peut ne pas être supportée par certains clients ou avoir des comportement hasardeux, comme avec Proftpd par exemple qui se contente du seul mot de passe
Attention, en cas de mauvaise manipulation, votre accès pourrait être bloqué. Je ne pourrai en aucun cas en être tenu pour responsable.
I'm Michael BOUVY, CTO and co-founder of Click&Mortar, a digital agency based in Paris, France, specialized in e-commerce.
Over the last years, I've worked as an Engineering Manager and CTO for brands like Zadig&Voltaire and Maisons du Monde.
With more than 10 years experience in e-commerce platforms, I'm always looking for new challenges, feel free to get in touch!