Authentification Multi-Facteur

Même étant unique et complexe, un mot de passe n’offre pas une sécurité inviolable. La base de donnée d’un système contenant les mots de passe des utilisateurs peut être dérobée ou un logiciel espion (keylogger) peut enregistrer les mots de passe au moment où ils sont tapés par l’utilisateur. Dans le but de renforcer l’authentification, on peut faire intervenir plusieurs facteurs d’authentication permettant de s’assurer que l’utilisateur souhaitant se connecter est bien la personne qu’il prétend être. C’est ce que l’on appelle l’authentification multifacteur en prenant les 3 facteurs suivants :

Ce que je sais : Un mot de passe ou un code secret

Ce que je possède: Un smartphone, un badge, une carte à puce

Ce que je suis : Une empreinte digitale, la reconnaissance faciale

La Yubikey est une clé physique contenant une carte à puce certifiée FIDO implémentant des protocoles comme PGP et permettant de réaliser des opérations de chiffrement/déchiffrement de clés, données, générer des One Time Password (OTP) uniques….. C’est donc un facteur de type ce que je possède disposant d’une utilisation polyvalente car elle est compatible avec bon nombre de protocoles, d’outils, et d’applications.

Dans cet article, nous allons utiliser la Yubikey comme un facteur de double authentification pour la connexion à distance en SSH à une machine. On la qualifie de facteur de double authentification ici car on fera intervenir 2 facteurs d’authentification :

Le mot de passe du compte utilisateur souhaitant se connecter à distance en SSH à la machine qui est un facteur de type ce que je sais

Un code OTP temporaire généré par un facteur de type ce que je possède qui est la Yubikey

Une fois configuré, en cas de tentative de connexion en SSH à une machine, un One Time Password devra être généré grâce à un appui sur la yubikey et devra être vérifié par le serveur distant en prenant en compte un certain nombre de paramètres, avant que la connexion ne soit permise.

Installation du paquet requis
sudo apt-get install libpam-yubico
Configuration

Nous allons créer un dossier . yubico dans le dossier personnel de l’utilisateur avec lequel nous nous connecterons en SSH

sudo mkdir ~/.yubico

Dans ce répertoire, nous allons créer le fichier authorized_yubikeys qui va contenir la correspondance entre le nom de l’utilisateur et la Yubikey qui sera utilisée pour la connexion en SSH. Ensuite, nous allons éditer ce fichier et y ajouter la directive suivante :

username:token_ID

username designe le nom de l’utilisateur du dossier personnel dans lequel nous nous trouvons et qui devras fournir un OTP en cas de tentative de connexion en SSH

token_ID désigne l’ID de la yubikey qui peut être obtenu en exécutant la commande suivante dans un terminal :

read -p "Faites un appui sur la yubikey :" s && echo "l'ID de la yubikey est :" ${s:0:12}

Nous nous rendons ensuite dans le fichier /etc/pam.d/sshd dans lequel nous ajoutons la directive auth required pam_yubico.so id=16 après la directive "@include common-auth"

Nous éditions ensuite le fichier /etc/ssh/sshd_config et nous modifions la directive ChallengeResponseAuthentication no en ChallengeResponseAuthentication yes

Une fois ces modifications réalisées, nous pouvons redémarrer le service SSH avec la commande suivante :

sudo systemctl restart sshd

Maintenant, en essayant de se connecter en SSH sur la machine avec l’utilisateur pour lequel nous avons activé la double authentification avec la Yubikey, un OTP devrat être fourni avec un appui sur la Yubikey.