Double facteur d'authentification SSH avec la Yubikey de Yubico
Pourquoi un double facteur d'authentification ?
"Le mot de passe est actuellement le système le plus couramment utilisé pour authentifier un utilisateur. Il n’offre plus le niveau de sécurité requis pour assurer la protection de biens informatiques sensibles, car différentes techniques d’attaque permettent de le trouver facilement."
Wikipédia
La yubikey est une clef USB simulant un clavier USB et permettant de générer un mot de passe à usage unique appelé OTP. Ainsi, l'idée est d'obtenir une authentification forte à l'aide d'un double facteur d'authentification pour le daemon OpenSSH. Concernant son fonctionnement, voici l'explication très claire fournie par aeris sur son blog :
"À l’intérieur de la Yubikey se trouve une clef AES en écriture seule (pas de lecture possible de la clef), possédée aussi par Yubico (l’entreprise fabriquant la Yubikey).
À chaque appui sur le bouton de la clef, celle-ci va émettre une chaîne composée de son identifiant de clef, d’un compteur de session (s’incrémente à chaque branchement de la clef), d’un compteur d’horloge (s’incrémente 8× par seconde) et d’un compteur d’utilisation (s’incrémente à chaque appui sur le bouton). La chaîne complète est chiffrée avec la clef AES interne, et envoyée ainsi à l’application qui cherche à vous authentifier.
Votre application va alors contacter le serveur de Yubico et lui soumettre la chaîne chiffrée. Le serveur possédant lui aussi la clef AES, il peut déchiffrer les données et les vérifier. S’il est capable de déchiffrer les données et que l’identifiant d’utilisateur correspond bien à celui associé à la clef, on est en présence d’une clef valide. Si les valeurs de tous les compteurs sont bien strictement supérieures à celles de la dernière chaîne validée, on est en présence d’un nouveau identifiant et non d’un rejeu d’une chaîne interceptée."
Si vous souhaitez en apprendre davantage sur le fonctionnement de cette petite clef, je vous renvoie à l'excellente conférence qui a eu lieu lors de Pas Sage en Seine 2011 : https://numaparis.ubicast.tv/videos/pses-yubikey/ mais aussi plus récemment lors des RMLL 2014 : http://video.rmll.info/channels/#securite_.
Configuration d'un serveur sous Debian Jessie
Tout d'abord, il vous sera nécessaire de récupérer votre id et votre key ici : https://upgrade.yubico.com/getapikey/.
Pour déterminer le Token ID composé de 12 caractères, il faudra vous rendre ici : https://demo.yubico.com/php-yubico/Modhex_Calculator.php.
Maintenant que vous possédez l'ensemble des informations nécessaires, il va falloir installer le paquet qui va bien puis éditer le fichier de configuration ssh pour le module PAM :
Puis le fichier configuration pour l'authentification avec le module PAM (en remplacement de l'ancienne ligne) :
Enfin, il faudra déclarer les utilisateurs et le ou les Token ID dans le fichier /etc/yubikey_users :
Vérifiez que votre service OpenSSH supporte bien l'authentification par mot de passe dans /etc/ssh/sshd_config :
Puis connectez-vous à l'aide d'un client SSH. Tapez votre mot de passe classique et terminez en appuyant sur votre yubikey. Et voilà, vous êtes maintenant connecté. Cette clef peut-être utilisée avec bon nombre d'outils comme PAM, Wordpress, Roundcube et bien d'autres choses. Enjoy ;)
Pour en savoir plus
https://developers.yubico.com/yubico-pam/Yubikey_and_SSH_via_PAM.html