PAM: autenticación: pam_unix(dovecot:auth): error de autenticación;

PAM: autenticación: pam_unix(dovecot:auth): error de autenticación;

Tenemos opnldap configurado en nuestro servidor ubuntu y recibimos este mensaje para un usuario:

 auth: pam_unix(dovecot:account): account has expired (account expired)
Sep  3 19:05:03  auth: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=XXXX rhost=::1  user=XXXX

Cambié la contraseña con ldappasswd exitosamente, pero el error persiste. Investigando un poco, parece que ShadowLastChange no se actualiza.

¿Cómo podemos resolver esto?

/usr/share/slapd/slapd.conf

access to attrs=userPassword,shadowLastChange
        by dn="@ADMIN@" write
        by anonymous auth
        by self write
        by * none
access to dn.base="" by * read

# The admin dn has full write access, everyone else
# can read everything.
access to *
        by dn="@ADMIN@" write
        by * read

Bien, esto parece ser un problema de PAM.

Si edito /etc/nsswitch.conf a:

shadow: compat

No me sale el mensaje de que la cuenta ha caducado.

Si lo cambio a:

shadow: files ldap

Sí. Pero en cualquier caso, sigo recibiendo el error de palomar.

Respuesta1

IhacerOdio revivir una pregunta muerta, pero dado que este es el resultado de búsqueda principal para "ldap de falla de autenticación de dovecot pam", permítanme agregar este poco de conocimiento adicional:

Lo único que he visto en mis pruebas que actualiza los shadowAccountatributos es el passwdcomando cuando modificas la contraseña de un usuario en LDAP... A la mayoría de las otras herramientas no les importa mucho la shadowAccountclase y sus atributos, y ganaron. No los toques. Sin embargo, solo encuentro que shadowAccountes necesario agregar clases a los usuarios.si van a iniciar sesión en el host, desde esohacecuidado. Si solo estás haciendo algo como autenticación de correo electrónico (Dovecot), entonces no sirve de mucho. IpodríaEstar equivocado aquí, pero todavía no he visto nada más que un inicio de sesión de host. Consulte los shadowAccountatributos para cualquier cosa.

Ahora, si vas a autenticar a Dovecota través dePAM (que supongo que probablemente lo sea, ya que Dovecot lo está consultando y usted está cambiando nsswitch), tenga en cuenta que, si bien, PAM prestará atención a esos atributos adicionales, aún necesita las herramientas correctas para cambiarlos. ... lo que significa que cualquier cosa que cambie las contraseñas de los usuarios también debe pasar por PAM. Por impopular que sea la opinión, si no requiere inicios de sesión de host, solo servicios como Dovecot u otros, no hay necesidad de involucrar a PAM, ya que verificará muchas más cosas que probablemente serán irrelevantes. (En el mejor de los casos, podría imponer otras cosas como, sí, la caducidad de las contraseñas, pero personalmente no aplicaría ese tipo de cosas cuando el servicio al que inicia sesión tieneno hay disposición para cambiar una contraseñaasí) Probablemente sea más fácil a largo plazo hacer que los servicios de inicio de sesión que no sean host/shell verifiquen LDAP por sí mismos, permitiendo otras cosas como filtros de búsqueda.específico para ese servicio.

Sin embargoasumiendoHa configurado Dovecot para verificar LDAP en sí y no depender de PAM. Al final de Dovecot 10-auth.confhay una lista de !includelíneas para diferentes mecanismos de autenticación, como LDAP, SQL, etc. De forma predeterminada, el archivo auth-system.conf.extestá incluido.antesotros mecanismos, como LDAP. Lo que esto significa es que, dado que, en mis pruebas, Dovecot verifica estosen el orden en que se proporcionan, Dovecot primero intentará autenticar al usuario con PAM y luego, si eso falla, autenticar con LDAP. Ergo, recibirá un error de PAM que indica que sí, authentication failure(así como el primero que indicaquéfracaso es). Si cambió este orden para que se consulte primero el método con mayor probabilidad de éxito (LDAP, se podría suponer), entonces no habría necesidad de verificar con PAM y, por lo tanto, PAM no arrojaría ningún error.

Para solucionar esto tupodríacomente el !include auth-system.conf.ext, pero esto podría causar que los usuarios del sistema (como rooto postmaster) se consideren inexistentes si no los tiene configurados en LDAP.

Mi solución personal para este fue cortar esa línea y pegarla en elabajo, como esto:

#!include auth-deny.conf.ext
#!include auth-master.conf.ext

!include auth-ldap.conf.ext

#!include auth-sql.conf.ext
#!include auth-passwdfile.conf.ext
#!include auth-checkpassword.conf.ext
#!include auth-vpopmail.conf.ext
#!include auth-static.conf.ext

!include auth-system.conf.ext

Esto significa que Dovecotprimeroconsultar LDAP,entoncesConsulte a PAM si LDAP no dio resultados, según lo han demostrado mis pruebas.

Respuesta2

Realmente nunca antes respondí mi propia pregunta, pero quería compartirla en caso de que alguien más se encuentre con esto. Tenía que ver con saslauthd no instalado, configurado y en ejecución. Una vez que hice eso, el error desapareció.

información relacionada