Accueil » Yubikey : la petite clé qui assure (suite)
Dossiers

Yubikey : la petite clé qui assure (suite)

Sommaire :

Utilisation simple

De base, nous utiliserons les services de validation de Yubico. Il s’agit ici de configurer simplement Linux pour identifier un utilisateur en utilisant sa clé.

Application n°1 : login Linux

Tout bon Linux moderne utilise en général Linux-PAM pour tout ce qui touche à l’identification utilisateur. Et comme Yubico a la bonne idée de proposer un module PAM, c’est ce que nous allons utiliser.

Il y a trois dépôts à aller chercher pour construire notre module PAM : celui de la bibliothèque yubico-c-client, celui de l’outil de configuration yubikey-personalization, et enfin yubico-pam lui-même. Pour la suite, je suppose que vous avez déjà git d’installé, en sus des outils habituels (automake, gcc …), et que vous savez aller installer une dépendance manquante (comme curl) au besoin.

Compilations

On commence par compiler la bibliothèque client.

[[email protected]]$ git clone https://github.com/Yubico/yubico-c-client
Cloning into yubico-c-client…
remote: Counting objects: 397, done.
remote: Compressing objects: 100% (194/194), done.
remote: Total 397 (delta 233), reused 319 (delta 201)
Receiving objects: 100% (397/397), 94.17 KiB, done.
Resolving deltas: 100% (233/233), done.
[[email protected] yubi]$ cd yubico-c-client/
[[email protected] yubico-c-client]$ autoreconf –install
[[email protected] yubico-c-client]$ ./configure
[[email protected] yubico-c-client]$ sudo make install
[[email protected] yubico-c-client]$

Rien que du très classique. La bibliothèque est installée comme il se doit dans /usr/local/lib. Je vous laisse d’ailleurs faire exactement la même chose avec yubikey-personalization dans un répertoire à côté, vous êtes grands après tout.

On peut maintenant répéter l’opération avec yubico-pam, à une astuce près : la dépendance ykpers-1 (yubikey-personalization) a été ajoutée très récemment et se vérifie via pkg-config. Il faut donc indiquer à ce dernier où trouver le fichier .pc qui va bien via la variable d’environnement PKG_CONFIG_PATH. Ce qui donne :

[[email protected] yubico-pam]$ cd ..
[[email protected] yubi]$ git clone https://github.com/Yubico/yubico-pam
[[email protected] yubi]$ cd yubico-pam/
[[email protected] yubico-pam]$ autoreconf –install
[[email protected] yubico-pam]$ PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig ./configure
[[email protected] yubico-pam]$ sudo make install
[[email protected] yubico-pam]$

Le module est installé dans /usr/local/lib/security. Pour que PAM puisse l’utiliser, il faut le mettre au bon endroit (et donc être root) :

# mv /usr/local/lib/security/pam_yubico.so /lib/security/
Configuration de PAM

Il faut maintenant indiquer à PAM que l’on veut pouvoir utiliser l’OTP de la Yubikey. Pour ce faire, on modifie /etc/pam.d/login pour y faire ajouter la ligne suivante :

auth            sufficient      pam_yubico.so id=16

Attention : si vous n’êtes pas très familiers avec PAM, sachez qu’il faut ajouter cette ligne au bon endroit. Je vous recommande de la mettre juste au-dessus de celle du module pam_unix.so. Si vous la placez trop haut, étant donné que le module est ici sufficient (suffisant), il shuntera les modules auth suivants, même s’ils sont required (requis) : pam_securetty ou pam_nologin seraient par exemple rendus inefficaces, ce qui PEUT être grave OU PAS. À vous de voir 🙂

Variantes possibles :

  • avec debug (conseillé en cas de souci)
    auth  sufficient  pam_yubico.so id=16 debug
  • avec gestion centralisée des identités
    auth  sufficient  pam_yubico.so id=16 authfile=<chemin absolu>

Note : pour observer les messages de debug, il suffit de créer le fichier /var/run/pam-debug.log et de le rendre inscriptible à tous.

Pour finir, il faut renseigner le système sur l’identité des yubikeys des utilisateurs. Il y a deux façons de le faire :

  • individuellement : il faut alors créer ~/.yubico/authorized_yubikeys pour chaque utilisateur ;
  • globalement : le fichier peut se trouver n’importe où, du moment que le chemin correspond à celui passé à authfile= ci-dessus évidemment.

Dans les deux cas, le format du fichier est :

<login>:<yubi ID1>:<yubi ID2>…

Pour le fichier global, ayez soin d’utiliser une ligne par enregistrement utilisateur. L’ID de chaque Yubikey peut facilement être récupéré en prenant les 12 premiers caractères de n’importe quel OTP généré.

Si tout s’est bien passé, au prochain login, vous devriez voir quelque chose dans ce genre :

Login console avec la Yubikey On effleure la clé, et c’est gagné 🙂

Application n°2 : authentification à 2 facteurs avec SSH

L’authentification à 2 facteurs est basée, comme son nom l’indique, sur deux moyens d’authentification différents. Ici, nous sommes dans le cas typique de “ce que l’on connaît” (un mot de passe classique) combiné avec “ce que l’on détient” (la Yubikey). Les deux seront combinés pour former un mot de passe hybride, que l’on va charger pam_yupico de valider. En image, ça donne ça :

Fonctionnement de l’authentification à 2 facteurs avec SHS et PAM

La marche à suivre est sensiblement la même que précédemment, sauf bien entendu pour ce qui est de la configuration de PAM. Ici, on va s’intéresser logiquement à /etc/pam.d/sshd. Tout d’abord, on y ajoute la ligne suivante :

auth       required     pam_yubico.so id=16

Par rapport à tout-à-l’heure, l’utilisation de la Yubikey est ici requise au lieu d’être suffisante. Du coup, on ne risque plus de shunter d’autre modules, mais il faut tout de même placer cette ligne AVANT celle de pam_unix.so.

Ensuite, il faut modifier les paramètres du module pam_unix.so. Celui-ci peut être configuré directement dans /etc/pam.d/sshd (ex. Archlinux), ou être appelé par un @include pointant sur /etc/pam.d/system-auth (ex. Gentoo) ou /etc/pam.d/common-auth (ex. Debian) : à vous d’adapter en fonction de ce que vous avez sous les yeux. L’important est d’ajouter l’option try_first_pass, de façon à ce que la ligne ressemble à ceci :

auth       required     pam_unix.so try_first_pass nullok

Une fois ces modifications faites, il ne reste plus qu’à vous connecter à la machine distante comme d’habitude ; mais au lieu de taper simplement Entrée pour valider le mot de passe, on va rajouter l’OTP de la Yubikey. En d’autres termes, au lieu de faire mot_de_passe+Entrée, on fait mot_de_passe+toucher_la_yubikey.

Et ça marche ! Sauf si bien sûr vous avez oublié de préciser PasswordAuthentication yes dans votre /etc/ssh/sshd_config … c’était pour voir si vous suiviez 😉

 

Si vous avez trouvé une erreur d’orthographe, veuillez nous en aviser en sélectionnant le mots et en appuyant sur Ctrl+Enter.

A propos de l'auteur

Sébastien T.

Sébastien T.

Passionné depuis toujours par l'informatique et les jeux vidéos, je transforme ma passion en expertise. J'utilise quotidiennement les outils et systèmes Microsoft. Je ne délaisse pas mon côté ouvert, notamment via l'utilisation des OS Debian et Archlinux.

Ajouter un commentaire

Cliquez ici pour poster un commentaire

Ce site est hébergé avec ❤ par

Heberge par Ikoula

Suivez nous sur les réseaux sociaux !

FR | GeekParadizeHub ➜ Communauté Multigaming

11 User(s) Online Join Server
  • Zento
  • Zack Loire
  • Marlon29
  • Anthonio_Loucass
  • UlysseLeGenie
  • BananeM63LGBT
  • ScreaX21
  • toxiclown
  • Leon Hartstrife

Abonnez-vous à notre newsletter

Recevez par email toute l'actualité High-Tech chaque matin
Abonnez-vous à notre newsletter et rejoignez les 945 autres abonnés.

2 - Entrer votre adresse email :

Tester votre débit

Acheter moins cher avec i-Comparateur

Rapport de faute d’orthographe

Le texte suivant sera envoyé à nos rédacteurs :