Comme je l’ai déjà répété à de nombreuses reprises l’authentification forte (2FA) c’est la vie et je vous recommande fortement de la mettre en place dès lors que cette option vous est proposée. Nous allons donc aujourd’hui voir comment mettre en place une authentification double facteur avec une Yubikey sur un serveur SSH.

 

 

Authentification forte (2FA) Yubikey SSH : Vous avez dit Yubikey ?

Une Yubikey est un dispositif d’authentification USB vous permettant d’utiliser différentes méthodes d’authentification : FIDO U2F, Yubico-OTP, OATH-OTP, OATH-HOTP, OATH-TOTP, OpenPGP, et PIV. Lorsqu’elle est connectée à votre ordinateur la Yubikey simule un clavier USB. Deux méthodes d’authentification sont paramétrables via ses deux slots de configuration, elle pourra réagir à une stimulation physique (pression du bouton) ou automatiquement (via des logiciels). Si vous souhaitez en savoir plus sur le fonctionnement des Yubikeys je vous conseille cet article rédigé par Aeris et le wiki de Maxime de Roucy.

 

 

Authentification forte (2FA) Yubikey SSH : Clé API

Avant de pouvoir commencer nous allons devoir récupérer une clé d’API Yubico. Ouvrez cette page, renseignez votre email, générez un code OTP en appuyant sur le bouton de votre Yubikey et validez.

Sauvegardez les identifiants qui s’affichent.

 

 

Authentification forte (2FA) Yubikey SSH : Installation et configuration

Commençons par nous connecter à notre serveur puis récupérons la librairie requise en lançant la commande

sudo apt-get install libpam-yubico

 

Maintenant ouvrez le fichier /etc/pam.d/sshd

sudo nano /etc/pam.d/sshd

 

Recherchez  @include common-auth puis juste en-dessous ajoutez

auth required pam_yubico.so id=mon-id key=ma-cle url=https://api.yubico.com/wsapi/2.0/verify?id=%d&otp=%s

 

 

Authentification forte (2FA) Yubikey SSH : Lien Yubikey / Utilisateur

Maintenant que tout est en place nous allons devoir faire le lien entre chaque Yubikey et chaque utilisateur. Ce lien fonctionne sous le même modèle que pour les clés SSH cependant les informations doivent etre stockées dans ~/.yubico/authorized_yubikeys au format suivant utilisateur:yubikeyid1:yubikeyid2.

Pour récupérer votre yubikeyid lancez la commande suivante, puis appuyez sur le bouton de votre Yubikey

read -p "Enter a YubiKey OTP: " s && echo 'The key id is' ${s:0:12}

 

Exemple :

root@noobunbox:~# read -p "Enter a YubiKey OTP: " s && echo 'The key id is' ${s :0:12}
Enter a YubiKey OTP: vvukdhrutoplhftvrucnhgnvjnjjkfbeeeibbhejckie
The key id is vvukdhrutopl

 

Maintenant créons le fichier nécessaire, ici pour l’utilisateur root

mkdir ~/.yubico
nano ~/.yubico/authorized_yubikeys

 

Nous pouvons maintenant faire le lien entre notre utilisateur, root, et notre yubikeyid, vvukdhrutopl, en insérant dans ce fichier

root:vvukdhrutopl

 

Relancez la configuration du serveur SSH

sudo service sshd reload

 

Une fois les modifications effectuées ne fermez pas votre connexion SSH, ouvrez en une seconde et vérifiez que tout fonctionne.

 

 

Authentification forte (2FA) Yubikey SSH : Gestion authentification par utilisateur

Maintenant quelques problèmes peuvent se poser :

  • Que faisons-nous si nous avons avez d’autres users SSH se connectant au serveur n’ayant pas ou ne pouvant pas utiliser de Yubikey (rsync par exemple) ?
  • Je suis un fou, je veux m’authentifier avec mot de passe + yubikey + clé SSH, je fais comment ?

 

Hé bien c’est assez simple puisqu’il suffit de modifier la configuration du serveur SSH.

sudo nano /etc/ssh/sshd_config

 

Pour un utilisateur scripts nous souhaitons utiliser seulement une authentification par clé, il nous suffira d’ajouter les lignes de configuration suivante

Match User scripts
AuthenticationMethods publickey

 

Pour l’utilisateur root nous souhaitons utiliser une authentification mot de passe + yubikey et par clé

Match User root
AuthenticationMethods publickey,keyboard-interactive

 

 

Authentification forte (2FA) Yubikey SSH : Démo

Ci-dessous une petite démo d’une authentification sur un serveur avec publickey + mot de passe / yubikey
 
 

Sources

 


Novakin

Passionné d'informatique depuis de longues années je me suis tourné vers Linux et des solutions de virtualisation il y a peu. Ce blog est une sorte de carnet de web où je partage mes mémos.

S’abonner
Notification pour

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

7 Commentaires
Le plus ancien
Le plus récent Le plus populaire
Commentaires en ligne
Afficher tous les commentaires

Alors là SSH devient vraiment sécurisé avec ça, je ne pensais pas cela possible ! Il serait temps que je pense à acquérir cette fameuse Yubikey 😀

Par contre une question (qui concerne le fichier authorized_keys, mais qui peut se rapporter à authorized_yubikeys aussi), personnellement j’ai crée un seul fichier stocké dans /etc/shh qui contient toutes les clés autorisées. Je sais que de base ce fichier est stocké dans /home/xxx/.ssh, du coup est-il plus sécurisant de le laisser à son emplacement par défaut ou ça ne change rien ?

sa ne marche pas pour moi sa marche pas accée denied

sa marche falait juste que je face sa jai pompé sa sur un autre tuto
sudo groupadd yubikey
sudo usermod -aG yubikey yubiuser

sinon s amarcher pas
et en plus le truc cool se que se qui son pas dans le group bha peuvent sautentifier normalement

Je ne me rappelle pas avoir eu besoin de faire cette manip.

Il faudrait que je le reteste

salut dit jai un probleme sa a bug et maintenant tous le monde a besoin d’une yubikey pour s’authentifier hors ton truc la

Match User ishower
AuthenticationMethods publickey

ne marche pas sa plante le service ssh a et je voudrez que autentification par passworld pour certain utilisateur car la c’est parti en vrille

merci d’avance de ton aide

7
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x