Authentification locale à double facteur via U2F
Installation sous Linux
Nous voulons, sur une machine, que certaines opérations d'authentification utilisent un second facteur reposant sur une clé U2F. Dans un premier temps, nous n'activerons l'authentification à double facteur que pour les élévations ou changements de privilèges (su et sudo). Ensuite, l'authentification à double facteur sera généralisée.
Règles udev
La clé U2F doit être reconnue par udev pour être accessible à l'utilisateur. Celui-ci, dans la configuration ci-dessous, doit être membre du groupe plugdev.
Il suffit d'ajouter une règle udev similaire à la suivante (les variables idVendor et idProduct peuvent différer, selon le fournisseur de la clé) :
ATTRS{idVendor}=="2581", ATTRS{idProduct}=="f1d0", GROUP="plugdev", MODE="0660"
Lorsqu'elle est connectée, la clé peut provoquer la production de messages comme les suivants :
kernel: usb 2-1.4: New USB device found, idVendor=2581, idProduct=f1d0
kernel: usb 2-1.4: New USB device strings: Mfr=1, Product=1, SerialNumber=1
kernel: usb 2-1.4: Product: Plug-up
kernel: usb 2-1.4: Manufacturer: Plug-up
kernel: usb 2-1.4: SerialNumber: Plug-up
Les identifiants du vendeur et du produit apparaissent sur la seconde ligne.
Configuration de PAM
Il est nécessaire de disposer d'un module PAM spécifique traitant l'authentification U2F : pam_u2f. Ce module est développé par Yubico. Le code source se trouve sur Github. Ce module est probablement disponible sur toutes les distributions Linux.
Pour ajouter l'authentification U2F aux commandes su et sudo, il suffit de modifier les fichiers /etc/pam.d/su ou /etc/pam.d/sudo. Ici, nous voulons que cette authentification soit obligatoire et que tout échec provoque le rejet de l'opération.
$ grep auth /etc/pam.d/su
auth include system-auth
auth required pam_u2f.so debug interactive
L'option interactive provoque l'affichage d'un message informant l'utilisateur qu'il doit introduire sa clé dans un port USB. Cette option est utile pour les clés ne disposant pas de bouton d'activation, comme celle qui illustre l'article. Si vous disposez d'une clé U2F avec un bouton d'activation, l'option interactive peut être remplacé'e par l'option cue, qui affiche un message rappelant à l'utilisateur qu'il doit appuyer sur le bouton de sa clé. En l'absence de l'une de ces deux options, aucune information particulière n'est affichée, ce qui peut dérouter un utilisateur qui ne serait pas habitué à l'authentification à double facteur.
L'option debug permet d'afficher à l'écran des traces de fonctionnement de pam_u2f. Il est préférable de retirer cette option lorsque les tests sont terminés.
Extension à tous les services
Dans la section précédente, nous avons ajouté sélectivement la directive concernant l'authentification à double facteur dans le fichier de configuration PAM des services qui nous intéressent (su, sudo, etc.). Par le jeu des inclusions de configurations, il est possible de n'ajouter cette directive que dans un fichier maître, typiquement le fichier system-auth qui est inclus par pratiquement tous les autres.
Attention cependant : assurez-vous au préalable que tous les clients qui s'appuyent sur PAM sont capables d'afficher les messages produits par pam_u2f pour l'introduction de la clé ou l'activation du bouton de celle-ci. Si ce n'est pas le cas, vérifiez que vos utilisateurs sont bien informés qu'ils doivent insérer/activer leur clé dès qu'un mot de passe leur est demandé. Sinon, ils vont oublier cette étape techniquement invisible pour eux, et ne pourront plus utiliser le service concerné.