Authentification par Bluetooth : pam_blue
Je continue dans ma lancée sur le bluetooth dans Ubuntu, voir l'article précédent au sujet de la commande de votre musique par le biais de votre téléphone portable.
Combien de fois par jour saisissez-vous au clavier votre mot de passe ?
Personnellement, énormément, beaucoup trop, on dit souvent que les informaticiens sont des faignants, je vais une fois de plus le prouver en vous proposant une solution pour éviter d'avoir à taper votre mot de passe sur votre distribution Gnu/Linux favorite : Ubuntu, c'est bien sûr valable pour les autres...
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 :
- pam_usb : authentification par le biais d'une "clef usb" (une simple mémoire flash...)
- Installation de pam_usb
- pam_usb en français
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...



Commentaires
Pourquoi c'est toujours la nuit que sont postés les articles publiés sur le PUF ?:)
parce qu il n ont pas le temps le jour pardis!
je regarderais demain, je ne suis pas convaincu de l utilité, mais ca m intersse de tester
bonne nuit
Très intérressant!

appliqué avec succès ici
Super! It works!
C'est génial cette technique ! Dommage que je n'aie pas de périphérique Bluetooth !
bon ca marche, mais si mon portable n est plus dans la piece, il met 2 minutes a me demander un mot de passe... pas tres pratique.
Par contre, je rviens sur mon commentaire précédent: qu'est-ce que ça vaut niveau sécurité?
Bien sûr, ça protège des utilisateurs "physiques", mais si un script se lance dans notre dos avec un beau
sudo rm -rf /*
Et que l'on est à côté avec notre périphérique BT, rien ne l'empêchera de s'executer!?
Bonsoir Ago,
En effet, rien de l'empêchera de l'exécuter, mais lorsque tu fais un sudo, tu peux exécuter n'importe quel commande sans redemande du mot de passe pendant un certain temps, ce qui revient, au final, exactement au même...
J'ai trouvé une faille importante : Si vous avez un serveur SSH, et que vous êtes à proximité, n'importe quel mot de passe (sauf NULL) permet de se connecter....
Solution :
Remplacer
@include common-auth
Par
auth required pam_unix.so nullok_secure
dans le fichier /etc/pam.d/ssh. (Si il y a autre chose dans /etc/pam.d/common-auth, mettez le aussi, SAUF la ligne du blutu !
Donc il suffit de t'"emprunter" ton portable pour avoir tes droits ?
C'est une politique de sécurité comme une autre, mais elle me paraît bien faible pour un utilisateur potentiellement root.
Il faut voir aussi que si le système demande le mot de passe, c'est sa manière à lui de dire "DANGER !" et de te faire relire ta commande avant de taper le mot de passe...
J'avais essayé le pam_usb à une époque et c'est ce qui m'avait le plus gêné !
Bon, je pense qu'il y a besoin d'une petite mise au point...
The_Glu, il ne s'agit nullement d'une "faille importante" comme tu l'affirmes mais d'un comportement inhérent à pam et à la manière qu'à été configuré pam_blue.
pam_blue à été rajouté dans le fichier common-auth qui est appelé en include dans tous les cas d'authentification (gdm, ssh...) donc, il est totalement normal qu'en étant à proximité avec son periphérique bluetooth et en se logguant en ssh sur la machine, on soit authentifié immédiatement (le mot de passe demandé par ssh est alors squizzé au profis de pam_blue) et comme je l'ai bien dit dans l'article, c'est à vous d'appliquer votre politique de sécurité en modifiant les fichiers disponible dans /etc/pam.d/ ...
xo
"Donc il suffit de t'"emprunter" ton portable pour avoir tes droits ?"
Exactement, de la même manière avec pam_usb, selon la configuration, il suffit seulement d'emprunter la clef usb...
"Il faut voir aussi que si le système demande le mot de passe, c'est sa manière à lui de dire "DANGER !" et de te faire relire ta commande avant de taper le mot de passe..."
Comme dis plus haut, lorsque l'on tape des commandes avec sudo, on dispose pour les commandes suivantes d'un timeout qui nous dispense de retaper le mot de passe, on se retrouve alors EXACTEMENT dans le même cas...
Pour finir, dans ma conclusion, j'ai bien spécifier que c'était utile pour son poste de travail chez soi.
Quoiqu'il n soit, merci de donner vos opinions sur ce sujet.
Je suis d'accord, mais il faut juste avoir conscience de ce qu'on fait quand on met en place ce genre de système.
En perspectives intéressantes, on pourrait aussi adapter le pam pour avoir une double identification bluetooth + mdp comme on peut faire usb + mdp
Si tu as réellement peur de lancer une commande qui mettrai en danger ton système, ne configure pas pam_blue comme moyen d'authentification pour sudo...
J'ai vais modifier l'article afin que l'authentification pam_blue n'affecte que le login au système, les utilisateurs avancés qui savent ce qu'ils font en feront ce qu'ils veulent...
hugo -> Bein comme tu l'indique, le premier qui teste ça avec un sshd ouvert derrière, il peut être assez ennuyé, tu devrais quand même préciser... La faille elle est pas dans le système, elle dans l'action de l'utilisateur qui modifie son common-auth (comme d'habitude, méchant utilisateur)

De toutes façons, un PC sécurisé est un pc arrêté
The_Glu > De toutes façons, un PC sécurisé est un pc arrêté

on est bien d'accord
Voilà, j'ai apporté quelques modifications et mise en garde, j'espère que c'est plus clair maintenant.
Arrivez vous a le configurer pour gnome-screensaver?
Perso j'ai que ces 2 lignes dedans et ca ne fonctionne pas :
@include common-auth
auth sufficient pam_blue.so debug
...
Merci d'avance
Atlas -> j'ai le même problème. A voir, Gnome-ScreenSaver n'utilise pas PAM.
gnome-screensaver utilise obligatoirement pam directement ou indirectement...
Je pense que le problème est dû au fait qu'il attend forcément un mot de passe et que lorsqu'il y en a un de saisi, il le vérifie immédiatement, on est ainsi dans un cercle qui nous empêche une authentification par pam_blue et apparemment par pam_usb... quelqu'un peut confirmer pour pam_usb ?
J'aurai envie de dire que ça marche, à un détail près : je n'ai plus besoin de rentrer mon mot de passe pour le login, mais j'ai de nouveau besoin de le rentrer pour débloquer le keyring et donc permettre à Network-Manager d'accéder au réseau WiFi, chose que j'avais réussi à éviter auparavant avec pam_keyring. J'ai vainement essayé de trouver un moyen d'éviter ça, mais j'avoue que mes connaissances en la matière sont bien maigres. Si quelqu'un a une idée, je suis preneur.
pam_usb ne marche effectivement pas non plus avec gnome-screensaver.
Bonjour j'ai besoin d'aide
J'ai acheter une clé USB pour transférer fichiers d'ordinateur a gsm, j'ai tout installer, Je me connecte avec mon gsm et le programme me demande le code d'identification bluetooth ?
Je ne sais pas du tout ce que c'est et que faire puisque je ne sais plus avancer dans mon télécharger (je n'ai meme pas commencé) Merci a tous !!
C'est urgent ..
Bonjour Pauline,
essaie 0000 ou 1234
Mtn il n'arrive plus a se connecter :s
Mais merci beaucoup de la rapidité
Ca va surement m'aider
Bonsoir, j'ai suivi votre tutorial.
Le problème est que lors de la connexion, il ne se passe rien, GDM attend que je rentre mon mot de passe.
J'ai pourtant bien rempli le fichier de configuration à la fois de pam_blue et de GDM.
Merci de votre aide.
Bonsoir,
Merci de ton conseil Hugo, je me suis apperçu grâce aux journaux qu'il cherchait le fichier de config bluesscan.conf, et non bluescan.conf, nommé de cette façon à l'origine.
Cependant, il subsiste un problème : en effet, lorsque je m'identifie par ce module (ou celui USB), je me retrouve avec une session en Anglais, alors que lors d'un identification ordinaire par mot de passe, ma session est en Français. Ya-t-il un moyen de régler ce léger désagrément ?
Aucune idée à propos de ton problème, as tu vérifié si la langue sélectionner dans Session est la bonne ?
Oui, je viens de faire plusieurs tests, quelque soit la langue choisie dans GDM, le système reste en Anglais. Un mystère pour le moment...
Hé, génial, ce tuto...certes, comme l'ont révélé quelques lecteurs, cela pourrait etre potentiellement risqué, mais bon, pour moi qui n'utilise mon ordi que à la maison ,c'est plutot pratique...
Vivement l'achat d'un GSM blutooth
Merci
Très intéressant, merci.
PS: L'orthographe non plus n'est pas en sécurité.
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é(configurer), 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(authentifié), en effet, cette adresse MAC n'est, en théorie, pas configurable (voir plus bas)
Note :
Vous pouvez éditer les fichiers contenus dans /etc/pam.d pour des réglages plus poussés mais faites extrêmement(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 :
* pam_usb : authentification par le biais d'une "clef usb" (une simple mémoire flash...)
* Installation de pam_usb
* pam_usb en français
Conclusion
Pour ma part, j'ai définitivement adopté (adopter) pam_blue sur mon poste de travail chez moi, chose que je ne ferai sûrement(surement) pas n'importe où(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...
Oulala, merci janotin pour les corrections...
Honte à moi !
J'vais faire mon relou qui arrive un an après, mais j'ai la question qui tue : j'ai dû compiler le logiciel vu qu'il y a pas de deb pour Hardy (logique vu la date du billet), et la connexion via bluetooth marche pas et dans mes logs il me dit qu'il trouve pas "/lib/security/pam_blue.so" ce qui est confirmer par un find et une recherche rapide manuelle : il existe pas.
Une idée du pourquoi du comment il n'existe pas ?
NB. J'ai aussi du aussi crée le fichier de palm_blue.conf au passage
Il n'a sûrement pas installé le fichier pam_blue.so au bon endroit...
Après la compilation, as tu vérifier l'existence du fichier pam_blue.so, si oui, copie le dans /lib/security/
Mmm, en fait semblerait que j'ai une erreur dans ma compilation...
bluepmain.c:36:34: error: security/pam_modules.h: No such file or directory
bluepmain.c:37:34: error: security/_pam_macros.h: No such file or directory
bluepmain.c:47: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'int'
bluepmain.c:149: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'int'
bluepmain.c:158: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'int'
bluepmain.c:167: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'int'
bluepmain.c:176: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'int'
bluepmain.c:183: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'int'
make[2]: *** [bluepmain.lo] Erreur 1
make[2]: quittant le répertoire « /opt/pam_blue/pam_blue/src »
make[1]: *** [install] Erreur 2
make[1]: quittant le répertoire « /opt/pam_blue/pam_blue/src »
Ca te dit quelque chose ?
As tu installé les paquets pam dev et co ?
Je ne suis pas sur ubuntu là (gentoo powaaa
), je ne peux donc pas te dire exactement quel paquet il te faut mais tu es obligé d'installer les paquets de dev avant histoire qu'il trouve les header.
Fais un apt-cache search dev pam, tu devrais trouver ça...
Ensuite, installe le paquet et réessaie.
@++
>_< J'avais même pas penser à faire une vrai recherche pour voir si pam_blue existait dans les dépôts, ce qui est le cas.
Bon, installation toute propre avec le dépot et ça marche. Merci beaucoup !
Ca te dérange si je vais écrire un article sur la doc' d'ubuntu-fr en me basant sur ton article ?
Du moment que c'est pas un copier / coller et que tu cites tes sources, pas de souci
Nan, pas de soucis, je compte bien tout réécrire, surtout maintenant qu'il y a un paquet dans les dépôts.
Je mettrais le lien en commentaire ici pour que tu vois si ça te convient
.
http://doc.ubuntu-fr.org/pam_blue
Vala
. Ca te va ?
Parfait Nathanos,
Merci
Décidément, plein de trucs intéressants par ici !! Testé et validé sans problèmes sur Mandriva. En revanche, le petit "hic" de l'histoire, outre le screensaver, mon téléphone portable ne tient plus que 2 jours avec le bluetooth d'activé.
PS: il n'y a aucun problème pour le screensaver avec pam_usb.
Hello
pam_blue ne semble plus disponible via son site officiel, le projet est abandonné ?
il y a un successeur ?
Merci
Salut baboon,
en effet, le site ne répond plus...
Tu peux regarder du côté de blueproximity qui doit remplir les même fonctions...
++