19/05/2009

S’authentifier avec une clé USB

hardware-usb-storage-256x256Il existe beaucoup de raisons pour ne pas avoir envie d’entrer son mot de passe. Pas toutes bonnes, j’en conviens, mais lorsque c’est le cas, se passer de mot de passe sans faire de son système un moulin peut devenir un vrai casse-tête…

Que diriez-vous d’un compromis parfait qui garantit de ne pas sacrifier une once de sécurité, tout en s’authentifiant simplement avec la touche enter et une clé USB ?

Oui, avec Linux, c’est possible !

su *enter* *mot de passe* … Ou Pas.

En réalité, il existe très peu de prétextes valables pour ne pas tapper son mot de passe. Les seuls cas qui se sont présentés à moi sont :

  • Se rendre à une conférence informatique (type FOSDEM) où on sait très bien que beaucoup de curieux scrutent par réflexe votre écran, et que leur regard est —toujours par réflexe— dévié vers votre clavier lorsqu’ils lisent «password:» dans votre console.
  • Se trouver dans une situation de stress face à un supérieur où, à l’heure de présenter un travail, s’y reprendre à 4 fois pour se logger ne fait pas très sérieux
  • Faire des études orientées vers l’informatique où on cottoie quotidiennement des individus pour qui «un mot de passe de 17 caractères» équivaut à «17 jours avant la blague la plusmoins drôle de votre vie» à raison d’une touche à mémoriser par jour…

Si je n’ait pas cité la «flemme», c’est tout simplement parceque celle-ci est l’ennemie de la sécurité, et ce depuis la nuit des temps.

1001 idées pour anéantir toute forme de sécurité

Des alternatives au traditionnel mot de passe, ça fait des années qu’on en cherche,voici un petit tour d’horizon des diverses possibilités.

  • Pas de mot de passe (!) : Probablement l’extrême dans la facilité, mais aussi dans la stupidité. Ça équivaut à laisser sa voiture ouverte, clé sur le contact, moteur en marche, en tête de file à un feu rouge. Si je prend tout de même la peine de la citer, c’est que grâce à Windows, c’est la méthode d’authentification  la plus répandue à travers le monde.

Voilà, rions un grand coup, et poursuivons avec les mauvaises idées qui ont le mérite d’être sérieuses 🙂

  • Sudo : Si cet outil peut parfois avoir son utilité, il n’est ici d’aucune aide. Si le mdp utilisateur est de la même longueur que celui du root, il n’y a aucun avantage, sinon, cela reviens simplement à raccourcir le mdp root. Ceci n’est rien d’autre qu’une réduction du niveau de sécurité du système.
  • Empreinte Digitale : Si la biométrie m’a longtemps semblé être l’ultime solution à notre problème, il ressort aujourd’hui que la plupart de ces procédés sont facilement compromis. J’ai donc renoncé à laiser mon mot de passe root sur tout ce que je touche (littéralement.), surtout depuis qu’un certain taiwanais a perdu un doigt et une voiture la même journée…
  • Reconnaissance Faciale : Le meilleur moyen de faire du moindre appareil photo votre pire ennemi…

Et c’est quand on pense avoir cherché partout qu’on s’apperçoit que la solution est bien plus simple…

Trouver clé à sa serrure

Après des décénies, des siècles d’existence et d’évolution, avec quoi ouvrez-vous votre porte d’entrée ? Une clé, évidemment. Alors pourquoi ne pas en faire de même pour votre ordinateur ?

Cela tombe bien, il existe un homonyme informatique qui est également un petit object, transportable dans une poche toujours avec soi, muni d’un identifiant unique et très difficilement falsifiable, qui en plus permet de stoquer des données : la clé USB.

Le principe est simple: le système enregistre le numéro d’identification de la clé USB et au moment de s’identifier, si il la trouve branchée sur votre systême, il lit quelques données cryptées qu’il y aura placé comme confirmation. Si tout est en ordre, il considère que vous avez prouvé votre identité, dans le cas contraire, il vous demande votre mot de passe.

su, enter, et c'est tout !

su, enter, et c'est tout !

Ça fait maintenant plusieurs mois que ce procédé continue de faire ses preuves sur mon système, et que malgré toutes leurs tentatives aucun plaisantin n’est parvenu à obtenir/contourner mon mot de passe. (je ne compte pas la fois où je me suis imprudemment endormi à coté de mon laptop en laissant ma clé USB branchée…)

Et en cas de vol ? Don’t Panic, vous pouvez toujours accéder à votre système de façon traditionnelle, et modifier le seul fichier nécessaire à interdire l’authentification avec cette clé USB, enrayant toute initiative malveillante.

Une clé USB à brancher, appuyer sur enter. Aucune brèche dans la sécurité. Tous les objectifs sont atteints.

Installation : 2 min,  Configuration : 3 min, la Sécurité : ça n’a pas de prix.

Contrairement à la plupart de ce qui touche de près ou de loin à la sécurité, c’est très simple à mettre en place.

Tout d’abord, installez dans votre distribution préférée les packages relatifs à «Pam usb»

Sous Gentoo :

# echo "sys-auth/pam_usb" >> /etc/portage/package.keywords
# emerge sys-auth/pam_usb

Sous Ubuntu :

$ sudo apt-get libpam-usb pamusb-tools

Ajouter une Clé USB

Pour cela il vous suffit de lancer la commande suivante où “NomDeMaClé” représente le nom que vous voulez assigner à cette clé pour vous y retrouver.

# pamusb-conf --add-device=NomDeMaClé

Il vous affichera un résumé des données qu’il a récupéré de la clé USB détectée et vous demandera de confirmer qu’il s’agit bien de la clé à ajouter :

Please select the device you wish to add.
* Using " USB Flash Memory (0930_USB_Flash_Memory_07652723938-0:0)" (only option)

Which volume would you like to use for storing data ?
* Using "/dev/sdc1 (UUID: e5ff07ac-a517-4dae-9468-d9d0b309ee62)" (only option)

Name            : NomDeMaClé
Vendor          : Unknown
Model           : USB Flash Memory
Serial          : 0930_USB_Flash_Memory_07652723938-0:0
UUID            : e5ff07ac-a517-4dae-9468-d9d0b309ee62

Save to /etc/pamusb.conf ?
[Y/n]y
Done.

Vous pouvez répéter cette opération avec autant de clés que vous voulez. Pour plus de sécurité, je vous conseille de n’en ajouter qu’une seule.

Ajouter un utilisateur

Il vous est très facilement possible de spécifier quels utilisateurs pourront s’identifier avec cette clé :

# pamusb-conf --add-user koolfy

pamusb vous proposera de confirmer à nouveau :

Which device would you like to use for authentication ?
* Using "NomDeMaClé" (only option)
User            : koolfy
Device          : NomDeMaClé
Save to /etc/pamusb.conf ?
[Y/n] y
Done.

Je vous conseille de vous contenter de votre user et de votre root.

Adapter l’authentification

Il faut maintenant que le module d’authentification du système ajoute l’authentification par USB comme «optionelle et suffisante», ce qui se fait en éditant le fichier /etc/pam.d/system-auth ( /etc/pam.d/common-auth sous Ubutu) et en lui rajoutant comme première ligne :

auth       sufficient           pam_usb.so

Et voilà ! C’est dans la poche.

Si vous voulez forcer l’authentification par USB, remplacez «sufficient» par «required» dans la ligne précédente.

Changer la serrure

En cas de perte ou de vol de votre clé, changer de serrure est aussi simple que d’effacer la section

<device id="NomDeMaClé"></device>

ainsi que ses références dans la section

<users></users>

de /etc/pamusb.conf

Quelques conseils de survie

  • Toujours savoir ou se trouve votre servi… euh, votre clé USB
  • Ne jamais la confier à personne qui ne soit digne de confiance
  • Ne jamais s’endormir à coté de votre laptop en laissant la clé USB branchée
  • Si vous comptez vous saouler, toujours confier votre clé à une fille de confiance qui ignore tout de l’importance de la clé.

Si vous respectez ces quelques règles simples, vous devriez pouvoir dormir sur vos deux oreilles 🙂

Liens et références

  1. | #1

    Moi je me suis même débrouillé pour que ça verouille mon écran avec gnome-screensaver quand je débranche la clé USB 😛

    Il faut ouvrir /etc/pamusb.conf (fichier XML), chercher la section qui vous correspond et ajouter ces deux lignes à l’intérieur:

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

    Après il faut lancer pamusb-agent (éventuellement automatiquement au démarrage de Gnome). Ca verouille et déverouille automatiquement au retrait/insertion 🙂

    On regrette juste le temps que ça met pour monter la clé USB, je tape mon MDP plus vite :/

  2. Zgibu
    | #2

    Putain mais ouais !!! Mais c’est pas CON ça !!! Moi qui comtais m’acheter un truc a reconnaissance digitale ! Beaucoup plus simple en effet. Me reste plus qu’à formater tout mon laptop et en suite j’ajouterais ça 🙂

    Alors pour préciser, t’as oublié certains cas :
    -Quand ton chat es doté d’une (pseudo) intelligence et qu’il vient se promener sur ton clavier UNIQUEMENT quand tu es sur une page de login
    -Quand tes potes qui; non comptant de lire tes SMS, y répondent à ta place mais qu’en PLUS, ils te disent discretement que par sécurité tu ferais mieux de confier tes MDP a quelqu’un en cas de problemes x’) (ne parlons même pas du coup d’oeil appuyé sur le clavier au moment du login…)

    Bref! Très sympa, tres pratique!

    Merci!

  3. | #3

    Attention une clé USB est facilement copiable et il est possible de simuler sa présence en logiciel. Pour plus de sécurité il existe une clé USB d’authentification livrée avec un module PAM et même une version custom de PuTTY pour pouvoir se connecter en ssh automatiquement avec cette clé (www.swekey.com)

  4. | #4

    l’identification unique de la clé usb n’est pas “facilement copiable”, de plus, son ID et son contenu ne sont pas sensés être divulgués à quiconque…

    Après, si on fournis une clé pour que quiconque puisse en faire une copie, il ne faut pas s’étonner de se faire cambrioler 🙂

  5. julienmx
    | #5

    Salut,
    je me demandais si l’utilisation de la clé ne posait pas un gros problème de sécurité. Ca revient à être logué en root en permanence non ?

  6. | #6

    Seulement quand la clé est branchée à l’ordinateur… Mais sinon oui, ce serait comme laisser ta clé sur la serrure de ta porte d’entrée…

  7. oups
    | #7

    …excellent, jusqu’à ce que la dite clé usb tombe en rade, non ?

  8. | #8

    Non, on peut toujours s’identifier “normalement” et remplacer l’identification de la clé usb “morte” par celel d’une neuve, en deux commandes 😉

  9. Jean-Luc Flotté
    | #9

    Bonjour, super cette idée, mais j’ai ouïe dire que l’utilisation de pam_usb ne fonctionnait pas avec GDM ? Est-ce vrai ?
    Ma conf : ubuntu 10.10

  10. gilles
    | #10

    Bonjour,

    merci pour ces infos. ça marche. j’ai juste un truc qui me chiffonne. quand je retire la clé usb, ça lock effectivement mon PC mais ça ferme tous les logiciels ouverts… ça j’aime moins. il semble que sur une distribution kubuntu, on puisse garder les logiciels ouverts, et donc reprendre le travail exactement là où on en était. comment faut il faire pour une distribution ubuntu 10.04LTS avec gnome ? quelle commande mettre dans pamusb.conf ?

    merci pour l’intéret que vous porterez à ma question.
    cordialement

  11. | #11

    Je n’ai jamais utilisé ce réglage, et ça fait belle lurette que je n’utilise plus pamusb du tout…
    J’aurai donc un peu de mal à t’aider ! Au pire, contacte le développeur par e-mail ? 😉

  12. patrick L
    | #12

    bonsoir,

    je viens de passer de kubuntu à linux mint 18.

    j’ai tenté de faire sudo apt-get install libpam-usb mais les dépots de mint n’ont pas ce module.

    alors est ce qu’un depot a se module bien pratique.

    merci à vous et bonne semaine.

  13. PopolGaston
    | #13

    Et qu’utilisez-vous désormais ? Désaffection ou changement de solution ?

  14. | #14

    Depuis lors, il m’est apparu qu’il n’était pas très difficile d’usurper l’ID d’un device USB (ou probablement de le bruteforce en voyant son aspect physique)
    Il y a bien des années que je n’utilise plus ce dispositif, et la dernière fois que je l’utilisais j’étais assez inquiet par certaines limitations de l’outil, son manque de développement actif, et le fait que le moindre bug ou exploit dans ce code serait facilement critique à la sécurité de mes systèmes.

    Le concept était intéressant, mais je déconseillerais aujourd’hui de le mettre en place pour quoi que ce soit de sérieux

  1. | #1