jeudi 4 novembre 2010

Login automatique avec clé usb

Comment se connecter à sa machine sans intervenir ?

Autologin cas 1

Si vous avez comme moi un PDA que vous branchez sur un port USB pour le recharger lorsque vous rentrez chez vous, vous pouvez l'utiliser pour lancer une connexion automatique sous kdm (pour gdm, il va falloir chercher : je n'ai pas trouvé). Je donne l'exemple du branchement d'un périphérique usb, mais vous pouvez aussi utiliser n'importe quel autre événement grâce à udev.
La détection de l'événement usb se fait simplement en ajoutant une règle à udev (noyau 2.6 obligatoire). Udev n'étant pas de configuration facile voici la ligne à ajouter dans /etc/udev/rules.d/local.rules ou tout autre fichier de ce répertoire.

SUBSYSTEM=="usb_device", SYSFS{idVendor}=="03f0",
SYSFS{idProduct}=="1016",
RUN+="/usr/local/sbin/ipaq-event.sh"

Les valeurs idVendor et idProduct se trouvent avec la commande lsusb, périphérique branché. Ces valeurs sont les 2 parties du champ ID.
Pensez à relancer udevd
 
/etc/init.d/udev restart

Le script à lancer (ipaq-event.sh) ne devra pas être modifiable ni exécutable, ni lisible par un autre que root ou vous-même étant donné son contenu, que voici :
 
#!/bin/sh
kdmctl -g login :0 user password

Notez que vous pouvez avoir autant d'autologin différents que de périphériques usb.
login_usb.png

Autologin cas 2

Si vous ne voulez pas mettre votre mot de passe dans un script (ce qui se comprend) et que votre périphérique usb peut être vu comme un mass-storage (un appareil photo ou une clé usb ... contenant des données), vous avez alors la possibilité de ne pas mettre votre mot de passe dans le script (où plutôt X puisqu'il faut un argument) à condition d'utiliser une authentification basée sur la clé USB. Pour cela, nous allons changer la configuration de pam pour ignorer le mot de passe et utiliser un fichier sur le périphérique usb.
Il vous faudra pour cela utiliser libpam-usb. L'article en lien décrit bien son installation, donc je n'expliquerai pas les détails.
Libpam-usb permet de créer une clé privée qui restera sur la clé usb et une clé publique qui restera sur la machine. Lors de la connexion pam vérifie que la clé privée trouvée est valide et correspond bien à celle de l'utilisateur. Votre périphérique USB vous authentifie !
Et avec le cas 1 vous pouvez en même temps lancer la connexion.

Autologin cas 3

Oui, mais ... et si vous aviez utilisé libpam-ssh pour entrer automatiquement votre clé ssh dans l'agent lors de votre connexion, le mécanisme ne fonctionne plus.
Pour émuler ce comportement, vous pouvez avoir une version sans passphrase sur la clé usb et de l'ajouter automatiquement au login (en utilisant un script lancé automatiquement avec la session). Mais cela implique une grande confiance en votre clé usb, sachant qu'elle ne contient aucun mécanisme de protection ! Que voulez vous, on ne peut pas à la fois ne rien demander à l'utilisateur et garantir son identité.
Pour améliorer un peu le principe, il est possible d'utiliser le concept des demi-bits, une demi clé ssh sur la clé usb et une demi clé sur le poste de travail. En cas de perte de l'un on ne peut rien sans l'autre.

Source : http://linux-attitude.fr/post/login-automatique-avec-cle-usb

Aucun commentaire:

Enregistrer un commentaire