Ceci est une ancienne révision du document !
Comment s’authentifier avec une clé USB ?
Nous allons voir ici comment utiliser une clé usb pour se connecter verrouiller/déverrouiller son pc sous Ubuntu (testé sous gutsy mais doit fonctionner sur inférieur) grâce à pam-usb sans passer par la manière traditionnelle (login/mot de passe uniquement). L' idée est que si la clé n'est pas dans un des ports usb du pc, le pc n'est pas utilisable. Dans le cas ou la clé usb est insérée dans un autre ordinateur elle aura le comportement d' une clée usb classique, de plus vous pouvez utiliser votre clé usb comme clé usb de stockage (testé sans problèmes).
Ce tutoriel est une version améliorée du site d' origine: http://pamusb.org
Pré-requis
- Disposer des droits d'administration ;
- Disposer d'une connexion à Internet configurée et activée ;
- Savoir se servir d'un terminal
Installation
Il vous suffit, pour cela, d'installer les paquets apt://libpam-usb et apt://pamusb-tools.
Configuration
Une fois les paquets installés nous allons, dans un premier temps spécifier la clé usb qui verrouillera/déverrouillera l' ordinateur. Pam-usb créera une clé cryptée à la racine de cette clé usb dans le dossier caché ".pam-usb"
- Insérez la clé usb dans un des ports du pc
- Ouvrez un terminal et tapez le code suivant:
$ sudo pamusb-conf --add-device nom_de_ma_clé
pamusb-conf va lister les périphériques usb montés sur l'ordinateur, dans le cas où il n'y en a qu'un il vous le proposera d'office, il suffira donc de taper Y et entrée:
Please select the device you wish to add. * Using "SanDisk Corp. Cruzer Titanium (SNDKXXXXXXXXXXXXXXXX)" (only option) Which volume would you like to use for storing data ? * Using "/dev/sda1 (UUID: <6F6B-42FC>)" (only option) Name : MyDevice Vendor : SanDisk Corp. Model : Cruzer Titanium Serial : SNDKXXXXXXXXXXXXXXXX Volume UUID : 6F6B-42FC (/dev/sda1) Save to /etc/pamusb.conf ? [Y/n] y Done.
dans le cas ou il y en a plusieurs il les liste et leur attribue un numéro, à vous de choisir celui que vous voulez. Laissez le terminal ouvert.
Nous allons maintenant définir les utilisateurs concernés par le verrouillage/déverrouillage, pour cela tapez dans le terminal:
sudo pamusb-conf --add-user nom_d_utilisateur
Vous obtenez:
Which device would you like to use for authentication ? * Using "MyDevice" (only option) User : nom_d_utilisateur Device : MyDevice Save to /etc/pamusb.conf ? [Y/n]
Tapez Y et la touche entrée pour confirmer.
À cette étape nous ajoutons sudo afin qu' il soit authentifié par pam-usb, sans cela vous ne pourrez avoir accès aux commandes nécessitantes de passer par sudo
sudo pamusb-conf --add-user sudo Which device would you like to use for authentication ? * Using "MyDevice" (only option) User : sudo Device : MyDevice Save to /etc/pamusb.conf ? [Y/n] y Done.
Laissez le terminal ouvert.
Nous allons simuler l'authentification d'un utilisateur pour voir si cela fonctionne, tapez dans le terminal
pamusb-check sudo
l'opération devrait se dérouler comme ceci:
pamusb-check sudo * Authentication request for user "sudo" (pamusb-check) * Device "MyDevice" is connected (good). * Performing one time pad verification... * Verification match, updating one time pads... * Access granted.
Laissez le terminal ouvert.
Deux possibilités: -Ça ne marche pas: vous avez raté les configs, désinstallez complètement puis réinstallez pam-usb et reprenez depuis le début (tapez dans le terminal):
sudo apt-get remove --purge libpam-usb pamusb-tools && sudo apt-get autoremove && sudo apt-get install libpam-usb pamusb-tools
-Ça marche: on continue
sudo gedit /usr/bin/pamusb-agent
remplacez la ligne 30:
import xml.elementtree.ElementTree as et
par:
import xml.etree.ElementTree as et
Enregistrez le fichier et fermez le
Nous allons commencer par faire une copie de /etc/pam.d/common-auth, tapez dans le terminal:
sudo cp /etc/pam.d/common-auth /etc/pam.d/common-auth.back
Puis nous allons éditer /etc/pam.d/common-auth afin que la présence de la clé soit indispensable pour déverrouiller ou se connecter à l' ordinateur, tapez dans le terminal:
sudo gedit /etc/pam.d/common-auth
Votre fichier devrait ressembler à ça:
# # /etc/pam.d/common-auth - authentication settings common to all services # # This file is included from other service-specific PAM config files, # and should contain a list of the authentication modules that define # the central authentication scheme for use on the system # (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the # traditional Unix authentication mechanisms. # auth requisite pam_unix.so nullok_secure auth optional pam_smbpass.so migrate missingok
Nous allons insérer la ligne suivante:
auth required pam_usb.so
et remplacer
auth requisite pam_unix.so nullok_secure
par
auth required pam_unix.so nullok_secure
pour obtenir:
# # /etc/pam.d/common-auth - authentication settings common to all services # # This file is included from other service-specific PAM config files, # and should contain a list of the authentication modules that define # the central authentication scheme for use on the system # (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the # traditional Unix authentication mechanisms. # auth required pam_usb.so auth required pam_unix.so nullok_secure auth optional pam_smbpass.so migrate missingok
Nous allons ajoutter pamusb-agent aux services à démarrer automatiquement au démarrage (hem^^), pour cela nous allons dans système>préférences>sessions, on clic sur ajouter puis nous entrons
pamusb
pour le nom et
pamusb-agent
pour la commande
Et voila le tour est joué . Il vous faudra maintenant votre clé usb + votre mot de passe pour vous connecter ou déverrouiller l'ordinateur. Si vous voulez uniquement utiliser la clé usb et ne plus avoir à taper de mot de passe, au moment de l'édition de "/etc/pam.d/common-auth" commentez la ligne "auth required pam_unix.so nullok_secure", votre fichier doit alors être:
# # /etc/pam.d/common-auth - authentication settings common to all services # # This file is included from other service-specific PAM config files, # and should contain a list of the authentication modules that define # the central authentication scheme for use on the system # (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the # traditional Unix authentication mechanisms. # auth required pam_usb.so #auth required pam_unix.so nullok_secure auth optional pam_smbpass.so migrate missingok
vous n'avez plus besoin de taper votre mot de passe pour vous connecter ou déverrouiller le pc
Utilisation
Nous avons vu "connecter" et "déverrouiller" l'ordinateur mais qu'en est-il du verrouillage dans le cas ou vous êtes déja connecté et votre ordinateur est allumé?
La doc officielle montre comment déclencher et bloquer l'écran de veille au démontage de la clé et désactiver l'écran de veille au remontage de celle-ci mais cela ne marche que quand la clé usb est OPTIONELLE (sufficient) et non NÉCESSAIRE (requierd) au déverrouillage, ce qui de ce fait ne vérouille pas le pc sans la clé usb.
La seule alternative que j'ai trouvée est de régler l'économiseur d'écran (>système>préférences>économiseur d' écran) pour qu'il s'active à une minute et qu'il soit bloqué (vérouillez l'option: "Verrouiller l'écran quand l' économiseur d'écran est actif" dans le géstionnaire d'économiseur d'écran) Si vous devez laisser votre ordinateur travailler et que personne n'y accède il vous suffit de déconnecter votre clé usb, le temps de vous préparer à faire autre chose (environ une minute minimum ) l'économiseur d'écran sera activé et votre pc sera vérouillé… Il vous suffira à votre retour de connecter la clé et de rentrer votre mot de passe (ou simplement bouger la souris ou appuyer sur une touche du clavier si vous avez désactivé l'authentification par mot de passe) pour vous reconnecter. Le montage de la clé usb prend quelques secondes donc ne paniquez pas en cas d'échec à la première tentative de déverrouillage par mot de passe et recommencez
Désinstallation
Pour supprimer cette application, il suffit de supprimer les paquet, rentrez dans un terminal:
sudo apt-get remove --purge libpam-usb pamusb-tools
sudo mv -f /etc/pam.d/common-auth.back /etc/pam.d/common-auth
Problèmes
Impossible de se connecter
Redémarrez l'ordinateur, affichez grub si il ne se fait pas de lui même (tapotez la touche esc après le démarrage du bios) Choisissez le démarrage de secours (recovery mode) et choisissez le shell root. remplacez le fichier /etc/pam.d/common-auth par la sauvegarde:
mv -f /etc/pam.d/common-auth.back /etc/pam.d/common-auth
Redémarrez. La méthode d' authentification traditionnelle est rétablie, il ne vous reste plus qu'à reprendre à "ça marche pas" dans la partie "configuration". En aucun cas l' absence de la clé usb vous empêchera d' ouvrire la session recovery.