L'idée ici est assez simple : utiliser la partition d'un clef usb pour s'authentifier sur un serveur grâce au plugin pam_usb. Ainsi, plus aucun mot de passe n'est demandé.
Ce type d'authentification peut légitimement soulevé des questions de sécurité en cas de recopie de la clef par un tiers. Alors déjà il y a une protection physique au sens où, pour que cela se fasse, il faut que la clef vous soit dérobée, recopiée et remise à sa place. Même risque que pour celle de votre logement en somme, avec la facilité du numérique en plus.
Maintenant pam_usb intègre aussi deux protections intéressantes. Tout d'abord l'UUID de la partition, son label, le modèle de la clef et l'ID du fabriquant sont comparés avec les informations locales. Ceci dit il doit être possible de copier aussi ces données même si je n'ai pas la moindre idée du comment.
La seconde protection s'appelle "One Time Padding". Elle consiste en une poignée d'octets générés aléatoirement, stockée sur la clef et en local. A l'insertion de la clef, ces octets sont comparés avant d'authentifier l'utilisateur. S'ils correspondent, une nouvelle série aléatoire est générée et vient remplacer l'ancienne sur la clef et en local. Et ainsi de suite.
Du coup si quelqu'un vous dérobe la clef, recopie les données toutes les données de la partition contenant les données, arrive à truqer les ID fabriquant et modèle, il faut qu'il l'utilise avant que vous vous soyez reconnecté, car après, ses données sont invalides. Et s'il arrive à le faire, le système va certes le laisser rentrer, mais va aussi regénérer la série d'octets rendant votre clef inopérante. Ce qui constitue un bon indicateur d'intrusion.
Ceci dit, quelqu'un de motivé peut aussi prévoir le coup et remettre les données en place après intrusion, tout est possible mais maintenant vous pourrez choisir cette solution en connaissance de cause.
Première étape, préparer le clef usb. Soit vous utilisez une veille clef et vous la dédiez totalement, soit vous pouvez créer sur votre clef de travail une minuscule partition dédiée au stockage des clefs. Dans un cas comme dans l'autre la partition ne peut être formatté qu'en EXT3 ou ext2. Pas de FAT32 donc. C'est pour cela que sur ma clef de 1GO, j'ai formatté une première partition de 1GO-1Mo en FAT32 pour une utilisation classique, et une petite partition de 1Mo (j'ai pas réussi à faire moins) en EXT3 pour mes clefs. A 2ko la clef, cela me semble suffisant
Pour créer et formatter la ou les partitions, je vous conseille d'utiliser drakdisk. Il vous faut donc supprimer les partitions existantes, en créez deux nouvelles en ne laissant que 1mo à la seconde. Puis enfin formatter la deuxième partition en EXT3 ou Reiser. La première partitions peut quant à elle être formattée selon vos goûts. Tapez sync puis débranchez et rebranchez la clef pour être sur que tout va bien.
La solution adoptée par pam_usb est d'écrire une série de nombre aléatoire sur notre partition de 1Mo. A la connexion, cette série de chiffre (nommée pad) est comparée à celle qui a été copie dans le dossier utilisateur. Si ça colle, l'utilisateur est validé et pam_usb générée une nouvelle série de chiffres qui stock à nouveau sur la clef et dans le dossier utilisateur. Et ainsi de suite. Cette méthode garantie que toute donnée copies deviendra vite caduque à un détail près. En effet, si je débranche ma clef, que quelqu'un la copie, et se reconnecte avant moi, je suis grillé... La solution a donc ses limites qu'il est important de connaître.
Une fois que vous avez installé le paque pam_usb, branchez votre clef USB, et lancez la commande suivante. Il va vous être demandé de choisir parmi les partitions de clef usb présente sur le système celle qui contiendra les données d'authentification. Choisissez la petite partition et tapez Y pour sauver ces informations dans le fichier de configuration /etc/pamusb.conf.
pamusb-conf --add-device maClef
Ensuite nous allons ajouter un utilisateur "authentifiable" sur la clef. Pour cela utilisez la commande suivante en indiquant en paramètre l'utilisateur à rajouter.
pamusb-conf --add-user gaston
Voilà, c'est terminé. Il suffit maintenant d'ajouter dans /etc/pam.d/system-auth la ligne indiquant à PAM que la clef USB est le premier moyen suffisant pour s'authentifier sur ce système :
auth required pam_env.so
auth sufficient pam_usb.so
auth sufficient pam_tcb.so shadow fork nullok prefix=$2a$ count=8
auth required pam_deny.so
Il ne reste maintenant plus qu'à tester. Une fois que tout est bon, vous pouvez rendre pam_usb moins bavard en modifiant /etc/pamusb.conf comme suite :
<defaults>
<option name="debug">false</option>
<option name="quiet">true</option>
</defaults>
Voilà donc une solution d'authentification utilisant PAM qui est loin d'être compliquée à mettre en oeuvre tout en simplifiant clairement la vie.
C'est un exellent tuto !
Mais il ne faut égarer sa clef USB dans ce cas
Merci
Bah sinon, il y a toujours le mot de passe qui continue à fonctionner;-) Le seul truc, c'est qu'à la longue on oublie le fameux mot de passe ...
Intéressant et plutôt cool !
Salut
Est t'il possible de ne pas avoir à taper le login.
Genre je suis sur gdm, quand je branche ma clé, il se loggue automatiquement avec l'utilisateur correspondant.
A+
Julien
@Juke pas directement non, mais cela doit être jouable en modifiant l'agent (les sources).
Ce qui pourrait être drôle c'est de configurer l'accès pour root, et d'activer le support de pam_usb dans le fichier /etc/pam.d/sshd
@Dup LOL
Petit malin, rassures toi j'y avais déjà pensé, et chose étrange, si tu fais cela, ssh ne répond plus. Quel que soit l'accès d'ailleurs. Je ne sais pas si c'est fait exprès mais si tu tentes un ssh sur une machine où la clef est branchée, ça t'envoie bouler 
Ah oui tiens je me demande pourquoi ca ne marche pas, ce pourrait-il que le client recherche la clé usb sur le poste initiant la connexion plutôt que le serveur, ce qui me paraît bizarre ? En tous cas je vois je ne suis pas le seul à y avoir pensé.
@dup ben tu sais, dés qu'il y a une conneries à faire
Plus sérieusement je viens de refaire le test avec la dernière version (le coup de l'erreur c'était avec la 0.4.1). Maintenant lorsque je tente une connexion à partir d'une machine distante sur une machine avec pamusb configurée et une clef insérée, le système me demande malgrès tout mon mot de passe. Donc le cas est prévu (heureusement tu me diras
et l'erreur devrait être une mauvaise gestion du fallback(pamusb/shadow) dans le même cas de figure.
Donc ça va, c'est safe
Bon ca me rassure alors
Il est vrai que j'ai entendu dire que la version 4.1 est buggé.
C'est un fait, il avait au moins deux bugs, celui-là et une erreur bien casse pied de reconnaissance de partitions, les deux sont réglés à l'évidence.
Et pour une excellente doc, le wiki d'ubuntu-fr. Cette documentation a été mis en place il y a pas très longtemps.
http://doc.ubuntu-fr.org/tutoriel/pam-usb
Méheu… je vois pas trop où est la sécurité la dedans, vu qu'on peut très facilement copier la clef à partir de la clef (
), non ?
@Navaati Certes
Pour la peine j'ai ajouté un chapitre expliquant pourquoi ce n'est pas si simple.
Maintenant la "vraie" sécurité c'est les fameuses 3 règles : quelque chose que je sais (ex. mot de passe), quelque chose que je possède (ex. clef usb) et quelque chose que je suis (ex. lecteur d'empreinte). Rien ne t'empêche donc d'ajouter la clef USB à la panoplie
Avec une clef corsair type "pad lock" la securite pourrait etre augmente puisqu'il y a un code a rentre pour activer la clef.
@Spami Yep j'avais pensé à ce type de clef, tu en as testé une "en vrai" ?
oui j'en ai une a la maison.
C'est sympa, un peu gadget.
Ce qui est bien pense c'est le système d'activation ou non du code.
Apres, je n'utilise pas le code, parce que c'est "lourd" pour une utilisation frequente(plusieur fois par jour)
@Spami
merci du tuyau, je vais aller regarder par là. Au delà de pam_usb, c'est pas trés malin de protéger les données sur son portable et d'avoir toujours l'option de paumer sa clef usb
Oh, d'accord, je n'avais pas compris le cadre d'utilisation de cette méthode : elle n'est faite que pour UNE machine déjà secure, pas pour pouvoir se connecter à partir de n'importe où en toute sécurité… Apparemment, pour ça il faut un de ces précieux eTokens de chez Aladdin (entre autre) avec lesquels on est sûr que ce que je possède est bien unique.
A voir aussi pour plus de fonctionnalités : http://usbauth.delta-xi.net/
@Dab je ne vois pas bien ce que cela apporte de plus en terme fonctionnel. Moi le truc que j'adorerais c'est qu'un mot de passe soit encrypté sur la clef et qu'il soit injecté dans la pile PAM pour servir aux autres modules. Car le problème du "password less" c'est... qu'il n'y a pas de mot de passes, or certains modules (pam_mount, pam_gnome_keyring, etc..) en ont besoin pour déverrouiller leurs stockages.
Ce serait peut être l'occasion d'en écrire un de module pam, du genre
Salut,
et sion veut sécuriser en imposant un mot de passe + présence de la clé, suffit-il de mettre les deux pam_usb et pam_tcb en required ?
Yep, très exactement
Poster un nouveau commentaire