Connexion au bureau et authentification de l’utilisateur Linux¶
Compatible Nitrokeys |
|||||||
|---|---|---|---|---|---|---|---|
✓ active |
✓ active |
⨯ inactive |
⨯ inactive |
✓ active |
⨯ inactive |
⨯ inactive |
✓ active |
Introduction¶
This guide will walk you through the configuration of Linux to use FIDO Universal 2nd Factor, i.e. FIDO U2F with libpam-u2f and compatible Nitrokeys.
You will set up your Nitrokey as a second factor for authentication. This means you will need your usual login method (likely your password) and your Nitrokey to login.
Si vous souhaitez plutôt utiliser votre Nitrokey comme méthode de connexion alternative (mot de passe OU Nitrokey), voir Méthode d’authentification alternative après avoir terminé le guide principal.
If you want to login to you computer using Nitrokey Pro 2, Nitrokey Storage 2 and Nitrokey Start you can visit the instructions available here.
Avertissement
Le guide suivant peut potentiellement vous bloquer l’accès à votre ordinateur. Vous devez être conscient de ces risques, car il est recommandé d’utiliser les instructions ci-dessous d’abord sur un ordinateur secondaire, ou après une sauvegarde complète.
Vous pourriez perdre l’accès à vos données après avoir configuré les modules PAM.
Exigences¶
Ubuntu 24.04 with Gnome Display Manager (GDM).
Instructions¶
Créer un utilisateur de sauvegarde et lui donner les privilèges root.
$ sudo adduser <backup_user> $ sudo usermod -aG sudo <backup_user>
Dans le cas où vous préférez configurer l’U2F pour un seul utilisateur, et que vous êtes bloqué dans votre session utilisateur, vous pourrez toujours vous connecter avec le
<backup_user>, et procéder à la maintenance.Installation
libpam-u2fOn Ubuntu 24.04 it is possible to download directly
libpam-u2ffrom the official repos$ sudo apt install libpam-u2f
Note
Vous pouvez également construire
libpam-u2fà partir de Git.Pour vérifier que la bibliothèque est correctement installée, entrez la commande suivante :
$ file /lib/x86_64-linux-gnu/security/pam_u2f.so
Le résultat devrait ressembler à ce qui suit :
/lib/x86_64-linux-gnu/security/pam_u2f.so: \ ELF 64-bit LSB shared object, x86-64, version 1 (SYSV),\ dynamically linked, BuildID[sha1]=1d55e1b11a97be2038c6a139579f6c0d91caedb1, stripped
Générer le fichier de configuration U2F.
To generate the configuration file we will use the
pamu2fcfgutility. First plug your Nitrokey (if you did not already), and enter the following command:$ pamu2fcfg > ~/u2f_keys
Once you run the command above, you will need to touch the device while it flashes. Once done,
pamu2fcfgwill append its output theu2f_keysfile in the format:<username>:KeyHandle,PublicKey,flags
This will look something like the following:
nitrouser:fS6vQ9uWa0VizcczyZ/bvk5kcQJkIJOC/21/e7dXFe/fnONSL705EkeiUpZpL/3seAWL/qW4/mqb0/WtiZoP/NOLTRM4EEAg1ANLsfYgSzRd/AjsW3z8kJwgckbvwDUyB90ByR09XtBhuE41vMsEk6J+9CS0+ZuPSB0KXRG7z2yZpQLldjE/ijsdIdd8Ct2oXSiZ/zTb/t5kRafNJVkp=,Oo4U9XvIhI9r0WNnvoMwG5/pbgwYd4GMCYEinhWcsI2hKUebYj92JOxDsSa3zd2A9OB0ofXgB16FD2naev3YmLch==,es256,+presence
Notez que cette sortie n’a pas été générée directement par
pamu2fcfget ne contient aucune information sensible. Elle a pour seul but de montrer le format et la longueur attendus de la sortie.Astuce
The file must be named
u2f_keysIl est recommandé de tester d’abord les instructions avec un seul utilisateur. La configuration des autres utilisateurs sera ajoutée à la section 7.
Setting up a backup Nitrokey
This step is optional, however it is advised to have a second Nitrokey as backup in the case of loss, theft or destruction of your primary Nitrokey.
To set up a backup key, repeat the procedure above, and use
pamu2fcfg -nlike this:$ pamu2fcfg -n >> ~/u2f_keys
This will omit the
<username>field, and the output is appended to the line with your<username>, this will look something like this:<username>:Zx...mw,04...0a:xB...fw,es256,+presence:04...3f,es256,+presence
Securing the config file
Pour une meilleure sécurité, après la génération du fichier de configuration, nous déplacerons le fichier généré
~/u2f_keysvers/etc/Nitrokey/et changerons les permissions d’accès à l’aide de ces commandes :$ sudo mkdir /etc/Nitrokey $ sudo mv ~/u2f_keys /etc/Nitrokey/ $ sudo chmod 644 /etc/Nitrokey/u2f_keys
Modifier le Module d’Authentification Pluggable
PAM.Configurez les fichiers du module PAM sous
/etc/pam.d/. Il s’agit d’une phase de test - l’étape 8 appliquera la configuration une fois que vous aurez confirmé qu’elle fonctionne.In this guide we will modify the
common-authfile as it handles the authentication settings which are common to all services, other options are described in PAM Modules. You can modify the file with the following command:$ sudo editor /etc/pam.d/common-auth
Add the following line at the bottom of the file:
#Nitrokey config auth sufficient pam_u2f.so authfile=/etc/Nitrokey/u2f_keys cue [cue_prompt=Please touch the device.] prompt
Astuce
Nous utilisons sufficient pour les tests et passerons à required à l’étape 8.
Comme nous utilisons le Central Authentication Mapping, nous devons indiquer à
pam_u2fl’emplacement du fichier à utiliser avec l’optionauthfile.If you often forget to insert the key,
promptoption makespam_u2fprintInsert your U2F device, then press ENTER.and give you a chance to insert the Nitrokey.If you would like to be prompted to touch the Nitrokey,
cueoption will makepam_u2fprintPlease touch the device.message. You can change the message in[cue_prompt=Please touch the device.].
Note
Pourquoi un placement par le bas ? PAM traite les modules de haut en bas. En plaçant la configuration U2F en bas, l’authentification par mot de passe est vérifiée en premier, ce qui crée un flux de travail à deuxième facteur (mot de passe + U2F).
Pour d’autres options d’authentification (mot de passe OU Nitrokey) et des explications détaillées sur la manière dont la position de la ligne et les drapeaux de contrôle affectent l’authentification, voir Méthode d’authentification alternative.
Une fois que nous avons modifié le
common-auth, nous pouvons sauvegarder et quitter le fichier.You can test the configuration by typing
sudo lsin the terminal. After typing in your password you should be prompted with the messagePlease touch the device.and have a similar output on the terminal:nitrouser@nitrouser:~$ sudo ls [sudo] password for nitrouser: Please touch the device.
You can also test your configuration by logging out of the user session and logging back. A similar screen should be displayed once you you unplug/replug yout Nitrokey and type your password:
Setting up multiple users
Après avoir confirmé que l’authentification à l’aide de votre Nitrokey a bien fonctionné, vous pouvez configurer le fichier de configuration U2F pour les autres utilisateurs de votre système.
Avertissement
Si vous ne configurez pas tous les utilisateurs dans le fichier de configuration U2F et que vous continuez à appliquer l’authentification Nitrokey à l’étape 8, vous ne pourrez pas vous connecter avec un utilisateur non configuré !
To configure u2f for multiple users,
pamu2fcfgtakes the-u <username>option, the output can be appended to theu2f_keysfile like this:$ sudo pamu2fcfg -u <username> >> /etc/Nitrokey/u2f_keys
Pour ajouter une Nitrokey de secours à cet utilisateur, branchez votre Nitrokey de secours et procédez de la même manière que pour l’utilisateur principal :
$ sudo pamu2fcfg -n >> /etc/Nitrokey/u2f_keys
Répétez ensuite ce processus pour tous les utilisateurs de votre système.
Enforcing Nitrokey second factor authentication
Vous avez peut-être remarqué que l’authentification avec la Nitrokey n’était pas encore appliquée. Après avoir confirmé que l’authentification à l’aide de la Nitrokey fonctionne, nous pouvons l’imposer en remplaçant le drapeau
sufficientparrequired.Avertissement
Avant de poursuivre cette étape, assurez-vous que vous disposez des informations nécessaires :
Testé que l’authentification avec la Nitrokey fonctionne bien, sinon vous pouvez perdre l’accès à votre ordinateur.
Préparez une Nitrokey de secours. Sinon, si vous perdez ou cassez votre Nitrokey, vous n’aurez plus accès à votre ordinateur !
Procédez avec prudence !
Pour ce faire, vous devez modifier le fichier de configuration
PAM:$ sudo editor /etc/pam.d/common-auth
Dans la ligne que vous avez ajoutée plus tôt au bas du fichier, remplacez le mot
sufficientparrequired. Cela devrait ressembler à ceci :#Nitrokey config auth required pam_u2f.so authfile=/etc/Nitrokey/u2f_keys cue [cue_prompt=Please touch the device.] prompt
After completing the setup, it is recommended to reboot your computer and unplug/replug the Nitrokey.
Alternative Authentication Method¶
Si vous préférez utiliser votre Nitrokey à la place de votre mot de passe (mot de passe OU Nitrokey), vous pouvez configurer ceci à la place :
Configuration Steps:
Déplacer la ligne de configuration PAM vers le haut de **** de
/etc/pam.d/common-auth(avant les autres modules d’authentification).Conserver le drapeau de contrôle
sufficient.
Cela permet de s’authentifier avec l’un ou l’autre des deux facteurs. Il est à noter que cette méthode offre moins de sécurité que l’authentification à deuxième facteur.
Comprendre les modes d’authentification
La combinaison de la position de la ligne et du drapeau de contrôle détermine votre mode d’authentification :
Position |
Control Flag |
Authentication Mode |
Use Case |
|---|---|---|---|
Bas (après pam_unix) |
|
Second factor (testing) |
Phase d’essai en toute sécurité |
Bas (après pam_unix) |
|
Deuxième facteur (appliqué) |
Production security (main guide) |
Top (avant pam_unix) |
|
Alternative factor |
Convenience (password OR key) |
Comment fonctionne PAM :
PAM traite les modules de manière séquentielle, de haut en bas. L’indicateur de contrôle détermine comment le succès ou l’échec affecte l’authentification globale :
sufficient: Le succès complète l’authentification ; l’échec est ignoré si d’autres modules réussissent.required: La réussite est obligatoire ; l’échec entraîne un échec global de l’authentification.
Ce que cela signifie pour vous :
Authentification alternative (haut + suffisant) :
Vous pouvez vous connecter avec votre mot de passe OU votre Nitrokey seul.
If authentication with the Nitrokey succeeds, no password is required
Si l’authentification Nitrokey échoue ou est ignorée, le mot de passe fonctionnera quand même.
Cette méthode est plus pratique mais moins sûre que l’authentification à deuxième facteur.
Security implications:
Un pirate disposant de votre mot de passe peut se connecter sans votre Nitrokey
Un pirate ayant un accès physique à votre Nitrokey peut se connecter sans votre mot de passe
N’utilisez cette option que si la commodité est plus importante que la sécurité maximale.
Pour des explications détaillées sur les drapeaux de contrôle et leurs implications, voir Drapeaux de contrôle.
Modules PAM¶
Il existe plusieurs fichiers de modules PAM qui peuvent être modifiés en fonction de vos besoins :
By modifying
/etc/pam.d/common-authfile, you will be able to use you Nitrokey for 2nd factor authentication for graphic login andsudo.If you wish to use FIDO U2F authentication solely for Gnome’s graphic login, you might prefer to modify the
/etc/pam.d/gdm-passwordVous pouvez également modifier le fichier
/etc/pam.d/sudosi vous souhaitez utiliser FIDO U2F lorsque vous utilisez la commandesudo.
Drapeaux de contrôle¶
L’indicateur de contrôle détermine comment le module PAM se comporte lorsque l’authentification réussit ou échoue. À l’étape 6, nous avons utilisé l’indicateur sufficient pour les tests, puis nous sommes passés à required pour la mise en application.
Les drapeaux de contrôle disponibles sont les suivants :
required: The module result must be successful for authentication to continue. This is the most critical flag and can lock you out of your computer if you do not have access to the Nitrokey.requisite: Similaire à ``required`”, cependant, dans le cas où un module spécifique renvoie un échec, le contrôle est directement renvoyé à l’application, ou à la pile PAM supérieure. Cet indicateur peut également vous bloquer l’accès à votre ordinateur si vous n’avez pas accès à la Nitrokey.sufficient: The module result is ignored if it fails. In case of success, control is directly returned to the application, or to the superior PAM stack. This means no other PAM modules will be executed. Thesufficientflag is considered safe for testing purposes.optional: The success or failure of this module is only important if it is the only module in the stack associated with this service+type. Theoptionalflag is considered safe to use for testing purposes.
Avertissement
If
requiredorrequisiteis set, the failure of U2F authentication will cause a failure of the overall authentication. Failure will occur when the configured Nitrokey is not plugged, lost or destroyed.Vous perdrez l’accès à votre ordinateur si vous avez mal configuré le module PAM et utilisé les drapeaux « requis » ou « requis ».
Vous perdrez également la possibilité d’utiliser
sudosi vous avez configuré le mappage de l’authentification centrale et utilisé les drapeauxrequiredourequisite.Vous pouvez également perdre la possibilité de vous connecter à l’aide du gestionnaire d’affichage Gnome si la connexion par carte à puce est appliquée et que vous avez utilisé les drapeaux
requiredourequisite. Voir la section Dépannage pour plus d’informations.
Dépannage¶
Problèmes de connexion au compte d’utilisateur à l’aide de GDM¶
Dans certains cas, par exemple si vous avez installé opencs-pkcs11, Gnome Display Manager (GDM) peut imposer par défaut la connexion par carte à puce dès qu’une carte à puce (comme votre Nitrokey) est branchée, même si aucune carte à puce n’a jamais été configurée. Cela peut vous empêcher de vous connecter à votre compte utilisateur en utilisant u2f. Si vous avez défini le drapeau de contrôle sufficient, débranchez toutes les cartes à puce et connectez-vous en utilisant votre mot de passe. Pour désactiver le contrôle des cartes à puce, exécutez la commande suivante :
$ sudo -u gdm env -u XDG_RUNTIME_DIR -u DISPLAY DCONF_PROFILE=gdm dbus-run-session gsettings set org.gnome.login-screen enable-smartcard-authentication false