Recherche de site Web

Authentification par jeton USB sous Linux


Cet article décrit une méthode permettant d’utiliser un périphérique de mémoire USB comme jeton d’authentification pour se connecter à un système Linux au lieu d’un mot de passe traditionnel. Cela peut être accompli en utilisant des modules d’authentification enfichables (PAM) et une sorte de périphérique de stockage USB tel qu’une clé USB d’un téléphone portable avec une carte SD attachée.

Cette technique d’authentification peut également être étendue à l’authentification à deux facteurs où deux méthodes d’authentification impliquant un jeton USB et un mot de passe à usage unique peuvent être fusionnées pour produire une plus grande sécurité. Cet article est écrit à l’aide des systèmes Linux Ubuntu. Cependant, les utilisateurs d’autres distributions Linux devraient être en mesure de suivre les étapes décrites ci-dessous pour obtenir les mêmes résultats.

Dans ce tutoriel, vous allez apprendre :

  • Comment installer l’authentification USB PAM sur les principales distributions Linux
  • Comment configurer la connexion avec une clé USB

Installer l’authentification PAM sur les principales distributions Linux

Le logiciel pam_usb, autrefois largement disponible pour l’installation sur n’importe quelle distribution Linux majeure, n’existe plus dans aucun dépôt de paquets. Cependant, il est maintenu sur GitHub. Nous utiliserons cette version pour configurer l’authentification PAM pour notre clé USB.

La première chose que nous devons faire est d’installer les prérequis pour pam_usb, puis de télécharger le programme et de le compiler sur notre système.

Vous pouvez utiliser la commande appropriée ci-dessous pour installer les pam_usb conditions préalables avec le gestionnaire de paquets de votre système.

Pour installer les pam_usb prérequis sur Ubuntu, Debian et Linux Mnt :


sudo apt install git libxml2-dev libpam0g-dev libudisks2-dev libglib2.0-dev gir1.2-udisks-2.0 python3 python3-gi

Pour installer les pam_usb conditions préalables sur Fedora, CentOS, AlmaLinux et Red Hat :


sudo dnf install git libxml2-devel pam-devel libudisks2-devel glib2-devel python3-gobject

Ensuite, nous allons cloner le dépôt GitHub pam_usb et compiler le code pour l’installer.


git clone https://github.com/mcdope/pam_usb.git
cd pam_usb/
make
sudo make install

Ajouter un périphérique USB à la configuration PAM

À l’étape suivante, nous ajouterons un périphérique USB que nous avons l’intention d’utiliser avec l’authentification PAM. Cela peut être fait avec une commande pamusb-conf ou manuellement en modifiant le fichier /etc/pamusb.conf. L’utilisation de la commande pamusb-conf réduit considérablement le temps et la difficulté de cette opération. Connectez votre périphérique USB et exécutez la commande linux suivante avec le nom de votre périphérique USB comme argument. Le nom peut être ce que vous voulez. Dans ce cas, on utilise « my-usb-stick » :


sudo pamusb-conf --add-device my-usb-stick
Please select the device you wish to add.
* Using "Verbatim STORE N GO (Verbatim_STORE_N_GO_07A10D0894492625-0:0)" (only option)

Which volume would you like to use for storing data ?
0) /dev/sdb2 (UUID: A842-0654)
1) /dev/sdb1 (UUID: CAAF-0882)

[0-1]: 0

Name            : my-usb-stick
Vendor          : Verbatim
Model           : STORE N GO
Serial          : Verbatim_STORE_N_GO_07A10D0894492625-0:0
UUID            : A842-0654

Save to /etc/pamusb.conf ?
[Y/n] Y
Done.

Le pamusb-conf est assez intelligent pour découvrir notre périphérique USB, y compris plusieurs partitions. Après avoir terminé cette étape, un bloc de code XML a été ajouté dans le fichier de configuration /etc/pamusb.conf pour définir notre périphérique USB.

 
	 
		 
			Verbatim 
		 
		 
			STORE N GO 
		 
		 
			Verbatim_STORE_N_GO_07A10D0894492625-0:0 
		 
		 
			A842-0654 
		 
	

Définir un utilisateur pour l’authentification PAM

C’est évident, mais il convient de mentionner que nous pouvons ajouter plusieurs périphériques USB dans la configuration PAM, et en même temps nous pouvons définir plusieurs utilisateurs pour un ou plusieurs périphériques USB. Dans notre exemple, nous allons simplifier les choses en définissant un périphérique USB à utiliser comme informations d’identification par un seul utilisateur. Si l’utilisateur « ubuntu-user » existe sur notre système, nous pouvons l’ajouter à la configuration PAM avec une commande linux suivante :


sudo pamusb-conf --add-user ubuntu-user
Which device would you like to use for authentication ?
* Using "my-usb-stick" (only option)

User            : ubuntu-user
Device          : my-usb-stick

Save to /etc/pamusb.conf ?
[Y/n] y
Done.

La définition d’un utilisateur pam_usb a été ajoutée dans la configuration de /etc/pamusb.conf :


 
        my-usb-stick 
 

Configurer PAM pour utiliser pam_usb bibliothèque

À ce stade, nous avons défini un périphérique USB « my-usb-stick » à utiliser comme identifiant d’authentification pour un utilisateur « ubuntu-user ». Cependant, la bibliothèque PAM à l’échelle du système n’est pas encore au courant du module pam_usb. Pour ajouter pam_usb dans un processus d’authentification système, nous devons modifier le fichier /etc/pam.d/common-auth.

REMARQUE : Si vous utilisez le système Linux RedHat ou Fedora, ce fichier peut être connu sous le nom de /etc/pam/system-auth. Votre configuration PAM common-auth par défaut doit inclure la ligne suivante :


auth    required        pam_unix.so nullok_secure

Il s’agit d’une norme actuelle qui utilise /etc/passwd et /etc/shadow pour authentifier un utilisateur. L’option « obligatoire » signifie que le mot de passe correct doit être fourni pour que l’utilisateur puisse accéder au système. Modifiez votre configuration pour :

REMARQUE : Avant d’apporter des modifications à /etc/pam.d/common-auth, ouvrez un terminal séparé avec un accès root. C’est juste au cas où quelque chose tournerait mal, et que vous auriez besoin d’un accès root pour changer /etc/pam.d/common-auth à la configuration d’origine.


auth    sufficient      pam_usb.so
auth    required        pam_unix.so nullok_secure

À ce stade, l’utilisateur « ubuntu-user » peut s’authentifier avec son périphérique USB approprié branché. Ceci est défini par une option « suffisante » pour pam_usb bibliothèque.


su ubuntu-user
* pam_usb v0.4.2
* Authentication request for user "ubuntu-user" (su)
* Device "my-usb-stick" is connected (good).
* Performing one time pad verification...
* Regenerating new pads...
* Access granted.

REMARQUE : Si vous obtenez une erreur :


Error: device /dev/sdb1 is not removable
* Mount failed

Normalement, cette erreur ne devrait pas se produire, mais en tant que solution temporaire, ajoutez un chemin complet à votre périphérique USB de bloc dans /etc/pmount.allow. Par exemple, si une erreur de connexion ou une commande :


sudo fdidk -l

j’ai listé mon périphérique USB et ma partition comme /dev/sdb1 , ajoutez une ligne :


/dev/sdb1

dans /etc/pmount.allow pour résoudre ce problème. Il ne s’agit que d’une solution temporaire, car votre périphérique USB peut être reconnu différemment chaque fois qu’il est connecté au système. Dans ce cas, une solution peut être d’écrire des règles USB udev.

Dans le cas où le périphérique USB défini pour un « ubuntu-user » n’est pas présent dans le système, l’utilisateur devra entrer un mot de passe correct. Pour forcer l’utilisateur à avoir les deux routines d’authentification en place avant d’accorder un accès au système, remplacez « suffisant » par « requis » :


auth    required      pam_usb.so
auth    required        pam_unix.so nullok_secure

Maintenant, l’utilisateur devra entrer un mot de passe correct ainsi qu’insérer un périphérique USB.


su ubuntu-user
* pam_usb v0.4.2
* Authentication request for user "ubuntu-user" (su)
* Device "my-usb-stick" is connected (good).
* Performing one time pad verification...
* Access granted.
Password:

Testons-le avec un périphérique USB débranché et un mot de passe correct :


su ubuntu-user
* pam_usb v0.4.2
* Authentication request for user "ubuntu-user" (su)
* Device "my-usb-stick" is not connected.
* Access denied.
Password:
su: Authentication failure

Événement et pam_usb de périphérique USB

En plus de l’authentification de l’utilisateur USB, un événement de périphérique USB peut être défini pour être déclenché chaque fois qu’un utilisateur se déconnecte ou se connecte à un périphérique USB à partir d’un système. Par exemple, pam_usb pouvez verrouiller un écran lorsqu’un utilisateur déconnecte un périphérique USB et le déverrouiller à nouveau lorsqu’un utilisateur se connecte à un périphérique USB. Cela peut être accompli par une simple modification du bloc de code XML de définition de l’utilisateur dans le fichier /etc/pamusb.conf.

Réflexions finales

Dans ce tutoriel, nous avons vu comment installer le paquet pam_usb sur un système Linux et utiliser l’authentification PAM pour configurer l’accès à une clé USB. Il s’agit d’une excellente alternative à la saisie d’un mot de passe à chaque fois que vous devez vous connecter, et cela peut également être plus sûr.

Articles connexes: