diff --git a/post/Nixos/nixos-2FA.md b/post/Nixos/nixos-2FA.md new file mode 100644 index 0000000..3e5088a --- /dev/null +++ b/post/Nixos/nixos-2FA.md @@ -0,0 +1,77 @@ +--- +Date: 2023-12-10 +Author: Alexandre LUCAZEAU +Title: Nixos déchiffrement et authentification 2FA Fido +Slug: +categories: Nixos +Tags: +- nixos +- fido +- yubikey +- nitrokey +- pam +- 2FA +- luks +- systemd-cryptenroll +--- +# 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