Portal de autoservicio de cuentas con PWM
De todos es conocidos la guerra que pueden dar los usuarios con sus cuentas de usuario, que si se han ido de vacaciones y se les ha olvidado la contraseña, que si te juro que la he escrito 5 veces bien… Bueno, pues hoy tenemos un documento top, un portal web de autogestión de cuentas de usuario.
Para evitar pérdidas de tiempo en IT es bueno delegar ciertas tareas en los usuarios, y la gestión de sus credenciales es una de ellas, a parte de quitar un % importante del tiempo de nuestros recursos, también perdemos eficiencia ya que el tiempo de respuesta no será inmediato. Así pues, hoy veremos PWM, un portal web Self-Service para las cuentas de usuario de cualquier LDAP, como pueda ser nuestro Directorio Activo.
Por supuesto PWM es Open Source y tiene cosas muy muy curiosas, nos permitirá granularmente seleccionar las opciones que queremos implementar, como pueda ser, permitir crear cuentas de usuario nuevas, o activar usuarios nuevos, cambiar su contraseña, resetear la contraseña si no se acuerda en base a unas preguntas (u Token mal, TOTP…), integración de para el HelpDesk, actualización de ciertos campos de usuario… Está disponible en cualquier idioma, el tema del interfaz web es sencillamente personalizable para hacerlo corporativo… Bastante interesante, así que se lo agradecemos a sus autores y recordar colaborar con la comunidad de la manera que mejor os venga 😉
Como no la instalación se basa en un contenedor de Docker que en un minutito tendremos corriendo. Si necesitas instalar Docker echa un vistazo a la documentación oficial. Nos descargamos ‘pwm-docker-image-2.0.1.tar’ de https://github.com/pwm-project/pwm/releases, lo cargamos a la máquina con Docker y arrancamos el contenedor:
docker load --input=/tmp/pwm-docker-image-2.0.1.tar docker run -d --name mipwm -p 8443:8443 pwm/pwm-webapp -v /config:/home/openservices/pwm-config sudo docker start mipwm
Configurando PWM,
Abrimos un navegador contra https://DIRECCION_IP_PWM:8443 nos dará la bienvenida a un asistente de configuración, “Next”,
Pulsamos en “Manual Configuration” para configurarlo,
Aceptamos para salir del asistente básico de configuración.
Nos solicita una contraseña que será la que usemos siempre que queramos entrar a modificar la configuración.
Aceptamos, nos indica que estamos en modo configuración y que podremos loguearnos sin cuentas LDAP, hasta que las configuremos y las validemos.
Así que pulsamos en “Configuration Editor”,
Introducimos la contraseña de configuración,
Y bienvenidos a la configuración, realmente es sencillo de navegar por el menú izquierdo y localizar las opciones que necesitemos. Tenemos varias vistas que ocultarán características Básicas, internedidas o nada.
Lo primero, si lo vamos a integrar con nuestro Directorio Activo, lo seleccionaremos en “LDAP Vendor Default Settings”.
Aceptamos el cambio,
Y en menú de configuración de LDAP, tendremos que crear una conexión contra nuestro Directorio Activo, indicaremos el o los servidores LDAP, conectaremos con LDAPS preferiblemente, pulsaremos en obtener el certificado desde el servidor. Después, configuraremos la cuenta llamada “LDAP Proxy User” que será la cuenta de usuario de nuestro AD que usará para cambiar y resetear contraseñas (así que debe ser un usuario con únicamente esa delegación), además indicaremos la (o las) base DN donde estarán nuestros usuarios. Y por último deberemos indicar una cuenta de pruebas para validar que podemos realizar dichos cambios.
Al pulsar en “Test LDAP Profile” nos validará la conexión.
Para no hacer cambios en el esquema del AD, necesitaremos un servidor de BD de MySQL o MariaDB donde PWM almacenará los atributos que necesite. Este MySQL puede correr en la misma máquina que Docker, en un contenedor o en una máquina dedicada. Con los siguientes comandos crearemos la base de datos, un usuario con una contraseña y le asignaremos permisos al usuario a dicha BD:
CREATE DATABASE pwm_db; CREATE USER 'pwd_user'@'%' IDENTIFIED BY 'XXXXXXXXXX'; GRANT ALL ON pwm_db.* TO 'pwd_user'@'%'; FLUSH PRIVILEGES;
Así que desde “Settings” > “Database (Remote)” > “Connection” deberemos conectarnos a ella.
Antes de ello, descargamos mysql-connector-java-8.0.28.zip de https://dev.mysql.com/downloads/connector/j/?os=26, lo descomprimiremos y en “Database Driver” subiremos el fichero JAR (en mi caso mysql-connector-java-8.0.28.jar). En “Database Class” indicamos: ‘com.mysql.jdbc.Driver’ y en “Database Connection String” ponemos: ‘jdbc:mysql://DIRECCION_IP_MYSQL:3306/pwm_db?useTimezone=true&serverTimezone=UTC’. Introducimos los credenciales de acceso en “User Name” y en “Password”.
Si pulsamos en “Test Database Connection” verificaremos el acceso correcto!
Así que en los Settings predeterminados ya le podremos indicar que usamos como almacenamiento una “Remote Database”.
Aceptamos los cambios,
Algo que deberemos configurar es qué usuarios son administradores de PWM.
Así como cuál será la URL del Sitio.
O la configuración del servicio de correo para el envío de mails de validación a los mails de los usuarios.
Y le damos a “Save” para guardar la configuración & “Aceptar”,
Si ha ido todo bien, podremos probar a loguearnos con la cuenta administrativa que hayamos indicado, siendo un usuario del Directorio Activo.
Perfecto, tras loguearnos veremos que unicamente tenemos el palen de Administración habilitado, y no se ven las funciones de usuario, esto es por que todavía seguimos en el modo de configuración. Pulsamos en Administración.
Nos llevará a este sitio donde podremos curiosear e investigar la actividad de los usuarios…
Total, que si pulsamos en “Configuration Manager”,
Introducimos la contraseña de acceso a la Configuración.
Y para poner en producción el sitio pulsaremos en “Restrict Configuration”.
Nos indica que tenemos que estar seguros de habernos validado con nuestro Directorio Activo para validarlo, “Aceptar”,
E inmediatamente el sitio se pone en producción, al estar logueados con un usuario de Directorio Activo, aunque seamos el administrador del Sitio PWM podremos ya cumplimentar las preguntas de seguridad.
Si vamos al menú principal este sería, a diferencia de un usuario normal que no vería el icono con las funciones administrativas.
Accediendo como un usuario normal de Directorio Activo,
Podemos loguearnos con un usuario normal del Active Directory para validar…
Nos solicitaría el cumplimiento de las respuestas a las preguntas de seguridad.
Nos indica que nos servirán a futuro si olvidamos nuestra contraseña.
Y un usuario tradicional es lo que vería por defecto. Insisto se pueden añadir funcionalidades para que actualice datos de su cuenta, pueda realizar busquedas de otros usuarios, configurar un OTP…
Qué pasa cuando se olvida una contraseña,
Si pulsamos en “Contraseña olvidada”,
Nos saldrá un asistente que solicitará que especifiquemos nuestro nombre de usuario.
Y obviamente, saldrán las preguntas que una vez cumplimentamos. Con ello el usuario podrá restablecerse su contraseña en caso de olvido. Además podemos requerir otros métodos de autenticación como un Token o una verificación por mail.
Habilitando nuevos registros de usuarios,
Veremos en los Módulos que tenemos distintas opciones que podremos ir habilitando en el portal público, o en el portal tras su autenticación. En este ejemplo sencillo vemos cómo habilitar “New User Registration”,
E indicamos en “Creation Context” la OU donde se almacenarán estas cuentas.
Pulsamos en SAVE para guardar la configuración.
Y lo validamos, vemos cómo ya tenemos un nuevo botón que podrían pulsar para registrar nuevos usuarios.
Habilitar OTP,
Veremos cómo habilitar un Token para usarlo como un segundo método de validación en alguna situación que nos interese. Ojo, por ahora PWM no permite requerirlo para hacer el logon de los usuarios, pero sí para cuando realiza algún cambio en su cuenta, peeero no para cambiarse la contraseña una vez logueado… ¿?
Habilitamos OTP y opcionalmente podremos forzarlo o no.
Verificamos que las claves de OTP se almacenarán en la base de datos y de manera cifrada. Grabamos los cambios.
Y veremos cuando nos logueemos con un usuario un icono nuevo para configurarse el Token,
Si pulsamos saldrá un asistente donde nos indicará dependiendo del dispositivo que usemos unas instrucciones, el usuario escaneará el código QR y finalizará el asistente validando el código.
Personalizando el tema,
No podiamos cerrar el post sin esto, pero por defecto PWM dispone de varios temas que son bastante más modernos que el interfaz clásico. Podremos seleccionar el que más nos guste y modificar manualmente el fichero CSS. Si bien es cierto que dispone un punto de menú para esta funcionalidad yo particularmente copio el CSS y la imagen de fondo cuando el contenedor arranca.
Nada, os dejo a modo ejemplo algunos pantallazos con el tema modificado, colores corporativos… esta sería la web de inicio.
Este sería el portal una vez el usuario se haya autenticado.
Respondiendo a las preguntas cuando se te olvida la contraseña….
Bueno, ¿listo? creo que para hacernos una idea nos puede servir, PWM es una herramienta que puede ayudarnos mucho cuando esta gestión es una pesadilla o lo dicho, requiere que le dediquemos un tiempo desde IT. Es bueno disponer de un portal para que nuestros usuarios, clientes o proveedores puedan gestionarse los credenciales de una manera independiente.
Ale, un abrazo a todos, gracias si habéis llegado hasta aquí, un arrumaco a todos los que movéis este tipo de contenido por redes sociales. Que vaya bien, ¡éxitos!