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 enRandom 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 informatica.udelar@gmail.com, manejada con el contacto informatica@cci.edu.uy, 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 AutumnPassword: 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
Security:
- Dejamos show details Error messages: Enabled para ver todos los errores
- 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)
- 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%))
- Token Send Method: Both send token to both email and SMS
- 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.