13 votos

OpenLDAP, Samba y contraseña

Estoy configurando un sistema en el que todos los recursos están disponibles a través de un único usuario-contraseña, el acceso a la shell en los servidores, registro de dominio Samba, WiFi, OpenVPN, Mantis, etc. (con el acceso a determinados servicios se rigen por la pertenencia de grupo o de usuario campos de objeto). Porque tenemos datos de carácter personal en nuestra red, debemos implementar el envejecimiento de la contraseña, como por la UE de la Directiva de Protección de Datos (o más bien la versión en polaco de ella).

El problema es que Samba y POSIX cuentas de LDAP para utilizar diferentes contraseñas hash y el envejecimiento de la información. Mientras que la sincronización de las contraseñas sí es fácil ( ldap password sync = Yes en smb.conf), la adición de la contraseña de envejecimiento a la mezcla de las cosas de saltos: Samba no actualización de shadowLastChange. Junto con obey pam restrictions = Yes crea un sistema en el que un usuario de windows no puede cambiar de edad contraseña, pero si no la uso, directorios de inicio no se crean automáticamente. La alternativa es usar LDAP operación extendida para cambiar la contraseña, pero el smbk5pwd módulo no definirla. Lo que es peor, el OpenLDAP mantenedor de no actualizar/aceptar parches como este campo es considerado obsoleto.

Entonces, mi pregunta es, ¿cuál es la mejor solución? ¿Cuáles son los inconvenientes de ellos?

  1. El uso de LDAP ppolicy y LDAP interno de vencimiento de la contraseña?

    1. ¿Qué tan bien funciona con NSS, los módulos PAM, samba, otros sistemas?
    2. Hacer el NSS y PAM módulos deben ser configurados de manera especial el uso de ppolicy, no a la sombra?
    3. ¿ GOsa2 trabajo con ppolicy?
    4. Hay otras herramientas administrativas que se pueden trabajar con ppolicy-habilitado LDAP?
  2. Hackear un cambio de contraseña script que actualiza el campo en el LDAP. (dejando la posibilidad de que el mismo usuario se actualizará el campo sin cambiar contraseña)

1voto

Hubert Kario Puntos 4508

Como stop-gap he creado el script para la Samba que la actualización de la shadowLastChange de cambio de contraseña:

#!/bin/sh
# script to update shadowLastChange when samba updates passwords
# it's not needed when using 'passwd', it does update the field,
# even if pam_ldap is using LDAP Extented Operation to change password

LDAP_MODIFY="/usr/bin/ldapmodify"
LDAP_SEARCH="/usr/bin/ldapsearch"
LDAP_USER="uid=shadow-update,ou=Services,dc=example,dc=com"
LDAP_PASSWORD="change-me"
LDAP_HOST="localhost"

# get date
SLC=$((`date '+%s'` / 24 / 3600))

# get user login name
user=$1

# find user's DN
dn=$($LDAP_SEARCH -x -h $LDAP_HOST -LLL -b dc=example,dc=com "(uid=$user)" dn)
dn=${dn#dn:}

# check if DN is not base64 encoded
if [ "${dn:0:1}" = ":" ]; then
        # update password change date
        echo "dn:$dn
changetype: modify
replace: shadowLastChange
shadowLastChange: $SLC" | cat | $LDAP_MODIFY -x -h "$LDAP_HOST" \
 -D "$LDAP_USER" -w "$LDAP_PASSWORD" > /dev/null 2>&1
else
        # update password change date
        echo "dn: $dn
changetype: modify
replace: shadowLastChange
shadowLastChange: $SLC" | cat | $LDAP_MODIFY -x -h "$LDAP_HOST" \
 -D "$LDAP_USER" -w "$LDAP_PASSWORD" > /dev/null 2>&1
fi

err=$?

if [ ! $err -eq 0 ]; then
   echo "error: can't update shadowLastChange: $err"
   echo "`date`: shadow.sh: can't update shadowLastChange: $err"\
       >> /var/log/shadow-update.log
   exit;
fi

echo OK

En config Samba necesita unix password sync conjunto a yes, passwd chat conjunto a *OK* y passwd program a la secuencia de comandos anterior con "%u" como param.

Una cuenta especificada en LDAP_USER debe ser creado en LDAP y dar permisos para leer en uid de todos los usuarios Samba y el derecho a escribir shadowLastChange.

1voto

200_success Puntos 3240

Yo escribí mi propio OpenLDAP superposición de llamada shadowlastchange a actualizar la shadowLastChange atributo siempre un EXOP de cambio de contraseña se produce. Se activa en slapd.conf:

moduleload smbk5pwd
moduleload shadowlastchange
...

database bdb
...
overlay smbk5pwd
overlay shadowlastchange

He configurado smb.conf a cambio de contraseñas a través de EXOP:

ldap passwd sync = Only

Luego, para cada cuenta, establezca shadowMax el número de días de validez de la contraseña. El OpenLDAP módulos encargamos del resto!

1voto

Hubert Kario Puntos 4508

(trabajo en progreso, voy a añadir detalles más adelante)

Buenas noticias a todo el mundo! Tengo toda la cosa de trabajo, más o menos..., en un entorno de pruebas...:

  1. La política de contraseña (tanto en calidad y tiempo-sabio) es aplicado en OpenLDAP nivel (gracias a la ppolicy, not24get y passwdqc)
  2. Las contraseñas están sincronizados entre Samba y POSIX en ambos sentidos (gracias a la smbk5pwd). Nota: la comprobación de la Calidad con la Samba y ppolicy no es obvia: el password check script (pwqcheck -1 de passwdqc) de las necesidades para realizar las mismas comprobaciones de LDAP ¿o el usuario obtendrá un Permiso Denegado en lugar de "Demasiado fácil contraseña, pruebe diferente".
  3. Ambos PAM y Samba advertir al usuario que la contraseña va a caducar en breve.
  4. Los directorios de usuario son creados usando pam_mkhomedir
  5. GOsa2 implementación de RFC2307bis (y esquema asociado) inserta uid a entradas de grupo, por lo que las aplicaciones esperando sea de NIS (la mayoría de los "UNIXy cosas") o RFC2307bis esquema (la mayoría de los "diseñado para AD" aplicaciones) funciona muy bien.

El único problema es que la desactivación de una cuenta requiere el uso de herramientas de línea de comandos (o escribiendo GOsa postmodify script) o la cuenta no puede ser bloqueado en LDAP nivel, sólo para PAM y Samba. La caducidad de la contraseña se seguirán aplicando, así que no es un gran problema.

0voto

Hubert Kario Puntos 4508

Tengo respuesta de uno de los desarrolladores de GOsa. En este momento GOsa no admite ppolicy recubierto de ninguna manera.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X