Configuración PWM

Verificación de la wbapp

Cuando logramos lanzar por primera vez la webapp pwm: http://varela.interior.edu.uy:8080/, nos da una pantalla con una guía de configuración. (Si da un error de sesión, hay que salir del navegador y volver a ingresar).

Para configurar la app correctamente, conviene que tenga un usuario de acceso propio, con amplios derechos de administración, pero que se podrán afinar. Vamos a darle esos derechos a esa cuenta por pertenecer a un grupo "admins".

Configuración de módulos de grupos

Como documentado en Permisos_y_Grupo_en_Openldap, debemos habilitar el módulo memberof.

Creación de usuario para pwm

Creemos primero u una cuenta en el servidor LDAP para el software PWM, diferente de la cuenta genérica de creación "admin".

Creamops un archivo: pwm.ldif:

dn: cn=pwm,ou=recursos,dc=udelar,dc=edu,dc=uy
objectClass: organisationalRole
objectClass: simpleSecurtyObject
cn: pwm
description: cuenta acceso PWM
userPassword: *********

Lo ingresamos:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f pwm.ldif

También podemos empezar a crear las entradas del anuario a través de la interfaz ApacheDS.

Es así que creamos:
  • un organizationalRole de DN: cn=pwm,ou=recursos,dc=udelar,dc=edu,dc=uy
  • un grupo de DN: cn=superadmins,ou=grupos,dc=udelar,dc=edu,dc=uy

Configuración de los derechos del primer grupo de administración

Como documentado en Permisos_y_Grupo_en_Openldap, debemos habilitar el módulo memberof.

De los ACL experimentados en Curie, vamos a empezar por el último:

La 23 es para dar acceso total sobre todo el arbol al usuario admin y los administradores, que los anónimos no puedan ver nada, y los demas leer.

olcAccess: {23}to * by dn="cn=admin,dc=udelar,dc=edu,dc=uy" write 
 by group.exact="cn=admins,ou=gruposdc=udelar,dc=edu,dc=uy" write
  by anonymous none by * read


que re-escribimos:
dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: to *
  by dn="cn=admin,dc=udelar,dc=edu,dc=uy" write
  by group.exact="cn=superadmins,ou=grupos,dc=udelar,dc=edu,dc=uy" write
  by self write
  by * read
  • Seleccionamos el template de OpenLDAP
  • Conexión: hostname ldap.interior.edu.uy, prot 636, Secure SSL *

Configuración de correo

El pwm requere un servidor smtp para mandar sus correos.

Configuramos el exim que viene instalado en la debian:

dpkg-reconfigure exim4-config

Elejimos un servidor internet que envía en smtp
Le damos su propio fqdn como dominio de correo: varela.interior.edu.uy
Agregamos que también reciba correos para el dominio: identidad.interior.edu.uy

En la configuración del PWM por la gui web, en el menú "setting", entrada "email", configuramos el servidor smtp como: localhost

Configuración del autoregistro

Configuramos la política de contraseñas (PWM por la gui web, en el menú "setting", entrada "Password Policy").
Conviene activart View -> Advanced settings, y entonces el primer parámetro: Password Policy Source (Advanced) debe ser configurado al valor "Local".

Convendría investigar a qué corresponde la password policy del LDAP en sí. No está mal que el mismo OpenLDAP tenga su política de contraseñas, no sólo el PWM: #4576

Activamos el Módulo (GUI PWM: Modules -> New User Registration), de paso pegamos bien las condiciones de uso del servicio.

Activando View->Advanced Settings, luego llendo a Modules->User registration conviene:
  • suprimir todo del campo Random Username Characters
    Poner 0 en Random Username Length.

De lo contrario PWM genera como para el DN un cn en forma de clave generada. COn esa configuración, el LDAP es menos legible por interfaces como ApacheDS.

Hacemos diversas configuraciones al PWM, que sería demasiado largo detallar acá.

Podemos exportar y recuperar los PwmCOnfiguration.xml, los archivamos en bourdieu:/compartido/red/servidores/varela

Recupero varias configuraciones y traducciones desde ese archivo.

En la cuenta google , manejada con el contacto , generamos una clave pública y privada para los reCAPTCHA del pwm, que ingresamos en config -> settings -> security

estamos por acá de la instalación de producción, tarea #4526, hija de #4525.

Configuraciones varias a partir de Octubre (2015)

En esta sección se retoma gran parte de la configuración aplicada en Curie

Dentro del menú settings

UserInterface: El tema del sitio estaba ESTABA en Sterile ahora esta en Autumn
Password: en Minimum Numeric estaba en 1, le pusimos 2 como en Curie
Challengue Policy:
  • Minimum Random Required: 2
  • Minimum Random Challenges Required During Setup: 2
  • Show Response Confirmation: Habilitado
  • Apply Wordlist: Habilitado
  • Minimum Helpdesk Random Challenges Required During Setup: 2
Email: se verifica que todos los mensajes se puedan ver español
Security: habilitamos Require HTTPS. Require HTTPS (instead of cleartext HTTP) traffic to the application server. While non-secure connections are useful during testing, production servers should always have this setting set to true. (Da problemas)
  • Dejamos show details Error messages: Enabled para ver todos los errores
En Integration / Developer: para futuros desarrollos
  • Enable External Web Services
  • Allow WebServices Read Answers

Vamos ahora a Modules

Change Password:
  • Require Current Password during change: Dejamos la opción en False (cambio respecto a Curie)
Forgotten Password:
  • Token Send Method: Dejamos por defecto las opciones
  • Forgotten Password Success Action: Dejamos por defecto las opciones
  • Forgotten Password User Search Filter: Como el Forgotten Password User Search Form va a ser solo el cn, tenemos que cambiarlo
    De (&(objectClass=person)(mail=%mail%)(sn=%sn%))
    A (&(objectClass=person)(cn=%cn%))
User Activation
  • Token Send Method: Both send token to both email and SMS
Helpdesk
  • Set Password UI Mode: Allow gnererate a list of random password... (Ojo en Curie tenemos send a Random password to the user, hay que ver que es mejor)

Doc pre-existente puesta en prod:

Gran parte de la configuración se realizó a través de la pantalla de administración de PWM, aunque también hubo que modificar parte del código fuente (al menos de manera provisoria)

El archivo de configuración de PWM se encuentra en /var/lib/tomcat6/webapps/pwm/WEB-INF/PWMConfiguration.xml

-Para el autoaprovisionamiento de contraseñas, se utiliza como servidor SMTP, un postfix instalado de forma local.
!-Se crearon las planillas para los distintos mensajes que son enviados al usuario por correo electrónico.

- Los nuevos usuarios son creados en ou=gente,dc=interior,dc=udelar,dc=edu,dc=uy
- Los campos requeridos por ahora son :
*Usuario (cn)
*Correo Electrónico (mail)
*Nombre (givenName)
*Apellido (sn)
*Contraseña

En una segunda etapa de configuración, se hicieron más cambios al código fuente, ver Mejoras y adaptaciones del código de PWM a la Udelar.

ReCaptcha

Para aumentar la seguridad se utiliza reCaptcha antes de realizar cualquier acción.
Si bien es fácilmente configurable desde la pantalla de administración (Settings >> Security), al solicitar el captcha este no se mostraba porque era bloqueado por el explorador.

Esto se debe a que el sitio esta en HTTPS seteado a nivel del servidor web y no del servidor de aplicaciones y PWM determina con una función Java que protocolo se está utilizando.
Por lo tanto se modificó el código para forzar a que utilice HTTPS para reCaptcha (al menos de manera provisoria) editando /var/lib/tomcat6/webapps/pwm/WEB-INF/jsp/captcha.jsp y cambiando

<% final String reCaptchaProtocol = request.isSecure() ? "https" : "http"; %>

por

<% final String reCaptchaProtocol = "https"; %>

Igualmente habría que evaluar setear HTTPS en el servidor de aplicaciones (Link: http://www.serveradventures.com/the-adventures/installing-pwm-open-source-password-self-service-for-ldap )

Contraseñas

En la configuración de PWM se especifica quien se encarga de fijar la política de contraseñas pudiéndose elegir entre LDAP, PWM o ambas (aplicando la política mas restrictiva), el el mismo apartado de configuración("The capability to read policy from LDAP is only available with some LDAP implementations.") y por comentarios en varios foros PWM no siempre es capaz de interpretar la política de PWM.

En esta implementación esto se pudo comprobar al incluir valores numéricos en la contraseña ya que aunque se especificaran como requeridos se aplicaba la política mas restrictiva y a la hora de ingresar la contraseña no se permitían.
Por lo tanto se configuró para que PWM establezca la política para se puedan ingresar valores numéricos.

Para resetear una contraseña el usuario debe indicar nombre de usuario, contraseña y esto se valida en LDAP con la consulta:

(&(objectClass=person)(mail=%mail%)(cn=%cn%))

Luego responder a 2 preguntas aleatorias de las que respondió al registrarse. Esto le envía un token a su correo electrónico que debe ingresar para poder cambiar su contraseña.

Sigue con la gestión de Permisos y Grupo en Openldap.