mokey ist eine Webanwendung, die Self-Service-Tools zur Benutzerkontenverwaltung für FreeIPA bereitstellt. Die Motivation für dieses Projekt bestand darin, die in FreeIPA fehlende Funktionalität zur Self-Service-Kontoerstellung und zum Zurücksetzen von Passwörtern zu implementieren. Diese Funktion ist in FreeIPA nicht standardmäßig verfügbar. Weitere Informationen und die Gründe für diese Entscheidung finden Sie hier. mokey ist kein FreeIPA-Plugin, sondern eine vollständig eigenständige Anwendung, die die FreeIPA-JSON-API verwendet. mokey erfordert keine Änderungen am zugrunde liegenden LDAP-Schema und verwendet eine MariaDB-Datenbank zum Speichern von Zugriffstokens. Das Benutzererlebnis und die Weboberfläche können an die Anforderungen des Erscheinungsbilds einer Organisation angepasst werden. mokey ist in Go geschrieben und unter einer modifizierten BSD-Lizenz veröffentlicht.
mokey sollte als Alpha-Software betrachtet werden und erfolgt auf eigenes Risiko. Die Bereitstellung von Funktionen wie Self-Service-Passwort-Resets birgt inhärente Sicherheitsrisiken und kann Ihre Systeme anfällig für Missbrauch machen.
Hinweis: mokey muss auf einem Computer installiert werden, der bereits bei FreeIPA registriert ist. Es wird außerdem empfohlen, das Paket ipa-admintools zu installieren. Die Registrierung eines Hosts bei FreeIPA ist nicht Gegenstand dieses Dokuments.
Um mokey zu installieren, laden Sie hier eine Kopie der vorkompilierten Binärdatei herunter.
tar.gz-Archiv:
$ tar xvzf mokey-VERSION-linux-x86_64.tar.gz
deb, rpm-Pakete:
$ sudo dpkg -i mokey_VERSION_amd64.deb
$ sudo rpm -ivh mokey-VERSION-amd64.rpm
Erstellen Sie in FreeIPA ein Benutzerkonto und eine Rolle mit der Berechtigung „Benutzer ändern und Passwörter zurücksetzen“. Dieses Benutzerkonto wird von der mokey-Anwendung verwendet, um Benutzerkennwörter zurückzusetzen. Für die Berechtigung „Benutzer ändern“ muss außerdem „ipauserauthtype“ aktiviert sein. Führen Sie die folgenden Befehle aus (erfordert die Installation von 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
Bearbeiten Sie die Mokey-Konfigurationsdatei und legen Sie den Pfad zur Keytab-Datei fest. Die Werte für token_secret
und csrf_secret
werden automatisch für Sie generiert, wenn sie leer bleiben. Legen Sie diese geheimen Werte fest, wenn Sie möchten, dass Sitzungen nach einem Neustart bestehen bleiben. Weitere standortspezifische Konfigurationsoptionen finden Sie hier:
$ 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 = ""
Es wird dringend empfohlen, mokey über HTTPS auszuführen. Sie benötigen ein SSL-Zertifikat/privaten_Schlüssel, entweder über die PKI von FreeIPA, selbstsigniert oder von einer kommerziellen Zertifizierungsstelle. Das Erstellen von SSL-Zertifikaten ist nicht Gegenstand dieses Dokuments. Sie können mokey auch hinter Haproxy oder Apache/Nginx ausführen.
Mokey-Dienst starten:
$ systemctl restart mokey
$ systemctl enable mokey
Mit mokey können Benutzer öffentliche SSH-Schlüssel hinzufügen/entfernen. Server, die bei FreeIPA registriert sind, können so konfiguriert werden, dass sshd-Suchbenutzer öffentliche Schlüssel in LDAP haben, indem sie die folgenden Zeilen in /etc/ssh/sshd_config hinzufügen und sshd neu starten:
AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys
AuthorizedKeysCommandUser nobody
mokey implementiert den Login-/Zustimmungsfluss für die Bearbeitung von Challenge-Anfragen von Hydra. Dies dient als Brücke zwischen Hydra und dem FreeIPA-Identitätsanbieter. Weitere Informationen zu Hydra und dem Anmelde-/Einwilligungsablauf finden Sie hier.
Um den Hydra-Anmelde-/Einwilligungsfluss zu konfigurieren, legen Sie die folgenden Variablen in /etc/mokey/mokey.toml
fest:
[hydra]
admin_url = "http://127.0.0.1:4445"
login_timeout = 86400
fake_tls_termination = true
Alle in Hydra konfigurierten OAuth-Clients werden über Mokey mit FreeIPA als Identitätsanbieter authentifiziert. Ein Beispiel für eine OAuth 2.0/OIDC-Clientanwendung finden Sie hier.
Zunächst benötigen Sie Go v1.21 oder höher. Klonen Sie das Repository:
$ git clone https://github.com/ubccr/mokey
$ cd mokey
$ go build .
mokey wird unter einer BSD-ähnlichen Lizenz veröffentlicht. Siehe die LICENSE-Datei.