Comment procéder à l'enrôlement massif de YubiKey avec LinOTP
Contexte rapide
Le YubiKey est livré avec un secret d’usine utilisable contre le service en ligne de Yubico. Souvent on préfère gérer soi‑même la clé secrète et le processus d’authentification. Le YubiKey peut aussi fonctionner comme un jeton HOTP conforme RFC. Pour les déploiements, la clé HMAC secrète peut être écrite dans le YubiKey à l’aide d’outils fournis par Yubico.
LinOTP est un serveur d’authentification open source sous Linux qui supporte mOTP, TOTP, HOTP, OCRA, SMS, mots de passe quotidiens et autres. Depuis LinOTP 2.4.1 (introduit en novembre 2011 ; version au moment de rédaction : 2.5.0), LinOTP supporte l’enrôlement massif de YubiKey.
Important : ce guide part du principe que vous avez déjà un serveur LinOTP installé, un compte administrateur et un userstore configuré.
Installation du serveur LinOTP
LinOTP est une application web en Python. Vous pouvez l’installer depuis zéro en utilisant easy_install ou pip depuis le Python Package Index (PyPI), ou via des paquets .deb fournis sur la page d’accueil ou un dépôt APT. Les paquets du dépôt ont été construits avec Ubuntu 12.04 LTS.
Ressources utiles : la documentation officielle de LinOTP et le dépôt de paquets (voir site officiel de LinOTP).
Installer le client d’administration LinOTP
LinOTP propose un client d’administration en ligne de commande (linotpadminclientce). Il offre certaines fonctions non disponibles dans l’interface web.
Exemples d’installation :
apt-get install linotpadminclientce
ou via pip :
pip install linotpadminclientce
Une fois le client installé, vous êtes prêt pour l’enrôlement.
Accès USB — règle udev
Par défaut, un utilisateur normal n’a pas le droit d’écrire la clé HMAC dans le YubiKey. Deux options : exécuter linotpadm en root (déconseillé) ou définir une règle udev pour donner l’accès au périphérique à l’utilisateur de la console.
Créez le fichier /etc/udev/rules.d/70-yubikey-enrollment.rules :
vi /etc/udev/rules.d/70-yubikey-enrollment.rules
Ajoutez le contenu suivant (extrait de yubikey-personalization) :
# Udev rules for letting the console user access the Yubikey USB
# device node, needed for challenge/response to work correctly.
ACTION=="add|change", SUBSYSTEM=="usb", \
ATTRS{idVendor}=="1050", ATTRS{idProduct}=="0010|0110|0111", \
TEST=="/var/run/ConsoleKit/database", \
RUN+="udev-acl --action=$env{ACTION} --device=$env{DEVNAME}"
Notes :
- Cette règle accorde l’accès à l’utilisateur de la session console via udev-acl.
- Adaptez ATTRS{idProduct} si vous avez d’autres modèles.
- Rechargez les règles udev : sudo udevadm control –reload && sudo udevadm trigger.
Enrôlement des YubiKey (mode HOTP)
Après configuration, lancez la commande d’enrôlement massif :
% linotpadm.py -U https://localhost -a admin -C yubikey_mass_enroll
Exemple d’interaction :
Please enter password for ‘admin’:
Please insert the next yubikey and press enter (x=Exit):
{ u’status’: True, u’value’: True}
Please insert the next yubikey and press enter (x=Exit): x
Processus : linotpadm lit le numéro de série du YubiKey et crée un jeton HOTP dans la base LinOTP avec un identifiant incluant le préfixe YUBI et le numéro de série (par ex. YUBI123456). Le numéro de série est également imprimé au dos du YubiKey pour l’inventaire.
Playbook d’enrôlement massif — procédure opérationnelle
- Préparation
- Vérifier version LinOTP (>= 2.4.1).
- Avoir une machine avec accès physique aux YubiKey et client linotpadmin installé.
- Préparer un poste console possédant la règle udev ci‑dessus.
- Préparer un tableur ou base pour associer numéros de série et utilisateurs.
- Exécution
- Ouvrir un terminal, authentifier admin : linotpadm.py -U https://localhost -a admin -C yubikey_mass_enroll
- Insérer le YubiKey, valider “Entrée” pour chaque appareil.
- Récupérer la sortie JSON et noter le numéro de série.
- Associer le jeton au compte utilisateur via l’interface LinOTP ou le client.
- Validation
- Effectuer un test d’authentification HOTP pour quelques comptes pilote.
- Vérifier que le compteur HOTP et la synchronisation fonctionnent.
- Finalisation
- Documenter les numéros de série et affectations.
- Informer les utilisateurs et fournir instructions d’usage.
Checklists par rôle
Admin système
- Vérifier les versions et dépendances.
- Installer le client linotpadminclientce.
- Déployer la règle udev.
- Sauvegarder la base LinOTP avant changement massif.
Opérateur d’enrôlement
- Contrôler l’inventaire physique des YubiKey.
- Procéder à l’enrôlement via linotpadm.
- Associer les tokens aux comptes et effectuer tests.
Sécurité / Responsable conformité
- Vérifier politiques de gestion des secrets.
- Valider conservation des logs et procédure d’audit.
Critères d’acceptation
- Tous les YubiKey prévus sont listés dans LinOTP et associés à un compte utilisateur.
- Les tests d’authentification HOTP réussissent pour 100 % des comptes pilotes.
- Les scripts ou commandes d’enrôlement s’exécutent sans exiger d’élévation permanente (pas d’exécution en root interactive).
- Les accès physiques et logs sont enregistrés et archivés.
Scénarios où la méthode échoue et solutions
- YubiKey non reconnu par l’OS : vérifiez les règles udev et /var/log/syslog pour les erreurs USB.
- Problème d’écriture de clé HMAC : vérifier que la version du firmware YubiKey supporte l’écriture et que l’outil yubikey-personalization est présent.
- Synchronisation HOTP échouée : resynchroniser le compteur HOTP ou réinitialiser le token et ré-enrôler.
- Politique de conformité interdit l’écriture d’une clé privée sur le YubiKey : envisagez l’utilisation d’un mode challenge/response géré côté serveur sans exporter la clé.
Approches alternatives
- Affecter des YubiKey en mode OATH-TOTP (si votre service préfère TOTP).
- Utiliser YubiKey en mode Yubico OTP (service Yubico) si vous acceptez le service externe.
- Génération et distribution hors ligne des secrets puis écriture via stations dédiées (plus contrôlé mais plus lent).
Mini méthodologie pour l’enrôlement sécurisé
- Préparer un environnement isolé pour l’écriture des secrets.
- Écrire une clé unique par appareil et consigner le numéro de série.
- Tester l’authentification avant déploiement utilisateur.
- Révoquer tout jeton compromis et ré-enrôler si nécessaire.
Risques et mitigations
- Fuite de secrets lors du transport : protègez physiquement les YubiKey et chiffrez les canaux d’administration.
- Erreur humaine lors de l’association : double-contrôle (peer review) des correspondances série→utilisateur.
- Perte de disponibilité du service LinOTP : redondance et sauvegardes régulières.
Confidentialité et conformité (GDPR)
Lorsque vous associez un YubiKey à un utilisateur, ce lien appartient à des données personnelles (identifiant, numéro de série). Traitez ces informations conformément à la réglementation locale (par ex. RGPD) : limiter accès, conserver durablement uniquement si nécessaire, enregistrer la finalité et durée de conservation.
Tests et cas d’acceptation
- TC1 : Enrôlement d’un YubiKey -> jeton créé avec préfixe YUBI et numéro de série présent.
- TC2 : Authentification HOTP réussie après enrôlement (compteur valide).
- TC3 : Enrôlement avec utilisateur non-existant -> erreur claire et non destructive.
- TC4 : Tentative d’enrôlement sans règle udev -> accès refusé et message d’erreur.
Glossaire (1 ligne par terme)
- LinOTP : serveur d’authentification OTP open source pour Linux.
- YubiKey : clé matérielle d’authentification développée par Yubico.
- HOTP : HMAC-Based One-Time Password, méthode RFC pour OTP.
- udev : gestionnaire de périphériques pour le noyau Linux qui applique des règles pour les nœuds de périphériques.
Foire aux questions
Q : Puis-je exécuter linotpadm en tant qu’utilisateur non-root sans règle udev ? R : Non, il faudra soit exécuter en root (déconseillé), soit appliquer la règle udev pour déléguer l’accès au périphérique.
Q : Est‑ce que linotpadminclientce peut automatiser l’affectation aux utilisateurs ? R : Oui, le client peut être utilisé dans des scripts pour associer automatiquement les jetons après enrôlement.
Q : Dois‑je conserver les clés HMAC en clair ? R : Non. Les clés doivent être protégées. Préférez que la clé soit écrite directement dans le YubiKey depuis un poste contrôlé sans révocation ou export du secret depuis ce poste.
Résumé
Ce guide décrit comment préparer l’environnement (installation, udev), exécuter l’enrôlement massif via linotpadm, et garantir sécurité, traçabilité et conformité. Suivez la playbook étape par étape, validez avec les tests d’acceptation et archivez les associations pour audit.
Important : adaptez les règles udev et la procédure aux politiques internes de sécurité et à vos versions logicielles.
Bonne mise en œuvre et authentification sécurisée !
Matériaux similaires

Ajuster le gamma de votre écran sous Windows

Cours Kali Linux promu par partisans d'ISIS

Déverrouiller un iPhone sans code — guide complet

Réactiver un compte Snapchat en 30 jours

Voir et gérer vos likes Instagram
