Léa-Linux & amis :   LinuxFR   GCU-Squad   Zarb.Org   GNU
S'identifier par une clé USB


S'identifier par une clef USB

Objectif

Permettre l'identification d'un utilisateur par une clé USB, en remplacement ou en complément du mot de passe

Logiciels et matériel utilisés

Distribution : Debian, mais cela est normalement possible avec toutes...

Logiciel : pam_usb, un module dédié à cette utilisation pour PAM. PAM est un mécanisme d'authentification intégré à beaucoup de distributions GNU/Linux. Attention cette méthode ne fonctionne pas avec les gestionnaires de connexion graphique comme KDM, GDM, XDM, etc. Elle est uniquement valable pour un login en mode texte.

N'importe quelle clé USB reconnue sous Linux devrait convenir. La capacité nécessaire est infime : 1 Ko suffit pour un utilisateur, avec une clé DSA de 1024 bits !

Une bonne solution pour encore plus de sécurité est de partitionner votre clé : vous pouvez créer une petite partition à la fin de la clé, d'environ 1 Mo (ce qui est largement suffisant pour stocker quelques clés, en théorie on pourrait en mettre 500 dans 1 Mo !) Ainsi, vos clés ne seront pas confondues avec le reste de vos données et il n'y a pas de risque de les effacer.

Installation du module

Il n'existe malheureusement pas (encore) de paquet pour Debian. Si vous utilisez une autre distribution, essayer de vérifier s'il n'existe pas un paquet, si vous êtes sous Debian, téléchargez les sources sur le site officiel : [1]

Sur une Debian "'sarge" les dépendances requises sont : libssl-dev, libreadline4-dev, libpam0g-dev, libpam-usb, que vous pouvez installer par apt-get. Sur Debian "etch" (testing", il faut installer tout ca et en plus libreadline5 et libreadline5-dev

Ensuite, il faut extraire les sources et lancer la compilation :

$ tar xvzf pam_usb-version.tar.gz
$ cd pam_usb_version
$ make
$ su puis taper le mot de passe root
# make install

Et c'est tout, le module est normalement installé, s'il vous n'obtenez pas d'erreur à la compilation, auquel cas il vous faut vérifier que toutes les dépendances sont bien installées...

Préparation du système

Montage automatique de la clé

Il faut que votre clé soit montée automatiquement lorsque vous l'insérez, sinon, ca ne fonctionnera pas (encore que sur mon système cela à fonctionné sans monter la clé...) Il faut donc créer une ligne dans votre /etc/fstab qui ressemble à celle-ci :

/dev/sda1 /media/cle auto rw,user,auto 0 0

en remplaçant /dev/sda1 par le périphérique qui correspond à votre clé, /media/cle par son point de montage, et auto par son système de fichiers (vous pouvez aussi laisser auto pour une détection automatique)

Pour plus de détails sur l'utilisation des clés USB vous pouvez consulter cet article Hardware-hard stock-cleusb

Génération des clés

Génération des clés

Il faut à présent générer la paire de clés publique/privée qui sera utilisée pour vous identifier. Dans une console tapez

% usbadm keygen /media/cle login 2048

en remplaçant /media/cle par le point de montage de votre clé et login par le nom d'utilisateur pour lequel vous voulez générer les clés. 2048 correspond à la taille de la clé, on estime que c'est suffisant, compte tenu de la puissance des ordinateurs actuels, pour une assez grande sécurité. Cependant, n'oubliez pas que n'importe quelle clé sera toujours "piratable".

Vous obtiendrez :

[!] Generating 2048 DSA key pair for thomas@p3thomas
[!] Extracting private key...
[+] Private key extracted.
[+] Private key successfully written.
[!] Writing public key...
[+] Public key successfully written.

Vos clés ont donc été générées dans un dossier caché nommé .auth de votre clé USB.

Il faut répéter cette opération pour tous les utilisateurs qui veulent utiliser leur clé pour s'identifier.

Facultatif : cryptage des clés

Pour plus de sécurité, il est possible de crypter les clés, par la commande

% usbadm cipher /media/cle login
il vous sera demandé l'algorithme à utiliser : 
[!] Importing the private key...
[+] Private key imported
[!] Encrypting the private key may prevent someone to authenticate with
your key. The drawback is that pam_usb will prompt you for password
every time you authenticate.
[?] Which algorithm want you to use ? (none/des3/twofish): 

Pour pouvoir protéger votre clé par une passphrase, il faut choisir des3.

Il vous sera demandé la passphrase, qu'il vous sera ensuite nécessaire de taper à chaque utilisation de la clé, c'est à dire à chaque identification.

Et votre clé est cryptée !

Paramètrage du système

Il ne reste plus qu'à modifier le comportement de PAM pour qu'il prenne en compte le module pam_usb. Trois cas (ou plus ?) sont possibles :

  • Identification par clé USB uniquement. Aucun mot de passe (sauf la passphrase de la clé DSA si vous en avez une) ne sera requis
  • Identification par clé et par mot de passe. Votre mot de passe sera comme avant demandé, mais si la clé USB n'est pas présente vous ne pourrez pas vous identifier. C'est la solution la plus sure, mais aussi la moin pratique.
  • Identification par clé USB ou par mot de passe. L'un ou l'autre suffit.

Dans les trois cas tout se passera dans les fichiers du répertoire /etc/pam.d Pour utiliser cette méthode uniquement au moment du login, il faut modifier le fichier /etc/pam.d/login. Pour l'utiliser à toutes les identifications, il faut agir sur le fichier /etc/pam.d/common-auth


Identification par clé uniquement

Il faut modifier le fichier /etc/pam.d/common-auth comme suit :

auth required usb_pam.so

et commenter la ligne :

auth required pam_unix.so nullok_secure

Identification par clé et mot de passe

Il faut comme précédemment ajouter la ligne

auth required usb_pam.so

et laisser le reste du fichier tel quel.

Identification par clé ou par mot de passe

Ajouter la ligne au fichier /etc/pam.d/common-auth

auth sufficient usb_pam.so

Faire les essais !

Normalement vous pouvez vous délogguer, et faire l'essai ! Dans un premier temps je vous conseille d'utiliser l'authentification par clé ou par mot de passe, car, si l'identification par clé ne fonctionne pas, vous pourrez toujours vous logguer avec votre mot de passe pour corriger ce qui ne va pas.

Rattraper les erreurs

Si par malheur vous avez modifié le fichier en mettant auth required pam_sub.so et que votre clé ne fonctionne plus, alors vous ne pouvez plus vous loguer ! La solution consiste à booter sur un Live-CD, monter votre partition système, et modifier le fichier pour supprimer l'identification par clé.

(à tester) Une autre solution consiste à booter sur un kernel avec l'option single. En général les kernels marqués par failsafe dans le bootloader comportent cette option.




@ Retour à la rubrique Réseau et sécurité

Copyright

© 28 fév 2006 Thomas.debay

Creative Commons License
Creative Commons Attribution iconCreative Commons Share Alike icon
Ce document est publié sous licence Creative Commons
Attribution, Partage à l'identique 3.0 :
http://creativecommons.org/licenses/by-sa/3.0/
Views
Jump to: navigation, search
Personal tools

Serveur hébergé par ST-Hebergement et Lost-Oasis / IRC hébergé par FreeNode / NS secondaire hébergé par XName
Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons CC-BY-SA