Contactez-nous
-
Infrastructure Craftsmanship

Automatisez votre authentification double facteur avec OATH Toolkit

OATH Toolkit est un outil pour générer des codes OTP (One Time Password) sur votre ordinateur, pour ne plus utiliser Google Authenticator.

OATH Toolkit : Automatisez votre authentification double facteur

Sommaire

Mais c’est quoi donc ?

OATH Toolkit est un petit outil bien sympathique qui va vous permettre de générer des codes OTP (One Time Password) directement sur votre ordinateur et ainsi de vous passer de ce bon ami qu’est Google Authenticator. De ce fait, vous n’aurez plus besoin de sortir votre téléphone lors de l’authentification multi-facteurs sur un grand nombre de services que vous utilisez, tels que la console et les APIs AWS, votre compte Google, ou encore GitHub par exemple.
En effet, OATH Toolkit supporte les protocoles HOTP et TOTP massivement utilisés, surtout TOTP, dans l’authentification sécurisée des services dont vous avez besoin.

Comment l’installer ?

Que ce soit pour les distributions Linux, BSD ou encore MacOS, la mise en place est vraiment très simple, il suffit d’installer le paquet nommé oath-toolkit (oathtool sous Debian/Ubuntu) en utilisant le gestionnaire de paquets correspondant à votre système d’exploitation. Le code source est disponible ici.

Comment ça fonctionne ?

Le fonctionnement de ce logiciel est facilement accessible. Il suffit en effet de posséder la clé secrète permettant de générer les codes et de le passer en paramètre de la ligne de commande. Par défaut, les codes sont basés sur le protocole HOTP avec des clés en hexadécimal. La ligne de commande est la suivante :

oathtool  3132333435363738393031323334353637383930

L’utilisation de clés en base 32 se fait via l’ajout de l’option --base32.
Nous en venons maintenant au clés TOTP, principalement utilisées dans l’authentification à double facteur. Là encore, l’utilisation est facilitée, une option supplémentaire est à ajouter et nous obtenons la ligne de commande suivante :

oathtool --base32 --totp 7MAQFIMXUTG62YBPA2BNUCEQ5RXTL3AQBEUVMWTL7FMEOSV4WEDJFE3HAFIN6ZJ4

Dans chacun de ces exemples, le retour de la commande est un code utilisable afin de valider votre authentification. Nous vous invitons à lire la documentation pour des options supplémentaires.

C’est bien, mais c’est fastidieux

Entrer à chaque appel à OATH Toolkit la clé permettant de générer le code OTP peut se révéler assez contraignant (sans compter qu’il faut se souvenir de cette clé souvent longue).
Vous pouvez dès lors créer une fonction dans votre shell vous permettant de récupérer facilement le code OTP (ici dans le cadre d’un code basé sur le temps avec une clé en base32):

function mfa () {
   oathtool --base32 --totp "$(cat ~/.mfa/$1.mfa)" ;
}

Cette fonction sera à intégrer dans les fichiers de configuration de votre shell préféré (.zshenv ou .bashrc en fonction de votre préférence).

En fonction de vos besoins, il faudra créer plusieurs fonctions correspondant aux différents types d’OTP à générer ou aux types de clés de génération.

Cela peut aussi vous permettre d’automatiser l’authentification auprès de services dans vos scripts.

Aller plus loin

En plus de l’outil, il est fourni dans le paquet installé par votre distribution un module PAM. Ce module ne fonctionne qu’avec les clés HOTP. Grâce à celui-ci, vous allez pouvoir soit authentifier vos utilisateurs uniquement via des codes générés, soit par l’ajout de ces codes en suffixe du mot de passe afin de valider la bonne authentification sur votre système.  Puisqu’il s’agit d’une extension PAM, elle peut être utilisée pour sécuriser encore plus les connexions à vos serveurs via SSH. Vous trouverez plus d’informations ici

Conclusion

Nous vous avons présenté un outil qui, à notre avis, a une utilité non négligeable dans l’utilisation quotidienne d’un ensemble de services nécessitant une authentification double facteur. Nous ne pouvons que vous conseiller de tester par vous-mêmes cet outil, d’aller plus loin dans l’optimisation de son utilisation. N’hésitez pas à commenter si vous avez des idées/améliorations d’utilisation à partager autour de ce logiciel.