Introduction

Sous Gnu/Linux, l'authentification de chaque utilisateur se fait par le biais de Pam (Pluggable Authentification Module), derrière ce terme qui peut paraitre barbare pour les p'tits nouveaux, se cache un puissant mécanisme d'authentification dont je ne m'étendrai pas plus car ce n'est pas le but de cet article, néanmoins, je vous invite à lire cette excellente introduction à PAM écrite par Sébastien Augereau.

pam_blue écrit Hagen Paul Pfeifer va donc vous permettre de vous authentifier par le biais du bluetooth qui est intégré dans un très grand nombre de périphériques (le groupe d'intérêt bluetooth prétend que le nombre de périphériques bluetooth à dépassé le milliard début novembre !), ainsi, au démarrage de votre gestionnaire de fenêtre préféré (gdm, kdm...que sais-je...), vous n'aurez qu'à taper votre nom d'utilisateur, la saisi du mot de passe étant remplacé par la détection d'un appareil bluetooth que vous aurez au préalable sélectionné.
Si le périphérique bluetooth n'est pas présent, le mot de passe vous sera alors demandé comme d'habitude au bout d'un laps de temps configurable.

Note :
Cet article à pour but de vous faire découvrir un outil très pratique mais qui peut se retourner contre vous si il est mal configuré, prenez garde à ce que vous faites, notamment, dans les fichiers de configuration de pam.

Comment ça marche ?

Tout comme une carte réseau ethernet ou Wi-Fi, un appareil bluetooth possède une adresse MAC, un identifiant unique composé de 6 octets et c'est grâce à cette dernière que nous allons justement pouvoir nous authentifier, en effet, cette adresse MAC n'est, en théorie, pas configurable (voir plus bas).

En exemple, je vous propose de découvrir les périphériques bluetooth à proximité de votre PC en saisissant la commande suivante (le paquet bluez-utils doit être installé au préalable) :

$ hcitool scan
Scanning ...
00:0A:59:BC:5F:09 Nokia 6680
00:12:29:C3:8D:FB Portable
$

Si votre périphérique bluetooth n'apparait pas, c'est probablement parce que la "visibilité bluetooth" de ce dernier n'est pas active, ainsi, il reste invisible aux commande de recherche "inquiry" (je vous conseille d'ailleurs fortement de laisser votre téléphone portable caché même si il est tout de même possible de le détecter avec les outils adéquats...)

Nous voyons apparaitre 2 périphériques bluetooth qui semble être tous les 2 des téléphones portables, vous noterez que le nom de l'appareil apparait à droite de l'adresse MAC.
Vous pouvez obtenir plus d'informations sur chaque périphérique en saisissant la commande suivante :

$ sudo hcitool info 00:0A:59:BC:5F:09
Requesting information ...
BD Address: 00:0A:59:BC:5F:09
Device Name: Nokia 6680
LMP Version: 1.2 (0x2) LMP Subversion: 0x4db
Manufacturer: Cambridge Silicon Radio (10)
Features: 0xbf 0xfe 0x0f 0x00 0x18 0x18 0x00 0x00
<3-slot packets> <5-slot packets> <encryption> <slot offset>
<timing accuracy> <role switch> <sniff mode> <RSSI>
<channel quality> <SCO link> <HV2 packets> <HV3 packets>
<u-law log> <A-law log> <CVSD> <paging scheme> <power control>
<transparent SCO> <AFH cap. slave> <AFH class. slave>
<AFH cap. master> <AFH class. master>
$

Installation

Les sources sont disponibles à cette adresse si vous désirez les compiler vous même mais j'ai créé des paquets (i386 uniquement et basé sur la dernière version 0.1.0) pour Dapper et Edgy.

Installez le paquet :

  • Depuis un navigateur de fichiers, cliquez deux fois sur le paquet, l'installeur de paquet gdebi s'ouvrira et vous permettra de l'installer.
  • En ligne de commande
    sudo dpkg -i libpam-blue_0.1.0-1_i386.deb

Voilà, c'est tout pour l'installation.

Configuration

Nous allons commencer par éditer le fichier de configuration de pam_blue qui se trouve être : /etc/security/pam_blue.conf, ouvrez le et vous obtiendrez ceci (j'ai volontairement coupé la fin du fichier pour garder uniquement ce qui nous intéresse) :


general {
# the normal timeout for scanning
# watch out for a to tiny timeslot for scanning
# values between 4 and 15 seconds are valid
timeout = 4;
}

# configuration for user toto
toto = {

# bluetooth device name
name = tux;

# bluetooth mac address
bluemac = 54:34:34:34:34:34;

# a seaparate timeout
timeout = 10;
}

[...]

Éditons ce fichier en spécifiant le nom de l'utilisateur qui doit être authentifié par pam_blue et remplaçons l'adresse MAC par celle que nous avons trouvé durant le scan, spécifions aussi le nom du périphérique bluetooth (vous pouvez mettre ce que vous désirez...)

[...]

# configuration pour l'utilisateur hugo
hugo = {

# bluetooth device name
name = Nokia 6680;

# bluetooth mac address
bluemac = 00:0A:59:BC:5F:09;

# a seaparate timeout
timeout = 10;
}

[...]

Voilà, la configuration de pam_blue s'arrête ici, maintenant, il faut spécifier au système que nous voulons nous authentifier par bluetooth à chaque fois que ce sera possible, dans le dossier /etc/pam.d se trouve les fichiers de configuration de pam, c'est là que nous allons dire à quel momemt nous voulons remplacer l'authentification basic par pam_blue.
Comme exemple, nous allons faire en sorte que l'authentification au gestionnaire de fenêtres Gnome se fasse par pam_blue, pour cela, nous allons éditer le fichier /etc/pam.d/gdm (pour kubuntu, éditez kdm, pour xubuntu, xdm...), sous Ubuntu Dapper, ce fichier ressemble à ceci :

#%PAM-1.0
auth requisite pam_nologin.so
auth required pam_env.so
@include common-auth
@include common-account
session required pam_limits.so
@include common-session
@include common-password

Nous allons le modifier afin qu'il ressemble à ceci :

#%PAM-1.0
auth requisite pam_nologin.so
auth required pam_env.so

auth sufficient pam_blue.so debug

@include common-auth
[...]

Voilà, c'est terminé, nous allons pouvoir tester le bon fonctionnement de pam_blue.

Mise en route

Fermez votre session gnome, une fois sur la mire de login, saisissez votre nom d'utilisateur et normalement, si tout s'est bien passé et si votre périphérique se trouve bien à proximité, vous n'aurez pas à saisir votre mot de passe et vous voilà, donc, loggué sur votre système.

Note :
Vous pouvez éditer les fichiers contenus dans /etc/pam.d pour des réglages plus poussés mais faites extrêmement attention à ce que vous faites, vous pourriez mettre en danger votre système (voir les commentaires), notamment, avec les connections distantes (rappelons que pam_usb à eu ce même souci).

Liens

Si vous voulez en savoir plus, voici une liste de liens sur les sujets que nous avons abordés :

Conclusion

Pour ma part, j'ai définitivement adopté pam_blue sur mon poste de travail chez moi, chose que je ne ferai sûrement pas n'importe où car toute la sécurité se base sur une adresse MAC qui est unique, mais, que l'on peut tout de même changer moyennant quelques recherches, chose que le Bluetooth SIG (Bluetooth Special Interest Group) voit d'ailleurs d'un très mauvais oeil...