Renforcer la sécuritée de son poste avec l’utilisation de clés USB FIDO et utilisation du double facteur
Depuis quelques temps j’utilise une clé USB Yubikey en guise de challenge-response pour de l’authentification et du déchifrement de mon poste de travail.
La clé Yubikey est parfaite pour ça. Elle est mince et solide, reconnu partout. C’est top et c’est un magnifique SPOF. Vous la perdez et vous avec plus rien.
C’est également une clée relativement honéreuse (compter 60€ fdpin), et c’est pas ouvert.
Dans l’univers des fabricants de ce type de dispositifs, vous avez également Solo et nitrokey.
Nitrokey fabrique différent périphériques, comme la Nitrokey Pro, la FIDO2 etc… L’avantage de ce fabricant, c’est que le matériel est conçu et fabriqué en europe (allemagne pour être précis) et en Openhardware, avec des mises à jour des firmware.
N’utilisant pas (encore ?) les fonctionnalités gpg et authentification ssh de la yubikey, je cherchais un moyen pas trop honnéreux pour venir seconder ma Yubi.
J’avais acheté il y a quelques temps une Nitrokey Pro 2 et une FIDO2, mais je m’en étais encore jamais vraiment occupé. Entre temps, ils ont sorti la Nitrokey Pro 3 qui inclus le protocole FIDO2.
Un jour je passerai certainement dessus, mais en attendant, on va faire avec ce que l’on possède déjà.
Enfin, j’ai récemment changé de PC. J’en ais donc profité pour revoir tout ça.
Chiffrement de partitions
Historiquement mon poste était chiffré en utilisant une méthode similaire à ça : https://github.com/sgillespie/nixos-yubikey-luks
C’est bien mais en faite c’est assez limitant. Pour ajouter une clée de backup, c’est certainement jouable, mais j’ai eu trop peur de casser quelques choses. J’ai donc opté pour une autre méthode disponible depuis Nixos 23.05, à savoir systemd-cryptenroll
Avec systemd-cryptenroll vous pouvez ajouter autant de clés que vous voulez, plusieurs mots de passes, générer un mot de passe de secour en cas de perte (recovery, généré par le système). Mais vous pouvez également supprimer tout ou partie de ces moyens.
Cela signifie, que vous pouvez avoir une Master key dans l’entreprise, capable de déchiffrer tous les postes, et changer de clés quand vous voulez.
Typiquement, ajouter une clée Yubikey ou Nitrokey, ça se fait simplement (et même après l’installation) :
systemd-cryptenroll /dev/nvme0n1p2 --fido2-device=auto --fido2-with-client-pin=true
Ici on ajoute la clée avec son code PIN (à activer au préalable). Notre déchiffrement 2FA est bon. Rien de plus simple, n’est pas ?
Et pour l’authentification sur gdm (ou autre gestionnaire) et sudo ?
Pour avoir une Yubi ET une Nitro, sous Nixos, il faut utiliser le même fichier u2f_keys dans les 2 cas.
En effet, la doc pour la Yubikey indique :
pamu2fcfg -u alexandre > ~/.config/Yubico/u2f_keys
Et pour la Nitrokey :
pamu2fcfg -u alexandre > ~/.config/Nitrokey/u2f_keys
Or si vous utilisez la seconde, ça marchera pas. Il faut tout mettre dans .config/Yubico/u2f_keys
Pour le reste de la configuration, je vous laisse aller voire les fichiers de mon template sur le git (mais c’est du standard) : https://git.atlanticaweb.fr/alexandre/nixos-config/src/branch/main/hosts/template
- Tester c’est tricher … mais ça peut sauver d’une erreur :)
Pour vérifier que votre configuration est bonne :
nix-shell -p pamtester
pamtester login alexandre authenticate
pamtester sudo alexandre authenticate