mokey est une application Web qui fournit des outils de gestion de compte utilisateur en libre-service pour FreeIPA. La motivation de ce projet était de mettre en œuvre la fonctionnalité de création de compte en libre-service et de réinitialisation de mot de passe manquante dans FreeIPA. Cette fonctionnalité n'est pas fournie par défaut dans FreeIPA, voir ici pour plus d'informations et la justification de cette décision. mokey n'est pas un plugin FreeIPA mais une application autonome complète qui utilise l'API FreeIPA JSON. mokey ne nécessite aucune modification du schéma LDAP sous-jacent et utilise une base de données MariaDB pour stocker les jetons d'accès. L'expérience utilisateur et l'interface Web peuvent être personnalisées pour répondre aux exigences de l'apparence d'une organisation. mokey est écrit en Go et publié sous une licence BSD modifiée.
mokey doit être considéré comme un logiciel alpha et utilisé à vos propres risques. Il existe des risques de sécurité inhérents à la fourniture de fonctionnalités telles que la réinitialisation des mots de passe en libre-service et peuvent rendre vos systèmes vulnérables aux abus.
Remarque : mokey doit être installé sur une machine déjà inscrite à FreeIPA. Il est également recommandé d'installer le package ipa-admintools. L'inscription d'un hôte dans FreeIPA sort du cadre de ce document.
Pour installer mokey, téléchargez une copie du binaire précompilé ici.
Archives tar.gz :
$ tar xvzf mokey-VERSION-linux-x86_64.tar.gz
Paquets deb, RPM :
$ sudo dpkg -i mokey_VERSION_amd64.deb
$ sudo rpm -ivh mokey-VERSION-amd64.rpm
Créez un compte utilisateur et un rôle dans FreeIPA avec le privilège « Modifier les utilisateurs et réinitialiser les mots de passe ». Ce compte utilisateur sera utilisé par l'application mokey pour réinitialiser les mots de passe des utilisateurs. L'autorisation « Modifier les utilisateurs » doit également avoir le « ipauserauthtype » activé. Exécutez les commandes suivantes (nécessite l'installation de ipa-admintools) :
$ mkdir /etc/mokey/private
$ kinit adminuser
$ ipa role-add 'Mokey User Manager' --desc='Mokey User management'
$ ipa role-add-privilege 'Mokey User Manager' --privilege='User Administrators'
$ ipa user-add mokeyapp --first Mokey --last App
$ ipa role-add-member 'Mokey User Manager' --users=mokeyapp
$ ipa permission-mod 'System: Modify Users' --includedattrs=ipauserauthtype
$ ipa-getkeytab -s [your.ipa-master.server] -p mokeyapp -k /etc/mokey/private/mokeyapp.keytab
$ chmod 640 /etc/mokey/private/mokeyapp.keytab
$ chgrp mokey /etc/mokey/private/mokeyapp.keytab
Modifiez le fichier de configuration mokey et définissez le chemin d'accès au fichier keytab. Les valeurs de token_secret
et csrf_secret
seront automatiquement générées pour vous si elles sont laissées vides. Définissez ces valeurs secrètes si vous souhaitez que les sessions persistent après un redémarrage. Pour d'autres options de configuration spécifiques au site, voir ici :
$ vim /etc/mokey/mokey.toml
# Path to keytab file
keytab = "/etc/mokey/private/mokeyapp.keytab"
# Secret key for branca tokens. Must be 32 bytes. To generate run:
# openssl rand -hex 32
token_secret = ""
# CSRF token secret key. Should be a random string
csrf_secret = ""
Il est fortement recommandé d'exécuter mokey en utilisant HTTPS. Vous aurez besoin d'un certificat SSL/clé_privée utilisant la PKI de FreeIPA, auto-signé ou provenant d'une autorité de certification commerciale. La création de certificats SSL sort du cadre de ce document. Vous pouvez également exécuter mokey derrière haproxy ou Apache/Nginx.
Démarrez le service Mokey :
$ systemctl restart mokey
$ systemctl enable mokey
mokey permet aux utilisateurs d'ajouter/supprimer des clés publiques ssh. Les serveurs inscrits à FreeIPA peuvent être configurés pour que sshd recherche les clés publiques des utilisateurs dans LDAP en ajoutant les lignes suivantes dans /etc/ssh/sshd_config et en redémarrant sshd :
AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys
AuthorizedKeysCommandUser nobody
mokey implémente le flux de connexion/consentement pour gérer les demandes de défi d'Hydra. Cela sert de pont entre Hydra et le fournisseur d’identité FreeIPA. Pour plus d’informations sur Hydra et le flux de connexion/consentement, voir ici.
Pour configurer le flux de connexion/consentement Hydra, définissez les variables suivantes dans /etc/mokey/mokey.toml
:
[hydra]
admin_url = "http://127.0.0.1:4445"
login_timeout = 86400
fake_tls_termination = true
Tous les clients OAuth configurés dans Hydra seront authentifiés via mokey en utilisant FreeIPA comme fournisseur d'identité. Pour un exemple d'application client OAuth 2.0/OIDC, voir ici.
Tout d’abord, vous aurez besoin de Go v1.21 ou supérieur. Clonez le dépôt :
$ git clone https://github.com/ubccr/mokey
$ cd mokey
$ go build .
mokey est publié sous une licence de style BSD. Voir le fichier LICENCE.