Remplacer son mot de passe utilisateur par une tape

Par TournesolLecture 3 min.


Table des matières

  1. Introduction
  2. Authentification pour les sessions utilisateurs
    1. Ajoutez les clés
    2. Utiliser ces clés pour l’authentification
  3. Références

Introduction

J’ai récemment fait joujou avec les clés physique FIDO2 pour héberger mes clés SSH et je dévérouille mes disques chiffrés par LUKS avec.

Aujourd’hui, on va utiliser ces clés pour s’éviter à rentrer son mot de passe utilisateur et permettre de ne faire qu’une tappe sur la clé pour dévérouiller nos sésames. Pourquoi ? Car j’avais pris l’habitude d’avoir un mot de passe cours et peu complexe pour ne pas passer 20 ans à chaque utilisation de sudo. Normalement c’est pas un soucis mais ça me semblait étrange de chiffrer mon disque dur alors que la majorité du temps, je n’éteins même pas mon ordinateur. Donc si j’ai un vol, ils peuvent “brute-force” ma session utilisateur tant que le pc reste allumé.

Authentification pour les sessions utilisateurs

Pour ça on remercie Yubico qui fournissent le package requit pam-u2f (ou libpam-u2f).

Ajoutez les clés

Dans un terminal en tant que l’utilisateur qui utilisera ces clés :

mkdir -p ~/.config/Yubico

# Première clé
pamu2fcfg -i pam://tournesol > ~/.config/Token2/u2f_keys
# Les suivantes (notez l'option -n qui sont nécessaires)
pamu2fcfg -i pam://tournesol -n >> ~/.config/Token2/u2f_keys
  

Il est recommandé de rajouter -i pam://tournesol (remplacer mon nom par tout ce vous voulez) mais ce n’est pas nécessaire. Seulement, par défaut, le nom donné est la variable $HOSTNAME qui risque donc de changer si vous changez de hostname.

Vérifiez alwaysUv

De plus en plus de clés viennent avec alwaysUv d’activé par défaut. Si cette option est activée, vous ne pourrez pas utiliser les clés pour vous authentifier de la manière décrite sur cette page.

Concrétement, cette option requiert de rentrer le code PIN de la clé à chaque utilisation, même si on vous le demande pas. De ce que je comprends, désactiver alwaysUv, permets uniquement à toutes personnes qui mets la main sur une de vos clés FIDO2 de les utiliser pour toute application qui ne demande pas le code PIN.

Vérifiez et modifiez son état en utilisant une app géstion de clés FIDO2.

Utiliser ces clés pour l’authentification

ATTENTION

Éditer les fichiers dans /etc/pam.d/ peut vous verrouiller en dehors de votre système

À chaque édition des fichiers dans /etc/pam.d/, sauvegardez mais NE FERMEZ PAS LE FICHIER. Confirmez dans un nouveau terminal que vous avez toujours vos accès. Vous pouvez utiliser le package pamtester pour faire vos vérifications. Vous pouvez aussi ouvrir une session root avant de faire une modification de sorte à toujours pouvoir retourner en arrière si vous avez une erreur.

sudo

Ajoutez en première ligne :

auth            sufficient      pam_u2f.so cue [cue_prompt=Tap key…] authfile=.config/Yubico/u2f_keys origin=pam://tournesol

Faites attention à remplacer tournesol par le bon nom.

Si vous voulez que vos clés soient vos seules méthodes pour utiliser sudo, vous pouvez commenter les lignes qui suivent ainsi que remplacer sufficient par required.

login GDM

À la suite des lignes auth, rajouter :

auth            required      pam_u2f.so nouserok authfile=.config/Yubico/u2f_keys origin=pam://tournesol

Notez l’utilisation de nouserok qui permets à la régle d’échouer si l’utilisateur n’a pas de clés configurées. Cela permets un setup à plusieurs utilisateurs sans rendre l’utilisation de ces clés obligatoires.

Ma méthode bourin : system-auth

Les solutions précédentes sont utiles pour sélectionner quels services permettront l’utilisation des clés. Je n’ai pas trouvé pas trouvé de source qui parlent d’utiliser /etc/pam.d/system-auth, j’imagine car c’est une solution trop bourrine mais j’ai testé avec gdm, sudo, le dialogue de 1password.

-auth      [success=3 default=ignore]  pam_systemd_home.so
auth       [success=2 default=ignore]  pam_u2f.so cue [cue_prompt=Tap key…] nouserok authfile=.config/Yubico/u2f_keys origin=pam://tournesol
auth       [success=1 default=bad]     pam_unix.so          try_first_pass nullok
auth       [default=die]               pam_faillock.so      authfail

le numéro de success est important. Vérifiez qu’il est décroissant à partier de la ligne de pam_systemd_home.so

Références