Cette page n'a pas encore d'étiquettes.
Apportez votre aide…

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 il devrait fonctionner sur une version antérieure) 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é 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 de celle du site d'origine: http://pamusb.org.

Je vous conseille fortement de lire ce tutoriel en entier avant de commencer pour être sûr de ne pas faire de bourde. En cas de mauvaise configuration vous pourriez ne plus pouvoir vous connecter à votre PC (la fin du tutoriel traite de la récupération de la connexion en cas de fausse manipulation ou de perte de la clé USB ;-) )
Pour Oneiric Ocelot les packages n'ont pas été fournis pour notre distribution préférée :-/. Il faut donc dans ce cas précis se tourner vers la compilation à la main ! Pour les fans de lecture en anglais :http://ubuntuforums.org/showthread.php?t=17571. Pour les autres, bien lire tout le tutoriel comme conseillé et s'attarder sur la partie compilation de ce tuto.
  • Disposer des droits d'administration ;
  • Disposer d'une connexion à Internet configurée et activée ;
  • Savoir se servir d'un terminal.

Avec les paquets

Il vous suffit, pour cela, d'installer les paquets apt://libpam-usb et apt://pamusb-tools.

Compilation (pour Oneiric)

Si ces paquets ne sont pas fournis (Oneiric), il faut aller chercher les sources ici : http://www.pamusb.org/

Ou pour ceux qui voudraient utiliser une carte SD en lieu et place d'une clé USB, la source via ce fork : https://github.com/saro/pam_usb/tree/ Il s'agit d'une modification de la sécurité de votre système, il convient donc de choisir la source de ce programme avec attention ! Cette source a été testée sur Ubuntu 11.10 par anotherubuntuuser Le 11/03/2012, 17:45. Fonctionnel dans mon cas, l'émetteur du code semble fiable et impliqué dans le projet, mais à vos risques et péril, comme toujours. :-D

Il vous faudra aussi des paquets supplémentaires, il est question ici d'utiliser : libncurses5-dev, libreadline4-dev, GCC (Bien entendu, c'est le compilateur), libssl-dev. Dans mon cas, il m'a suffit d'installer les paquets apt://libxml2-dev apt://libpam0g-dev et apt://libdbus-1-dev.

Vient ensuite la décompression, la compilation, puis l'installation du tout (vérifier et changer en conséquence le numéro de version du tar.gz téléchargé):

tar xvzf pam_usb-0.3.2.tar.gz
./configure
make
make install
En cas d'erreur lors de la compilation (make), ne pas hésiter à rechercher les librairies manquantes, une recherche avec les mots clés "ubuntu" et la librairie qui semble manquer, exemple : "libxml-2.0" dans votre moteur de recherche préféré est très efficace et rapide !

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"

  1. Insérez la clé USB dans un des ports du PC.
  2. Ouvrez un terminal et tapez le code suivant :
$ sudo pamusb-conf --add-device nom_de_ma_clé 
"nom_de_ma_clé" est à remplacer par le nom que vous voulez donner à votre 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 où 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.

Il est préférable de n'avoir que la clé USB voulue de connectée pour éviter toute confusion au moment de cette manipulation
Pour ceux qui tentent d'utiliser une SD card plutôt qu'une clé USB, le périphérique est appelé mmcblk0 ou équivalent

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 
"nom_d_utilisateur" est à remplacer par votre 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.

Laissez le terminal ouvert.

Nous allons simuler l'authentification d'un utilisateur pour voir si cela fonctionne, tapez dans le terminal :

pamusb-check nom_d_utilisateur

l'opération devrait se dérouler comme ceci:

pamusb-check --service=sudo nom_d_utilisateur 
* Authentication request for user "nom_d_utilisateur" (sudo)
* Device "MyDevice" is connected (good).
* Performing one time pad verification...
* 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 8-)

Configuration de PAM

C'est lui qui autorise l'authentification.

L'opération suivante est délicate, si vous vous ratez vous ne pourrez peut-être plus vous connecter à votre ordinateur!

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 clef soit indispensable pour s'authentifier auprès des différentes applications (login, gdm,sudo, …)

sudo gedit /etc/pam.d/common-auth

Votre fichier devrait ressembler à ça sous karmic (9.10)

#
# /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.
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.
# here are the per-package modules (the "Primary" block)
auth	[success=1 default=ignore]	pam_unix.so nullok_secure
# here's the fallback if no module succeeds
auth	requisite			pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth	required			pam_permit.so
# and here are more per-package modules (the "Additional" block)
# end of pam-auth-update config

Nous allons insérer la ligne suivante pour que la clef soit nécessaire à l'authentification ( clef + mot de passe )

auth    required    pam_usb.so

ou ceci pour la clef soit suffisante à l'authentification (Clef seul sans mot de passe)

auth    sufficient    pam_usb.so

Ce qui donne :

#
# /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.
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.
auth    sufficient    pam_usb.so
# here are the per-package modules (the "Primary" block)
auth	[success=1 default=ignore]	pam_unix.so nullok_secure
# here's the fallback if no module succeeds
auth	requisite			pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth	required			pam_permit.so
# and here are more per-package modules (the "Additional" block)
# end of pam-auth-update config

Utilisation de pamusb-agent

L'agent va nous permettre de réagir aux événements de la clef (insérer ou retirer la clef)

démarrage du daemon

Ajoutons pamusb-agent aux services à démarrer, pour cela nous allons dans

système>préférences>applications au démarrage

on clic sur ajouter puis nous entrons pour le nom

pamusb

et pour la commande

pamusb-agent

ajout des évènements

Ouvrez le fichier /etc/pamusb.conf.

<agent event="lock">gnome-screensaver-command --lock</agent>
<agent event="unlock">gnome-screensaver-command --deactivate</agent>

Ces lignes doivent être placées sous la section de l'utilisateur qui vous concerne exemple

...
<user id="vincent">
<device>
	transcend_vincent
</device>
<agent event="lock">gnome-screensaver-command --lock</agent>
<agent event="unlock">gnome-screensaver-command --deactivate</agent>
</user>
...

Et voilà :-)

Retirer votre clef lock la session, brancher la clef unlock ..

Pour supprimer cette application, il suffit de supprimer les paquets, rentrez dans un terminal :

sudo apt-get remove --purge libpam-usb pamusb-tools
Les fichiers de configuration seront supprimés et il ne faut pas oublier de remplacer le fichier /etc/pam.d/common-auth par la copie précédemment faite :
sudo mv -f /etc/pam.d/common-auth.back /etc/pam.d/common-auth

Impossible de se connecter

Redémarrez l'ordinateur, affichez grub s'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 ne marche pas" dans la partie "configuration". En aucun cas l'absence de la clé USB vous empêchera d'ouvrir la session recovery.

  • tutoriel/pam-usb.1339521400.txt.gz
  • Dernière modification: Le 12/06/2012, 19:16
  • par 82.236.122.88