Connexion au bureau et authentification de l’utilisateur Linux

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 Nitrokey FIDO2.

Si vous voulez vous connecter à votre ordinateur en utilisant Nitrokey Pro 2, Nitrokey Storage 2 et Nitrokey. Start vous pouvez consulter les instructions disponibles ici.

Exigences

  • Ubuntu 20.04 avec Gnome Display Manager.

  • Nitrokey FIDO2 configuré en suivant ces instructions.

Instructions

Méthode GUI

  1. Dans le coin inférieur gauche, cliquez sur Show Applications et tapez les paramètres dans la barre de recherche comme suit :

    img1
  2. Défilez vers le bas dans la barre de droite jusqu’à Users.

    img2
  3. Dans le coin gauche, cliquez sur Unlock et cela vous demandera votre mot de passe.

    img3
  4. Sélectionnez Administrator et entrez le nom d’utilisateur et le mot de passe de votre choix.

    img4
  5. Une fois que vous avez terminé l’étape 4, vous devriez avoir terminé.

    img5

Méthode CLI

  1. Créer un utilisateur de sauvegarde et lui donner les privilèges root.

    Vous pouvez le faire en utilisant ces commandes :

    $ 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.

    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.

  2. Paramétrez le rules pour reconnaître le Nitrokey FIDO2**.

    Sous /etc/udev/rules.d télécharger 41-nitrokey.rules

    $ cd /etc/udev/rules.d/
    $ sudo wget https://raw.githubusercontent.com/Nitrokey/libnitrokey/master/data/41-nitrokey.rules
    

    Et redémarrez le service udev.

    $ sudo systemctl restart udev
    
  3. Installation libpam-u2f

    Sur Ubuntu 20.04, il est possible de télécharger directement libpam-u2f depuis les dépôts officiels.

    $ sudo apt install libpam-u2f
    

    Note

    Cliquez pour plus d’options

    • 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
    
  4. Préparation du répertoire

    Créez .config/Nitrokey/ sous votre répertoire personnel

    $ mkdir ~/.config/Nitrokey
    

    Et branchez votre Nitrokey FIDO2.

    Une fois la préparation terminée, nous pouvons commencer à configurer l’ordinateur pour qu’il utilise Nitrokey FIDO2 pour l’authentification du second facteur lors de la connexion et de sudo.

  5. Générer le fichier de configuration U2F.

    Pour générer le fichier de configuration, nous allons utiliser l’utilitaire pamu2fcfg qui est fourni avec libpam-u2f. Pour des raisons pratiques, nous écrirons directement la sortie de l’utilitaire dans le fichier u2f_keys sous .config/Nitrokey. Commencez par brancher votre Nitrokey FIDO2 (si ce n’est pas déjà fait), et entrez la commande suivante :

    $ pamu2fcfg > ~/.config/Nitrokey/u2f_keys
    

    Une fois que vous aurez exécuté la commande ci-dessus, vous devrez toucher la touche pendant qu’elle clignote. Une fois fait, pamu2fcfg ajoutera sa sortie à u2f_keys dans le format suivant :

    <username>:Zx...mw,04...0a
    

    Notez que la sortie sera beaucoup plus longue, mais les parties sensibles ont été supprimées ici. Pour une meilleure sécurité, et une fois le fichier de configuration généré, nous allons déplacer le répertoire .config/Nitrokey sous le répertoire etc/ avec cette commande :

    $ sudo mv ~/.config/Nitrokey /etc
    

    Astuce

    • Le fichier sous .config/Nitrokey doit être nommé ``u2f_keys`””.

    • Il est recommandé de tester d’abord les instructions avec un seul utilisateur. Pour cela, la commande précédente prend l’option -u, pour spécifier un utilisateur, comme dans l’exemple ci-dessous :

      $ pamu2fcfg -u <username> > ~/.config/Nitrokey/u2f_keys
      
    • Pour la configuration d’un utilisateur individuel, vous devriez pointer vers le répertoire personnel dans l’étape suivante, ou ne pas inclure l’option authfile dans la configuration de PAM.

  6. Backup

    Cette étape est facultative, mais il est conseillé d’avoir une Nitrokey de secours en cas de perte, de vol ou de destruction de votre Nitrokey FIDO.

    Pour configurer une clé de secours, répétez la procédure ci-dessus, et utilisez pamu2fcfg -n. Ceci omettra le champ <username>, et la sortie peut être ajoutée à la ligne avec votre <username> comme ceci :

    <username>:Zx...mw,04...0a:xB...fw,04...3f
    
  7. Modifier le Module d’Authentification Pluggable PAM.

    La dernière étape consiste à configurer les fichiers du module PAM sous /etc/pam.d/. Dans ce guide, nous allons modifier le fichier common-auth car il gère les paramètres d’authentification qui sont communs à tous les services, mais d’autres options sont possibles. Vous pouvez modifier le fichier avec la commande suivante :

    $ cd /etc/pam.d
    $ sudo $editor common-auth
    

    Et ajoutez les lignes suivantes au début du fichier :

    #Nitrokey FIDO2 config
    auth    sufficient pam_u2f.so authfile=/etc/Nitrokey/u2f_keys cue [cue_prompt=Please touch the device.] prompt nouserok
    

    Astuce

    • Comme nous utilisons le Central Authentication Mapping, nous devons indiquer à pam_u2f l’emplacement du fichier à utiliser avec l’option authfile.

    • Si vous oubliez souvent d’insérer la clé, l’option prompt fait que pam_u2f imprime Insérez votre dispositif U2F, puis appuyez sur ENTER. et vous donne une chance d’insérer la Nitrokey.

    • If you would like to be prompted to touch the Nitrokey, cue option will make pam_u2f print Please touch the device. message. You can change the message in [cue_prompt=Please touch the device.].

    • nouserok s’assurera que vous pouvez toujours vous connecter en utilisant le nom d’utilisateur et le mot de passe, vous pourriez vouloir supprimer cette option à un moment donné, une fois que la configuration fonctionne et que vous ne voulez plus de connexions régulières basées sur le nom d’utilisateur et le mot de passe.

    Une fois que nous avons modifié le common-auth, nous pouvons sauvegarder et quitter le fichier.

    Vous pouvez tester la configuration en tapant sudo ls dans le terminal. Vous devriez recevoir le message « Please touch the device » et avoir une sortie similaire sur le terminal :

    nitrouser@nitrouser:~$ sudo ls
    [sudo] password for nitrouser:  Please touch the device.
    

    Vous pouvez également tester votre configuration en vous déconnectant de la session utilisateur et en vous reconnectant. Un écran similaire devrait s’afficher une fois que vous aurez débranché/rebranché votre Nitrokey FIDO2 et saisi votre mot de passe :

    img6

Utilisation

Après la modification du module PAM, vous pourrez tester votre configuration immédiatement, mais il est recommandé de redémarrer votre ordinateur, et de débrancher/rebrancher la Nitrokey FIDO2.

Une fois que vous avez correctement testé les instructions de ce guide (et mis en place une sauvegarde), il est recommandé d’utiliser le drapeau de contrôle «  requis «  ou «  requis «  au lieu de «  suffisant « .

Les drapeaux required et ``requisite`” fournissent un contrôle d’accès plus strict, et rendront la Nitrokey FIDO2 nécessaire pour se connecter, et/ou utiliser le service configuré.

Si vous avez besoin de plus d’informations sur les drapeaux de contrôle dans la ligne de configuration PAM, vous pouvez consulter la dernière section de ce guide pour comprendre la différence, et les implications de l’utilisation de chacun d’eux.

Modules PAM

Il existe plusieurs fichiers de modules PAM qui peuvent être modifiés en fonction de vos besoins :

  • En modifiant le fichier /etc/pam.d/common-auth, vous serez en mesure d’utiliser votre Nitrokey FIDO pour l’authentification du 2ème facteur pour la connexion graphique et sudo. Note : common-auth doit être modifié en ajoutant la ligne de configuration supplémentaire à la fin du fichier.

  • If you wish to use FIDO U2F authentication solely for Gnome’s graphic login, you might prefer to modify the/etc/pam.d/gdm-password

  • Vous pouvez également modifier le fichier /etc/pam.d/sudo si vous souhaitez utiliser FIDO U2F lorsque vous utilisez la commande sudo.

Drapeaux de contrôle

Dans l’étape 7, nous avons utilisé l’indicateur de contrôle « suffisant » pour déterminer le comportement du module PAM lorsque la Nitrokey est branchée ou non. Cependant, il est possible de modifier ce comportement en utilisant les drapeaux de contrôle suivants :

  • required : C’est le drapeau le plus critique. Le résultat du module doit être réussi pour que l’authentification se poursuive. Cet indicateur peut vous bloquer l’accès à votre ordinateur si vous n’avez pas accès à la 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 : Le résultat du module est ignoré s’il échoue. L’indicateur sufficient est considéré comme sûr à des fins de test.

  • optionnel : Le succès ou l’échec de ce module n’est important que s’il est le seul module de la pile associé à ce service+type. L’indicateur optional` est considéré comme sûr à utiliser à des fins de test.

Avertissement

  • Si « requis » ou « requis » est défini, l’échec de l’authentification U2F entraînera l’échec de l’authentification globale. L’échec se produira lorsque la Nitrokey FIDO configurée ne sera pas branchée, perdue ou détruite.

  • 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 sudo si vous avez configuré le mappage de l’authentification centrale et utilisé les drapeaux required ou requisite.