[ Linux ] SSH – Double authentification (Google Authenticator)

 dans Google, Linux, Sécurité, Serveur

Hello !

Les services (comme Dropbox, Online, iCloud, …) utilisent de plus en plus la méthode double authentification, chose qui permet d’augmenter la sécurité de votre compte. Si votre service vous le permet je vous recommande effectivement de l’utiliser ! Je ne vais pas donner tous les détails sur la double authentification, ce n’est pas le but initial de cet article. Si vous souhaitez en savoir d’avantage, je vous recommande de vous rendre sur ce lien Wikipédia 🙂

Non dans cet article, je vais vous expliquer comment mettre en place cette méthode (double authentification) pour vos accès SSH, je principe est très sympa à voir/prendre en main et je pense que ce serait une bonne solution pour les clients ayant ce genre d’accès. Néanmoins cela ne doit pas diminuer votre garde sur les tentatives d’accès frauduleuses. D’ailleurs @Seboss666 avait fait un bon article sur le sujet pour bien sécurisé son service SSH (pour ne pas ré-inventer la roue) 🙂

La double authentification s’active lorsque la première étape est validée (connexion à votre compte en utilisant votre mot de passe), vous serez alors contraint de saisir un code pour valider cette seconde étape (oui sinon pas d’accès à votre compte). Dans le cas de cet article, nous utilisons le service Google Authenticator, une application mobile disponible sur iOS et Android (bon pour WindowsPhone/Blackberry, j’ai un doute).. Cependant la double authentification ne se déclenche pas si vous utilisez une clé SSH, c’est suffisamment sécurisé.

Vous êtes prêt ? Go !

Pré-requis

Avant de vous lancer dans cette aventure, assurez-vous d’avoir le package NTP d’installé et qu’il soit fonctionnel (ntpq -p / ntpstat) sinon vous risquez d’avoir quelques surprises sur la gestion en temps réel 🙂

 

Installation

Pour son fonctionnement, nous allons installer le soft Google Authenticator bien évidemment mais aussi quelques librairies PAM pour gérer cette authentification. Le reste sera de la configuration à faire qui est décrit dans dans la prochaine partie. Pour faire relativement simple, je vais uniquement décrire l’installation sous Debian et Redhat (y compris leurs forks).

Pour Debian, ce sera très rapide puis l’outil est disponible dans les dépôts :

apt-get install libpam-google-authenticator

Pour Redhat, il n’y a malheureusement pas de package, il faut donc le compiler :

yum install make automake gcc pam-devel libtool
wget -O google-authenticator.zip https://github.com/google/google-authenticator/archive/master.zip
unzip google-authenticator.zip
cd google-authenticator-master/libpam/
./bootstrap.sh
./configure –prefix=/usr
make
make install
cp /usr/lib/security/pam_google_authenticator.so /usr/lib64/security/pam_google_authenticator.so

Lors de la compilation, ce n’est pas impossible d’avoir des librairies manquantes, si c’est le cas, il faudra regarder la librairie qu’il manque et l’installer (c’est assez générique, donc ça devrait le faire). Sinon n’hésitez pas à décrire votre erreur dans les commentaires, peut-être qu’on pourra vous aider 🙂

Pour finaliser l’installation, il sera nécessaire d’installer l’application Google Authenticator sur votre mobile. C’est disponible pour iOS et Android alors à vous de jouer !

 

Initialisation

Maintenant que le soft est installé sur le serveur, initialisons-le en lançant juste un « google-authenticator » dans le shell :

google-authenticator

Vous devrez répondre à une question pour savoir si vous souhaitez utiliser la génération du code basé sur le temps, je vous recommande de mettre « yes » comme réponse, cela fixera une expiration sur le code généré (généralement expiré après 30 secondes). Vous aurez ensuite un énorme QRcode à l’écran ainsi qu’une URL (mais elle renvoi aussi sur le QRcode). Vous aurez également un jeu de clés de secours/d’urgence, surtout à ne pas perdre ! Faites une sauvegarde dans un endroit sûr 😀

Pour sécuriser votre accès/authentification, vous aurez d’autres petites questions à répondre, rien de bien compliqué. Pour ma part, j’ai répondu « yes » à toutes les questions. Une fois terminé, vous aurez un fichier caché « .google-authenticator » qui sera créé à la racine de votre répertoire (comprendre /home/$USER/).

Lancez l’application sur votre mobile et scanner le QRcode qui a été généré. C’est un raccourcis pour enregistrer votre service SSH dans l’application. Je ne le précise pas mais étape obligatoire pour que votre code soit généré hein !

Nous allons finaliser la configuration avec le service SSH/PAM sur votre serveur. C’est presque terminé, gardez le moral et la force qui est en vous !

 

Configuration

Nous allons maintenant configurer PAM pour utiliser ce nouveau service. Si vous ne savez pas trop à quoi sert PAM, je vous recommande de lire rapidement cet article sur Wikipédia. Cela vous permettra de mieux comprendre son utilité dans le cas présent. Prêt ?

Commencez par éditer le fichier pour l’authentification SSH :

vim /etc/pam.d/sshd

Et rajouter la ligne suivante (en haut du fichier en dessous des autres « auth ») :

auth  required   pam_google_authenticator.so

Ensuite éditez votre fichier de configuration SSH :

vim /etc/ssh/sshd_config

Rechercher la ligne « ChallengeResponseAuthentication » pour la mettre à « yes » (rajoutez-la si elle n’existe pas) :

ChallengeResponseAuthentication yes

Et pour finir, redémarrer votre service SSH :

systemctl restart sshd
systemctl status sshd

Voilà c’est terminé ! Compliqué ?


Finalisation

Maintenant que la double authentification est activée pour votre service, il ne reste plus qu’à établir une connexion avec un compte et son mot de passe (oui rappelez-vous, c’est bypassé si vous utilisez une clé SSH). Vous avez maintenant un service sécurisé ! Vous devriez avoir le prompt ci-dessous :

Password: <password_user_os>
Verification code: <google_authenticator_code>

Je suis également en train de préparer un prochain article sur le même sujet mais en utilisant Authy à la place de Google Authenticator. Il est un peu moins simple à mettre en place mais il offre plus de possibilités ! Bref attendez le prochain, testez, comparez et faites votre choix 😛

++

Articles recommandés