Déverrouiller sa session Linux avec une Yubikey

Salut les makers,

La sécurité dans le monde de l'IT est un vaste sujet. Sécurisation des infrastructures, des applications, des données... il y en a pour tous les goûts. Aujourd'hui, je vous propose de gagner en sécurité et en confort d'utilisation sur votre environnement Linux grâce à une Yubikey.

1. C'est quoi une Yubikey ?

La YubiKey est un dispositif d'authentification électronique fabriqué par Yubico qui supporte les mots de passe à usage unique, le chiffrement et l'authentification par clé publique et le protocole Universal Second Factor développé par l'alliance FIDO.

En clair, il s'agit d'une clé USB physique, sauf qu'au lieu de stocker des fichiers, elle contient une puce sécurisée qui renferme une clé chiffrée unique qui vous appartient.

Photo des différents modèles de Yubikeys existants
Modèles de Yubikeys

Elle repose sur un standard ouvert nommé U2F qui a été développé par Google, Yubico et NXP et qui est maintenu par l'alliance FIDO.

En ce qui me concerne, j'utilise une Yubikey 5 NFC.

2. Utiliser la Yubikey pour les commandes sudo

Le but de la manœuvre ici est de n'avoir plus qu'à toucher sa Yubikey du doigt pour valider une commande sudo. Plus de mot de passe à taper !

Sachez qu'il est aussi possible d'exiger de taper un code PIN en plus de toucher la Yubikey. Nous n'allons pas faire ça ici.

2.1 Installation des dépendances

Tout d'abord, on va installer quelques dépendances :


sudo add-apt-repository ppa:yubico/stable && sudo apt-get update
sudo apt-get install libpam-u2f pamu2fcfg

Dans mon cas, je suis sous Linux Mint. Je vous laisse le soin d'adapter les commandes en fonction de vore distrib Linux.

2.2 Associer la clé U2F avec son compte

  1. Ouvrez un terminal
  2. Branchez la Yubikey
  3. Exécutez les commandes suivantes :

mkdir -p ~/.config/Yubico
pamu2fcfg > ~/.config/Yubico/u2f_keys

Quand la Yubikey clignote, touchez la partie métallique.

2.3 Configurer le système pour utiliser les clés U2F

Éditez ensuite le fichier /etc/pam.d/common-auth. Avant toute instruction auth, insérez la ligne suivante :


auth sufficient pam_u2f.so

Sauvegardez le fichier et retirez la Yubikey. On va maintenant vérifier que la commande sudo fonctionne normalement. Ouvrez un nouveau terminal et tapez la commande suivante :


sudo echo test

Quand demandé, tapez votre mot de passe et validez par Entrer. La commande doit normalement bien s’exécuter. Maintenant, branchez la Yubikey et ouvrez un nouveau terminal. Rejouez la commande de test ci-dessus. La Yubikey doit se mettre à clignoter.

Photo d'un doigt s'apprêtant à toucher la pastille métalique de la Yubikey

Touchez la partie métallique et la commande doit s’exécuter avec succès, sans avoir à saisir son mot de passe.

Il est possible d'autoriser l'exécution d'une commande sudo dès que la Yubikey est branchée, sans avoir à toucher la partie métallique. Cependant, je vous le déconseille fortement car alors n'importe quel script peut exécuter une commande sudo sans même que vous le sachiez.

3. Verrouiller la session quand la Yubikey est débranchée

Le but de la manœuvre est de verrouiller automatiquement la session lorsque la Yubikey est débranchée. De cette manière, dès qu'on part en pause-café, il suffit de prendre sa Yubikey avec soit et plus aucun risque de devoir payer les croissants aux collègues le lendemain 🥐

On va commencer par créer le script de verrouillage /usr/local/bin/lockscreen.sh :


#!/bin/sh

# This script, when called, locks session if yubikey is absent

sleep 2

if ! ykman info >> /dev/null 2>&1
then
loginctl lock-sessions
fi

Ensuite, on rend le script exécutable :


sudo chmod +x /usr/local/bin/lockscreen.sh

Puis, on ajoute une nouvelle règle UDEV dans le fichier /etc/udev/rules.d/20-yubikey.rules:


ACTION=="remove", ENV{SUBSYSTEM}=="usb", ENV{PRODUCT}=="1050/407/526", RUN+="/usr/local/bin/lockscreen.sh"

La valeur du paramètre ENV{PRODUCT} peut-être déterminée de cette manière :


# Branchez la Yubikey
# monitor les actions systèmes
udevadm monitor --environment --udev

# Débranchez la yubikey, puis CTRL + C pour stopper le monitoring

Dans la sortie, repérez un bloc de lignes contenant la ligne ID_VENDOR=Yubico et contenant les entrées ID_VENDOR_ID, ID_MODEL_ID et ID_REVISION. Concaténez ces 3 dernières valeurs, sans les 0 de gauche, séparés par des /.
Par exemple, avec les lignes suivantes, vous obtiendrez 1050/407/526 :


ID_VENDOR=Yubico
ID_VENDOR_ID=1050
ID_MODEL_ID=0407
ID_REVISION=0526

Enfin, rechargez la conf :


sudo udevadm control --reload-rules

4. Aller plus loin

Sur certains services tels que GitLab, Gmail ou encore Bitwarden, vous pouvez activer l'authentification multi-facteurs et utiliser votre yubikey comme périphérique U2F. Et comme la Yubikey supporte le NFC, vous pouvez même l'utiliser avec un smartphone.

Vous pouvez également utiliser votre Yubikey pour chiffrer votre disque dur : sans cette dernière, il est alors impossible de le déchiffrer.

Pour en savoir plus, rendez-vous directement sur le site de Yubico.

À bientôt sur Fire-DIY !

Sources: [1]

Vos réactions (0) :

  1. Sois le/la premier(e) à commenter cet article !
Tu as besoin d'aide ? Utilise le Forum plutôt que les commentaires.

Un commentaire ?

* Champs obligatoires
Utilisation des données

Afin d'améliorer ton expérience utilisateur, nous utilisons des cookies 🍪