mokey es una aplicación web que proporciona herramientas de autoservicio de administración de cuentas de usuarios para FreeIPA. La motivación de este proyecto fue implementar la funcionalidad de autoservicio de creación de cuentas y restablecimiento de contraseña que falta en FreeIPA. Esta función no se proporciona de forma predeterminada en FreeIPA; consulte aquí para obtener más información y el fundamento de esta decisión. mokey no es un complemento de FreeIPA sino una aplicación independiente completa que utiliza la API JSON de FreeIPA. mokey no requiere cambios en el esquema LDAP subyacente y utiliza una base de datos MariaDB para almacenar tokens de acceso. La experiencia del usuario y la interfaz web se pueden personalizar para adaptarse a los requisitos de la apariencia de una organización. mokey está escrito en Go y publicado bajo una licencia BSD modificada.
mokey debe considerarse software alfa y utilizarse bajo su propia responsabilidad. Existen riesgos de seguridad inherentes al proporcionar funciones como el autoservicio de restablecimiento de contraseñas y pueden hacer que sus sistemas sean vulnerables al abuso.
Nota: mokey debe instalarse en una máquina que ya esté inscrita en FreeIPA. También se recomienda tener instalado el paquete ipa-admintools. Inscribir un anfitrión en FreeIPA está fuera del alcance de este documento.
Para instalar mokey, descargue una copia del binario precompilado aquí.
Archivo tar.gz:
$ tar xvzf mokey-VERSION-linux-x86_64.tar.gz
paquetes deb, rpm:
$ sudo dpkg -i mokey_VERSION_amd64.deb
$ sudo rpm -ivh mokey-VERSION-amd64.rpm
Cree una cuenta de usuario y un rol en FreeIPA con el privilegio "Modificar usuarios y restablecer contraseñas". La aplicación mokey utilizará esta cuenta de usuario para restablecer las contraseñas de los usuarios. El permiso "Modificar usuarios" también debe tener habilitado el "ipauserauthtype". Ejecute los siguientes comandos (requiere la instalación 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
Edite el archivo de configuración de mokey y establezca la ruta al archivo de tabla de claves. Los valores para token_secret
y csrf_secret
se generarán automáticamente si se dejan en blanco. Establezca estos valores secretos si desea que las sesiones persistan después de un reinicio. Para otras opciones de configuración específicas del sitio, consulte aquí:
$ 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 = ""
Se recomienda encarecidamente ejecutar mokey mediante HTTPS. Necesitará un certificado SSL/clave_privada, ya sea utilizando la PKI de FreeIPA, autofirmada o de una autoridad de certificación comercial. La creación de certificados SSL está fuera del alcance de este documento. También puedes ejecutar mokey detrás de haproxy o Apache/Nginx.
Iniciar servicio mokey:
$ systemctl restart mokey
$ systemctl enable mokey
mokey permite a los usuarios agregar/eliminar claves públicas ssh. Los servidores inscritos en FreeIPA se pueden configurar para que tengan claves públicas de búsqueda de usuarios sshd en LDAP agregando las siguientes líneas en /etc/ssh/sshd_config y reiniciando sshd:
AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys
AuthorizedKeysCommandUser nobody
mokey implementa el flujo de inicio de sesión/consentimiento para manejar solicitudes de desafío de Hydra. Esto sirve como puente entre Hydra y el proveedor de identidad FreeIPA. Para obtener más información sobre Hydra y el flujo de inicio de sesión/consentimiento, consulte aquí.
Para configurar el flujo de inicio de sesión/consentimiento de Hydra, establezca las siguientes variables en /etc/mokey/mokey.toml
:
[hydra]
admin_url = "http://127.0.0.1:4445"
login_timeout = 86400
fake_tls_termination = true
Cualquier cliente OAuth configurado en Hydra se autenticará mediante mokey utilizando FreeIPA como proveedor de identidad. Para ver un ejemplo de aplicación cliente OAuth 2.0/OIDC, consulte aquí.
Primero, necesitará Go v1.21 o superior. Clonar el repositorio:
$ git clone https://github.com/ubccr/mokey
$ cd mokey
$ go build .
mokey se publica bajo una licencia de estilo BSD. Ver el archivo de LICENCIA.