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 :

# aptitude install libpam-yubico

 

# vim /etc/pam.d/sshd
auth       required     pam_yubico.so id=2890 key="V5bvGFr+CTMTytpOBL0Pm9dVZXeg=" authfile=/etc/yubikey_users

 

Puis le fichier configuration pour l'authentification avec le module PAM (en remplacement de l'ancienne ligne) :

# vim /etc/pam.d/common-auth
auth    [success=1 default=ignore]      pam_unix.so try_first_pass nullok_secure

 

Enfin, il faudra déclarer les utilisateurs et le ou les Token ID dans le fichier /etc/yubikey_users :

# vim /etc/yubikeys_users
alice:abgdddfghypm

 

Vérifiez que votre service OpenSSH supporte bien l'authentification par mot de passe dans /etc/ssh/sshd_config :

# vim /etc/ssh/sshd_config
PasswordAuthentication Yes

 

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

https://blog.imirhil.fr/2015/11/25/password-otp.html