YubiKey : Paramétrage authentification Linux

modifié le : 23 septembre 2022,
par Julien Louis
 

Configuration d'une clef YubiKey Bio (FIDO Edition) sous Pop!_Os 22.04 pour l'authentification :

  • En mode graphique (Gnome)
  • En mode console
  • Avec sudo

Product : https://www.yubico.com/fr/product/yubikey-bio/

L'intérêt est de ne plus à avoir à saisir de mot de passe de plus en plus long au quotidien et de rapidement pouvoir s'authentifier avec une empreinte digitale posée sur la clef.

Si la clef n'est pas présente / détectée ou que la reconnaissance de l'empreinte échoue, le mot de passe sera demandé.

Il est possible de rendre obligatoire la présence de la clef. Dans ce cas, il est fortement recommandée de posséder une seconde YubiKey en backup (de secours).

Configuration des empreintes digitales

  • Télécharger l'application pour Linux :
wget https://developers.yubico.com/yubioath-desktop/Beta/yubioath-desktop-6.0.0-beta.1-linux.tar.gz
  • Extraire l'archive compressée :
mkdir yubiauth
tar xzvf yubioath-desktop-6.0.0-beta.1-linux.tar.gz -C yubiauth/
  • Lancer l'application :
cd yubiauth
./authenticator
  • Insérer la YubiKey quand l'application le demande.
  • Définir un code PIN pour la YubiKey.
  • Ajouter une empreinte :

image-20220916020851831

  • Poser son empreinte plusieurs fois pour bien la définir et saisir un nom :

image-20220916021312224

  • Depuis le menu Options, il est possible de modifier le code PIN et de ré-initialiser la YubiKey :

image-20220916025407905

Configuration de l'authentification

Module U2F pour PAM

  • Installer le module U2F pour PAM et son outil de configuration :
sudo apt install libpam-u2f pamu2fcfg
  • Génération de la configuration de PAM pour l'utilisateur courant :
pamu2fcfg -u `whoami` -opam://`hostname` -ipam://`hostname`

Au moment de la validation de la commande, la YubiKey se mettra à clignoter en vert. Il faudra saisir une des empreintes digitales enregistrées précédement.

  • Copier le résultat :
# Le résultat à récupérer sera sous cette forme (... = raccourci)
julien:ehi46df...QBGFSsdf+q...70Z3A==,nbWH7...nRGyfSpJ3GS+UFkaf...YssmeKD/uiefF5...2W/RvMb8oNwA==,es256,+presence
  • Coller le résultat dans le fichier /etc/u2f_mappings :
sudo vi /etc/u2f_mappings

Je déconseille fortement de vouloir piper / rediriger le résultat de la commande pamu2cfg directement dans le fichier.

  • Editer le fichier /etc/pam.d/common-auth :
sudo vi /etc/pam.d/common-auth
  • Ajouter la ligne suivante (remplacer $HOSTNAME par le nom de la machine) en haut du fichier :
auth sufficient pam_u2f.so origin=pam://$HOSTNAME appid=pam://$HOSTNAME authfile=/etc/u2f_mappings cue

Avec cette configuration, il sera toujours possible de s'authentifier avec un mot de passe. Pour rendre l'utilisation obligatoire de la YubiKey, remplacer sufficient par required.

  • Mettre à jour PAM :
sudo pam-auth-update

Avant la mise à jour du fonctionnement de PAM, je recommande fortement de garder un shell ouvert à côté sous l'identité de root avec sudo -i. Cela permettra de rétablir la configuration initiale en cas d'erreur de manipulation.

Authentification en mode graphique

Pour permettre l'utilisation de la YubiKey pour s'authentifier à l'environnement graphique (Gnome).

  • Editer le fichier /etc/pam.d/gdm-password :
sudo vi /etc/pam.d/gdm-password
  • Ajouter la ligne suivante (remplacer $HOSTNAME par le nom de la machine) juste après la ligne @include common-auth :
auth sufficient pam_u2f.so origin=pam://$HOSTNAME appid=pam://$HOSTNAME authfile=/etc/u2f_mappings cue

Authentification en mode console

Pour permettre l'utilisation de la YubiKey pour s'authentifier en mode console.

  • Editer le fichier /etc/pam.d/login :
sudo vi /etc/pam.d/login
  • Ajouter la ligne suivante (remplacer $HOSTNAME par le nom de la machine) en haut du fichier :
auth sufficient pam_u2f.so origin=pam://$HOSTNAME appid=pam://$HOSTNAME authfile=/etc/u2f_mappings cue

Authentification avec sudo

Pour permettre l'utilisation de la YubiKey pour s'authentifier avec la commande sudo.

  • Editer le fichier /etc/pam.d/sudo :
sudo vi /etc/pam.d/sudo
  • Ajouter la ligne suivante (remplacer $HOSTNAME par le nom de la machine) en haut du fichier :
auth sufficient pam_u2f.so origin=pam://$HOSTNAME appid=pam://$HOSTNAME authfile=/etc/u2f_mappings cue
  • La YubiKey clignote en vert lorsqu'une empreinte doit être saisie :

image-20220916035107054

  • Si la YubiKey n'est pas connectée ou bien que l'empreinte n'est pas reconnue, le mot de passe habituel sera demandé.

Par défaut, sudo ne redemande pas d'authentification avant 15 min. Avec sudo -k, il est possible de forcer l'expiration de ce temps. Pour rendre ce comportement persistent, la configuration de sudo doit être modifiée.

  • Editer le fichier /etc/sudoers :
sudo visudo
  • Modifier comme suit :
# Avant
Defaults    env_reset
# Après
Defaults    env_reset,timestamp_timeout=0

Maintenant, à chaque fois que sudo sera invoqué, une demande d'authentification sera effectuée.