« S'identifier par une clé USB » : différence entre les versions
Aucun résumé des modifications |
|||
(6 versions intermédiaires par 4 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
= S'identifier par une clef USB = | |||
== Objectif == | == Objectif == | ||
Permettre l'identification d'un utilisateur par une clé USB, en remplacement ou en | Permettre l'identification d'un utilisateur par une clé USB, en remplacement ou en complément du mot de passe | ||
== Logiciels et matériel utilisés == | == Logiciels et matériel utilisés == | ||
Distribution : Debian, mais cela est normalement possible avec toutes... | Distribution : Debian, mais cela est normalement possible avec toutes... | ||
Logiciel : pam_usb, un module dédié à cette utilisation pour PAM. PAM est un | Logiciel : pam_usb, un module dédié à cette utilisation pour PAM. PAM est un mécanisme d'authentification intégré à beaucoup de distributions GNU/Linux. | ||
Attention cette méthode ne fonctionne pas avec les gestionnaires de connexion graphique comme KDM, GDM, XDM, etc. Elle est uniquement valable pour un login en mode texte. | Attention cette méthode ne fonctionne pas avec les gestionnaires de connexion graphique comme KDM, GDM, XDM, etc. Elle est uniquement valable pour un login en mode texte. | ||
N'importe quelle clé USB reconnue sous Linux devrait convenir. La capacité nécessaire est infime : 1 Ko suffit pour un utilisateur, avec une clé DSA de 1024 bits ! | N'importe quelle clé USB reconnue sous Linux devrait convenir. La capacité nécessaire est infime : 1 Ko suffit pour un utilisateur, avec une clé DSA de 1024 bits ! | ||
Une bonne solution pour encore plus de sécurité est de | Une bonne solution pour encore plus de sécurité est de partitionner votre clé : vous pouvez créer une petite partition à la fin de la clé, d'environ 1 Mo (ce qui est largement suffisant pour stocker quelques clés, en théorie on pourrait en mettre 500 dans 1 Mo !) | ||
Ainsi, vos clés ne seront pas confondues avec le reste de vos données et il n'y a pas de risque de les effacer. | Ainsi, vos clés ne seront pas confondues avec le reste de vos données et il n'y a pas de risque de les effacer. | ||
Ligne 21 : | Ligne 21 : | ||
Ensuite, il faut extraire les sources et lancer la compilation : | Ensuite, il faut extraire les sources et lancer la compilation : | ||
<code>$ tar xvzf pam_usb-version.tar.gz | <div class="code"> | ||
$ cd pam_usb_version | $ tar xvzf pam_usb-version.tar.gz | ||
$ make | $ cd pam_usb_version | ||
$ su puis taper le mot de passe ''root'' | $ make | ||
# make install</ | $ su puis taper le mot de passe ''root'' | ||
# make install</div> | |||
Et c'est tout, le module est normalement installé, s'il vous n'obtenez pas d'erreur à la compilation, auquel cas il vous faut vérifier que toutes les dépendances sont bien installées... | Et c'est tout, le module est normalement installé, s'il vous n'obtenez pas d'erreur à la compilation, auquel cas il vous faut vérifier que toutes les dépendances sont bien installées... | ||
Ligne 34 : | Ligne 35 : | ||
Il faut donc créer une ligne dans votre /etc/fstab qui ressemble à celle-ci : | Il faut donc créer une ligne dans votre /etc/fstab qui ressemble à celle-ci : | ||
<code | <div class="code">/dev/sda1 /media/cle auto rw,user,auto 0 0</div> | ||
en | en remplaçant /dev/sda1 par le périphérique qui correspond à votre clé, /media/cle par son point de montage, et auto par son système de fichiers (vous pouvez aussi laisser auto pour une détection automatique) | ||
Pour plus de détails sur l'utilisation des clés USB vous pouvez consulter cet article | Pour plus de détails sur l'utilisation des clés USB vous pouvez consulter cet article | ||
Ligne 45 : | Ligne 46 : | ||
Il faut à présent générer la paire de clés publique/privée qui sera utilisée pour vous identifier. | Il faut à présent générer la paire de clés publique/privée qui sera utilisée pour vous identifier. | ||
Dans une console tapez | Dans une console tapez | ||
<code> | <div class="code"> | ||
% usbadm keygen /media/cle login 2048</ | % usbadm keygen /media/cle login 2048</div> | ||
en | en remplaçant /media/cle par le point de montage de votre clé et login par le nom d'utilisateur pour lequel vous voulez générer les clés. 2048 correspond à la taille de la clé, on estime que c'est suffisant, compte tenu de la puissance des ordinateurs actuels, pour une assez grande sécurité. Cependant, n'oubliez pas que n'importe quelle clé sera ''toujours'' "piratable". | ||
Vous obtiendrez : | Vous obtiendrez : | ||
<code>[!] Generating 2048 DSA key pair for thomas@p3thomas | <div class="code"> | ||
[!] Extracting private key... | [!] Generating 2048 DSA key pair for thomas@p3thomas | ||
[+] Private key extracted. | [!] Extracting private key... | ||
[+] Private key successfully written. | [+] Private key extracted. | ||
[!] Writing public key... | [+] Private key successfully written. | ||
[+] Public key successfully written.</ | [!] Writing public key... | ||
[+] Public key successfully written.</div> | |||
Vos clés ont donc été générées dans un dossier caché nommé .auth de votre clé USB. | Vos clés ont donc été générées dans un dossier caché nommé .auth de votre clé USB. | ||
Il faut répéter cette opération pour tous les | Il faut répéter cette opération pour tous les utilisateurs qui veulent utiliser leur clé pour s'identifier. | ||
=== Facultatif : cryptage des clés === | === Facultatif : cryptage des clés === | ||
Pour plus de sécurité, il est possible de crypter les clés, par la commande | Pour plus de sécurité, il est possible de crypter les clés, par la commande | ||
<code> | <div class="code"> | ||
% usbadm cipher /media/cle login</ | % usbadm cipher /media/cle login</div> | ||
il vous sera demandé l' | il vous sera demandé l'algorithme à utiliser : | ||
<code | <div class="code"> | ||
[!] Importing the private key... | [!] Importing the private key... | ||
[+] Private key imported | [+] Private key imported | ||
[!] Encrypting the private key may prevent someone to authenticate with | [!] Encrypting the private key may prevent someone to authenticate with | ||
your key. The drawback is that pam_usb will prompt you for password | your key. The drawback is that pam_usb will prompt you for password | ||
every time you authenticate. | every time you authenticate. | ||
[?] Which algorithm want you to use ? (none/des3/twofish): | [?] Which algorithm want you to use ? (none/des3/twofish): | ||
</ | </div> | ||
Pour pouvoir protéger votre clé par une ''passphrase'', il faut choisir des3. | Pour pouvoir protéger votre clé par une ''passphrase'', il faut choisir des3. | ||
Ligne 95 : | Ligne 97 : | ||
=== Identification par clé uniquement === | === Identification par clé uniquement === | ||
Il faut modifier le fichier /etc/pam.d/common-auth comme suit : | Il faut modifier le fichier /etc/pam.d/common-auth comme suit : | ||
<code>auth required usb_pam.so | <div class="code">auth required usb_pam.so | ||
</ | </div> | ||
et commenter la ligne : | et commenter la ligne : | ||
<code>auth required pam_unix.so nullok_secure | <div class="code">auth required pam_unix.so nullok_secure | ||
</ | </div> | ||
=== Identification par clé et mot de passe === | === Identification par clé et mot de passe === | ||
Il faut comme | Il faut comme précédemment ajouter la ligne | ||
<code>auth required usb_pam.so | <div class="code">auth required usb_pam.so | ||
</ | </div> | ||
et laisser le reste du fichier tel quel. | et laisser le reste du fichier tel quel. | ||
=== Identification par clé ou par mot de passe === | === Identification par clé ou par mot de passe === | ||
Ajouter la ligne au fichier /etc/pam.d/common-auth | Ajouter la ligne au fichier /etc/pam.d/common-auth | ||
<code>auth sufficient usb_pam.so | <div class="code">auth sufficient usb_pam.so | ||
</ | </div> | ||
== Faire les essais ! == | == Faire les essais ! == | ||
Ligne 116 : | Ligne 118 : | ||
Dans un premier temps je vous conseille d'utiliser l'authentification par clé ou par mot de passe, car, si l'identification par clé ne fonctionne pas, vous pourrez toujours vous logguer avec votre mot de passe pour corriger ce qui ne va pas. | Dans un premier temps je vous conseille d'utiliser l'authentification par clé ou par mot de passe, car, si l'identification par clé ne fonctionne pas, vous pourrez toujours vous logguer avec votre mot de passe pour corriger ce qui ne va pas. | ||
=== | === Rattraper les erreurs === | ||
Si par malheur vous avez modifié le fichier en mettant | Si par malheur vous avez modifié le fichier en mettant | ||
auth required pam_sub.so | auth required pam_sub.so | ||
Ligne 123 : | Ligne 125 : | ||
(à tester) Une autre solution consiste à booter sur un kernel avec l'option '''single'''. En général les kernels marqués par '''failsafe''' dans le bootloader comportent cette option. | (à tester) Une autre solution consiste à booter sur un kernel avec l'option '''single'''. En général les kernels marqués par '''failsafe''' dans le bootloader comportent cette option. | ||
<br/> | |||
<br/> | |||
'''<b>[[Sécurité et vie privée|@ Retour à la rubrique Sécurité et vie privée]]</b>''' | |||
<br/> | |||
{{Copy|28 fév 2006|[[Utilisateur:Thomas.debay|Thomas.debay]]|CC-BY-SA}} | {{Copy|28 fév 2006|[[Utilisateur:Thomas.debay|Thomas.debay]]|CC-BY-SA}} | ||
[[Catégorie:Sécurité et vie privée]] |
Dernière version du 28 décembre 2023 à 10:03
S'identifier par une clef USB
Objectif
Permettre l'identification d'un utilisateur par une clé USB, en remplacement ou en complément du mot de passe
Logiciels et matériel utilisés
Distribution : Debian, mais cela est normalement possible avec toutes...
Logiciel : pam_usb, un module dédié à cette utilisation pour PAM. PAM est un mécanisme d'authentification intégré à beaucoup de distributions GNU/Linux. Attention cette méthode ne fonctionne pas avec les gestionnaires de connexion graphique comme KDM, GDM, XDM, etc. Elle est uniquement valable pour un login en mode texte.
N'importe quelle clé USB reconnue sous Linux devrait convenir. La capacité nécessaire est infime : 1 Ko suffit pour un utilisateur, avec une clé DSA de 1024 bits !
Une bonne solution pour encore plus de sécurité est de partitionner votre clé : vous pouvez créer une petite partition à la fin de la clé, d'environ 1 Mo (ce qui est largement suffisant pour stocker quelques clés, en théorie on pourrait en mettre 500 dans 1 Mo !) Ainsi, vos clés ne seront pas confondues avec le reste de vos données et il n'y a pas de risque de les effacer.
Installation du module
Il n'existe malheureusement pas (encore) de paquet pour Debian. Si vous utilisez une autre distribution, essayer de vérifier s'il n'existe pas un paquet, si vous êtes sous Debian, téléchargez les sources sur le site officiel : [1]
Sur une Debian "'sarge" les dépendances requises sont : libssl-dev, libreadline4-dev, libpam0g-dev, libpam-usb, que vous pouvez installer par apt-get. Sur Debian "etch" (testing", il faut installer tout ca et en plus libreadline5 et libreadline5-dev
Ensuite, il faut extraire les sources et lancer la compilation :
$ tar xvzf pam_usb-version.tar.gz $ cd pam_usb_version $ make $ su puis taper le mot de passe root# make install
Et c'est tout, le module est normalement installé, s'il vous n'obtenez pas d'erreur à la compilation, auquel cas il vous faut vérifier que toutes les dépendances sont bien installées...
Préparation du système
Montage automatique de la clé
Il faut que votre clé soit montée automatiquement lorsque vous l'insérez, sinon, ca ne fonctionnera pas (encore que sur mon système cela à fonctionné sans monter la clé...) Il faut donc créer une ligne dans votre /etc/fstab qui ressemble à celle-ci :
en remplaçant /dev/sda1 par le périphérique qui correspond à votre clé, /media/cle par son point de montage, et auto par son système de fichiers (vous pouvez aussi laisser auto pour une détection automatique)
Pour plus de détails sur l'utilisation des clés USB vous pouvez consulter cet article Hardware-hard stock-cleusb
Génération des clés
Génération des clés
Il faut à présent générer la paire de clés publique/privée qui sera utilisée pour vous identifier. Dans une console tapez
en remplaçant /media/cle par le point de montage de votre clé et login par le nom d'utilisateur pour lequel vous voulez générer les clés. 2048 correspond à la taille de la clé, on estime que c'est suffisant, compte tenu de la puissance des ordinateurs actuels, pour une assez grande sécurité. Cependant, n'oubliez pas que n'importe quelle clé sera toujours "piratable".
Vous obtiendrez :
[!] Generating 2048 DSA key pair for thomas@p3thomas [!] Extracting private key... [+] Private key extracted. [+] Private key successfully written. [!] Writing public key...[+] Public key successfully written.
Vos clés ont donc été générées dans un dossier caché nommé .auth de votre clé USB.
Il faut répéter cette opération pour tous les utilisateurs qui veulent utiliser leur clé pour s'identifier.
Facultatif : cryptage des clés
Pour plus de sécurité, il est possible de crypter les clés, par la commande
il vous sera demandé l'algorithme à utiliser :
[!] Importing the private key... [+] Private key imported [!] Encrypting the private key may prevent someone to authenticate with your key. The drawback is that pam_usb will prompt you for password every time you authenticate. [?] Which algorithm want you to use ? (none/des3/twofish):
Pour pouvoir protéger votre clé par une passphrase, il faut choisir des3.
Il vous sera demandé la passphrase, qu'il vous sera ensuite nécessaire de taper à chaque utilisation de la clé, c'est à dire à chaque identification.
Et votre clé est cryptée !
Paramètrage du système
Il ne reste plus qu'à modifier le comportement de PAM pour qu'il prenne en compte le module pam_usb. Trois cas (ou plus ?) sont possibles :
- Identification par clé USB uniquement. Aucun mot de passe (sauf la passphrase de la clé DSA si vous en avez une) ne sera requis
- Identification par clé et par mot de passe. Votre mot de passe sera comme avant demandé, mais si la clé USB n'est pas présente vous ne pourrez pas vous identifier. C'est la solution la plus sure, mais aussi la moin pratique.
- Identification par clé USB ou par mot de passe. L'un ou l'autre suffit.
Dans les trois cas tout se passera dans les fichiers du répertoire /etc/pam.d Pour utiliser cette méthode uniquement au moment du login, il faut modifier le fichier /etc/pam.d/login. Pour l'utiliser à toutes les identifications, il faut agir sur le fichier /etc/pam.d/common-auth
Identification par clé uniquement
Il faut modifier le fichier /etc/pam.d/common-auth comme suit :
et commenter la ligne :
Identification par clé et mot de passe
Il faut comme précédemment ajouter la ligne
et laisser le reste du fichier tel quel.
Identification par clé ou par mot de passe
Ajouter la ligne au fichier /etc/pam.d/common-auth
Faire les essais !
Normalement vous pouvez vous délogguer, et faire l'essai ! Dans un premier temps je vous conseille d'utiliser l'authentification par clé ou par mot de passe, car, si l'identification par clé ne fonctionne pas, vous pourrez toujours vous logguer avec votre mot de passe pour corriger ce qui ne va pas.
Rattraper les erreurs
Si par malheur vous avez modifié le fichier en mettant auth required pam_sub.so et que votre clé ne fonctionne plus, alors vous ne pouvez plus vous loguer ! La solution consiste à booter sur un Live-CD, monter votre partition système, et modifier le fichier pour supprimer l'identification par clé.
(à tester) Une autre solution consiste à booter sur un kernel avec l'option single. En général les kernels marqués par failsafe dans le bootloader comportent cette option.
@ Retour à la rubrique Sécurité et vie privée
Copyright
© 28 fév 2006 Thomas.debay
Ce document est publié sous licence Creative Commons Attribution, Partage à l'identique 4.0 : https://creativecommons.org/licenses/by-sa/4.0/ |