« S'identifier par une clé USB » : différence entre les versions

De Lea Linux
Aller à la navigation Aller à la recherche
(balises code)
(25 versions intermédiaires par 8 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
[[Catégorie:Sécurité]]
[[Catégorie:Administration_système]]
= S'identifier par une clef USB =
== Objectif ==
== Objectif ==
Permettre l'identification d'un utilisateur par une clé USB, en remplacement ou en complèment du mot de passe
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 méchanisme d'authentification intégré à beaucoup de distributions GNU/Linux.
 
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 !
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 partionner 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érories on pourrait en mettre 500 dans 1 Mo !)
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 13 : Ligne 21 :
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 : [http://www.pamusb.org]
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 : [http://www.pamusb.org]


Sur une Debian les dépendances requises sont : libssl-dev, libreadline4-dev, libpam0g-dev, libpam-usb, que vous pouvez installer par apt-get.
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 :
Ensuite, il faut extraire les sources et lancer la compilation :
<div class="code">
$ tar xvzf pam_usb-version.tar.gz
$ cd pam_usb_version
$ make
$ su puis taper le mot de passe ''root''
# make install</div>


tar xvzf pam_usb-version.tar.gz
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...
cd pam_usb_version
make
make install (en tant que root)
 
Et c'est tout, le module est normalement installé.


== Préparation du système ==
== Préparation du système ==
Ligne 29 : Ligne 38 :
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 :


/dev/sda1 /media/cle auto rw,user,auto 0 0
<div class="code">/dev/sda1 /media/cle auto rw,user,auto 0 0</div>


en remplacant /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)
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
[[Hardware-hard stock-cleusb]]
[[Hardware-hard stock-cleusb]]


== Génération des clés ==
== Génération des clés ==
Ligne 41 : Ligne 49 :
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  
% usbadm keygen /media/cle login 2048
<div class="code">
en remplacant /media/cle par le point de montage de votre clé et login par le nom d'utilsateur 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".
% usbadm keygen /media/cle login 2048</div>
Vous obtenez
 
[!] Generating 2048 DSA key pair for thomas@p3thomas
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".
[!] Extracting private key...
 
[+] Private key extracted.
Vous obtiendrez :
[+] Private key successfully written.
<div class="code">
[!] Writing public key...
[!] Generating 2048 DSA key pair for thomas@p3thomas
[+] Public key successfully written.
[!] Extracting private key...
[+] Private key extracted.
[+] Private 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 utilsateurs qui veulent utiliser leur clé pour s'identifier.
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
% usbadm cipher /media/cle login
<div class="code">
il vous sera demandé l'algorythme à utiliser :  
% usbadm cipher /media/cle login</div>
[!] Importing the private key...
il vous sera demandé l'algorithme à utiliser :  
[+] Private key imported
<div class="code">
[!] Encrypting the private key may prevent someone to authenticate with
[!] Importing the private key...
    your key. The drawback is that pam_usb will prompt you for password
[+] Private key imported
    every time you authenticate.
[!] Encrypting the private key may prevent someone to authenticate with
[?] Which algorithm want you to use ? (none/des3/twofish):  
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):  
</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 71 : Ligne 86 :


Et votre clé est cryptée !
Et votre clé est cryptée !


== Paramètrage du système ==
== Paramètrage du système ==
Il ne reste plus qu'à modifier le comportement de PAM pour qu'il prenne en compte le module pam_sub.
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 :
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é USB uniquement. Aucun mot de passe (sauf la ''passphrase'' de la clé DSA si vous en avez une) ne sera requis
Ligne 87 : Ligne 100 :
=== 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 :
auth required usb_pam.so
<div class="code">auth required usb_pam.so
</div>
et commenter la ligne :
et commenter la ligne :
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 précèdemment ajouter la ligne
Il faut comme précédemment ajouter la ligne
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
auth sufficient usb_pam.so
<div class="code">auth sufficient usb_pam.so
</div>


== Faire les essais ! ==
== Faire les essais ! ==
Normalement vous pouvez vous délogguer, et faire l'essai !
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 vas 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.


=== Rattrapper les erreurs ===
=== 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
et que votre clé ne fonctionne plus, alors vous ne pouvez plus vous loogguer !
et que votre clé ne fonctionne plus, alors vous ne pouvez plus vous loguer !
La solution consiste en booter sur un Live-CD, monter votre partition système, et modifier le fichier pour supprimer l'identification par clé.
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.
 
 
<br/>
<br/>
'''<b>[[Reseau-index|@ Retour à la rubrique Réseau et sécurité]]</b>'''
<br/>
 
{{Copy|28 fév 2006|[[Utilisateur:Thomas.debay|Thomas.debay]]|CC-BY-SA}}

Version du 17 mai 2012 à 14:27


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 :

/dev/sda1 /media/cle auto rw,user,auto 0 0

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

% usbadm keygen /media/cle login 2048

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

 % usbadm cipher /media/cle login
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 :

auth required usb_pam.so

et commenter la ligne :

auth required pam_unix.so nullok_secure

Identification par clé et mot de passe

Il faut comme précédemment ajouter la ligne

auth required usb_pam.so

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

auth sufficient usb_pam.so

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 Réseau et sécurité

Copyright

© 28 fév 2006 Thomas.debay

Creative Commons License
Creative Commons Attribution iconCreative Commons Share Alike icon
Ce document est publié sous licence Creative Commons
Attribution, Partage à l'identique 4.0 :
https://creativecommons.org/licenses/by-sa/4.0/