Linux things 🐧

un blog sur les technologies des logiciels libres et autres digressions

Nitrokey : durcissement de la sécurité

durcissement de la sécurité avec une nitrokey

Wed, 17 Jul 2024 18:15:50 +0200
# nitrokey   # ssh   # bitwarden  

Introduction

J’ai gardé un souvenir amer d’une certaine époque où la sécurité n’était pas vraiment dans mes priorités perso, aussi ai-je décidé de prendre cela au sérieux en investissant dans une clé de sécurité. J’ai hésité à prendre une Yubikey 5 mais j’ai finalement préféré prendre Européen (Allemand) avec possibilité de mise à jour du firmware opensource. J’ai donc pris une Nitrokey 3C NFC.

nitrokey

Je possède déjà une YubiKey NEO, elle permet de sécuriser l’accès à mon compte bitwarden mais rien de plus. En effet elle ne gère pas la norme FIDO2 qui permet entre autre la gestion des clés ssh par une clé matérielle.

Comme pour la Yubikey il est nécessaire d’être physiquement présent devant le PC pour appuyer légèrement sur la Nitrokey lorsque demandé. Ainsi si au pire un attaquant réussi a pénétrer votre PC il lui sera impossible d’agir à distance sur la Nitro. Cela ne protège évidement pas d’un attaquant qui pénètre physiquement chez vous, mais dans ce cas vous aurez d’autres soucis auquels penser.
Nitrokey propose une application desktop de gestion des mises à jour du firmware : Nitrokey App 2 , elle permettra dans une prochaine mise à jour d’appliquer un code PIN en cas de perte/vol si vous vous déplacez avec vous la clé.
Elle gère aussi le NFC ce qui est bien utile avec un smartphone.

SSH

client

J’ai regénéré récement une clé ssh en utilisant le format de cryptographie ed25519 bien plus sûr que le bon vieux RSA

ssh-keygen -t ed25519

L’idée est d’utiliser la clé matériel comme 2FA pour se connecter, ainsi lors de la connexion ssh il sera demandé en plus du mot de passe d’appuyer légèrement sur la clé USB pour authentifier la connexion. Pour cela il suffit de regénérer la clé en ajoutant -sk :

ssh-keygen -t ed25519-sk -f ~/.ssh/id_ed25519-sk

ssh demande alors de toucher la clé physique puis de saisir un mot de passe

Generating public/private ed25519-sk key pair.
You may need to touch your authenticator to authorize key generation.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_ed25519-sk
Your public key has been saved in id_ed25519-sk.pub

Dans certaines docs certains ajoutent l’option -O resident au ssh-keygen afin de stocker complètement la clé ssh dans la Nitrokey ce qui vous permet de vous connecter en ssh depuis n’importe quel PC. Perso je préfère ne pas le faire, j’utilise qu’un unique PC pour cet usage chez moi.

serveur

Il faut bien sûr ajouter la clé publique dans le fichier .ssh/authorized_keys sur le serveur.

⚠️

Attention si comme moi vous utilisez des serveurs chez Scaleway il est nécessaire d’ajouter votre clé publique dans la console web d’admin dans la section Clés SSH et de lancer le script scw-fetch-ssh-keys --upgrade sur le serveur.

⚠️

Il faut ensuite modifier la config du serveur sshd /etc/ssh/sshd_config pour accepter ce type de clé

PubkeyAcceptedKeyTypes sk-ecdsa-sha2-nistp256@openssh.com,sk-ssh-ed25519@openssh.com

systemctl restart ssh

client

Lorsque vous connectez en ssh, la Nitro affiche une lumière bleu lorsqu’il faut appuyer dessus. Par contre si vous avez oublié de l’insérer, ssh renverra cette erreur

sign_and_send_pubkey: signing failed for ED25519-SK "user" from agent: agent refused operation
user@domain: Permission denied (publickey).

Bitwarden

Bitwarden le gestionnaire de mot de passe que j’utilise est bien entendu critique. Par sécurité j’ai ajouté la Nitrokey comme 2ème moyen 2FA alternatif de la Yubikey. Je peux m’authentifier par l’une ou l’autre de ces clés. Pour cela il faut aller dans les paramètres de sécurités, onglet “Authentification à deux facteurs” et cliquer sur WebAuthn qui est la norme FIDO2 géré par la Nitrokey.

bitwarden admin1

Ensuite par défaut Bitwarden demandera la Nitrokey lors de la connexion. Si vous souhaitez utiliser la Yubikey ou une autre méthode il faut alors cliquer sur “Utiliser une autre méthode d’authentification à deux facteurs”

bitwarden connexion

Et choisir la Yubico.

bitwarden admin2

Autres

D’autres services sont critiques comme la forge logicielle et le mail. Codeberg mais aussi Github supportent les clés de sécurité ainsi que Protonmail, Gmail, Paypal, Gandi, …
Il ne faut pas hésiter à les sécuriser. A noter que le service le plus critique entre tous ne les gère pas (voir plus bas).

A suivre

Voilà deux cas d’usage de la Nitrokey, mais elle peut gérer d’autres choses comme gpg, le stockage de mot de passes, etc. A terme j’en prendrais sans doute une 2ème en cas de perte/destruction de la première.
A noter qu’il est surprenant (ou pas) que la plupart des banques ne proposent pas le standard WebAuthn et qu’ils imposent toujours un mot de passe à 6 chiffres 🤡
Pourquoi s’en faire ils gèrent juste nos sousous ?! 🤬

Liens