Authentification avec clé usb + empreinte digitale

Une clé usb, ça se vole. Une empreinte aussi. Pourtant, c'est tellement plus loutrconvivial de ne pas avoir à taper son mot de passe top-super-sécure de 42 caractères qui, comme tout mot de passe qui se respecte, est évidemment fait de mixed case, de chiffres, et de symboles. C'est pourquoi on va combiner les méthodes d'authentification précédemment citée, pour limiter les risques de se faire pwner son laptop par des chinois capitalistes du FBI.

IL EST FORTEMENT CONSEILLÉ DE GARDER UN SHELL ROOT OUVERT À CÔTÉ LORSQU'ON MODIFIE LA CONFIGURATION DE PAM

Matériel requis

Une clé usb, ou une carte sd/mmc/whatever, ou encore un disque dur externe, mais là c'est moins pratique. Un lecteur d'empreinte digitale Un doigt (le lecteur d'empreinte fonctionne pas avec la bite)

Installation et configuration du lecteur d'empreinte

Nous allons utiliser le projet fprint, compatible avec pas mal de lecteur d'empreintes.

Installation

Commencez par télécharger libfprint et pam_fprint (et fprint_demo si vous voulez jouer avec vos empreintes) d'ici. Ensuite, tar -xzf, ./configure, make, make install, tout ça, vous savez faire.

Enregistrement des empreintes

Une fois installés, il faut enregistrer votre empreinte. Faites:

pam_fprint_enroll -f7

Pour enregistrer votre index droit. Changez 7 pour un auter chiffre pour enregistrer un autre doigt. Les doigts sont numérotés comme ça:

1 - Left Thumb
2 - Left Index Finger
3 - Left Middle Finger
4 - Left Ring Finger
5 - Left Little Finger
6 - Right Thumb
7 - Right Index Finger
8 - Right Middle Finger
9 - Right Ring Finger
10 - Right Little Finger

Configuration de pam

Maintenant, il faut configurer pam pour qu'il tente de s'authentifier d'abord avec l'empreinte, et si ça ne marche pas, par mot de passe. /etc/pam.d/common-auth (le nom de ce fichier peut varier selon la distribution, common-auth dans debian et ubuntu, system-auth sur gentoo)

auth    sufficient    pam_fprint.so
auth    required      pam_unix.so nullok_secure

Maintenant essayez de faire un su, sudo, login, ou nimporte quelle application qui utilise pam pour l'authentification. Si ça marche pas, tant pis pour vous, sinon, on passe à la suite.

Installation et configuration de l'authentification par clé usb

Téléchargez et installez pamusb. Ensuite insèrez la clé et faites:

pamusb-conf --add-device nomdelacléusb

Appuyez sur y, et voilà.

Ajoutons les utilisateurs:

pamusb-conf --add-user monuser

Et ceci pour chaque utilisateur.

Il ne reste plus qu'à vérifier que tout se passe bien:

pamusb-check monuser
* Authentication request for user "monuser" (pamusb-check)
* Device "nomdelacléusb" is connected (good).
* Performing one time pad verification...
* Verification match, updating one time pads...
* Access granted.

Tout ça c'est joli, mais ce serait bien de pouvoir brancher PAM là dessus: /etc/pam.d/common-auth

# On désactive l'authentification par empreinte le temps d'essayer celle par clé usb
# auth    sufficient    pam_fprint.so
auth    sufficient pam_usb.so
auth    required      pam_unix.so nullok_secure

Maintenant, il suffit d'avoir la clé usb branchée pour ne plus avoir à taper son mot de passe. Or, on aimerait bien arriver à une authentification “dual-factor”, c'est à dire avec la clé usb + le lecteur d'empreinte.

Configuration finale de pam

Les ptites combines à base de required, sufficient et tout ça ne sont pas suffisantes pour que pam vérifie si la clé usb est là, et que si elle n'est pas là qu'il passe direct à l'auth par password. C'est pourquoi on va devoir gruiker nos propres “control values”. /etc/pam.d/common-auth

auth    [success=ok new_authtok_reqd=ok ignore=ignore default=1] pam_usb.so
auth    [success=done new_authtok_reqd=ok ignore=ignore default=ignore] pam_fprint.so
auth    [success=done new_authtok_reqd=ok ignore=ignore default=bad]    pam_unix.so nullok_secure

Et voilà :)

unix/pam_usb_fprint.txt · Last modified: 2010/01/12 13:29 (external edit)