PAM: auth: pam_unix(dovecot:auth): falha de autenticação;

PAM: auth: pam_unix(dovecot:auth): falha de autenticação;

Temos a configuração do opnldap em nosso servidor Ubuntu e recebemos esta mensagem para um usuário:

 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

Alterei a senha com ldappasswd com sucesso, mas o erro persiste. Fazendo algumas pesquisas, parece que shadowLastChange não está sendo atualizado.

Como podemos resolver isso?

/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

OK - este parece ser um problema do PAM.

Se eu editar /etc/nsswitch.conf para:

shadow: compat

Não recebo a mensagem de que a conta expirou.

Se eu mudar para:

shadow: files ldap

Eu faço. Mas em ambos os casos, ainda recebo o erro dovecot.

Responder1

EUfazerodeio reviver uma pergunta morta, mas como este é o principal resultado da pesquisa para "falha de autenticação dovecot pam ldap", deixe-me adicionar este conhecimento extra:

A única coisa que vi em meus testes que atualiza os shadowAccountatributos é o passwdcomando quando você modifica a senha de um usuário no LDAP... A maioria das outras ferramentas não se importa muito com a shadowAccountclasse e seus atributos, e ganhou não toque neles. No entanto, só acho que as shadowAccountclasses precisam ser adicionadas aos usuáriosse eles vão fazer login no host, desde quefazCuidado. Se você está apenas fazendo algo como autenticação de e-mail (Dovecot), então não adianta muito. EUpoderiaesteja errado aqui, mas ainda não vi nada além de um login de host consultar os shadowAccountatributos para qualquer coisa.

Agora, se você estiver autenticando o DovecotatravésPAM (o que, presumo que você provavelmente esteja, já que o Dovecot está consultando e você está alterando nsswitch), então tenha em mente que, embora sim, o PAM prestará atenção a esses atributos extras, você ainda precisará das ferramentas corretas para alterá-los ... o que significa que tudo o que está alterando as senhas dos usuários também precisa passar pelo PAM. Por mais impopular que seja, se você não está exigindo logins de host, apenas serviços como Dovecot ou outros, não há necessidade de envolver o PAM, pois ele verificará muito mais coisas que provavelmente serão irrelevantes. (Na melhor das hipóteses, poderia impor outras coisas como, sim, expirações de senha, mas pessoalmente eu não imporia coisas assim quando o serviço no qual você faz login tivernenhuma provisão para alterar uma senhaassim) É provavelmente mais fácil, a longo prazo, fazer com que serviços de login não-host/shell verifiquem o LDAP por conta própria, permitindo outras coisas, como filtros de pesquisaespecífico para esse serviço.

No entantoassumindovocê configurou o Dovecot para verificar o próprio LDAP e não depender do PAM. No final do Dovecot 10-auth.confhá uma lista de linhas para diferentes mecanismos de !includeautenticação, como LDAP, SQL, etc.auth-system.conf.extantesoutros mecanismos, como LDAP. O que isto significa é que, uma vez que, nos meus testes, o Dovecot verifica estesna ordem em que são fornecidos, o Dovecot primeiro tentará autenticar o usuário com PAM e, se isso falhar, autenticará com LDAP. Portanto, você receberá um erro PAM informando, sim, o authentication failure(assim como o primeiro indicandoo quefalha é). Se você alterasse essa ordem para que o método com maior probabilidade de sucesso (LDAP, seria de se supor) fosse consultado primeiro, não haveria necessidade de verificar com o PAM e, portanto, nenhum erro gerado pelo PAM.

Para resolver isso vocêpoderiacomente o !include auth-system.conf.ext, mas isso pode potencialmente fazer com que os usuários do sistema (como rootou postmaster) sejam considerados inexistentes se você não os tiver configurado no LDAP.

Minha solução pessoal para este foi recortar essa linha e colá-la nofundo, assim:

#!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

Isto significa que o Dovecot iráprimeiroconsulte LDAP,entãoconsulte o PAM se o LDAP não der resultados, até onde meus testes mostraram.

Responder2

Nunca respondi minha própria pergunta antes, mas gostaria de compartilhar caso alguém mais se depare com isso. Tinha a ver com o saslauthd não instalado, configurado e em execução. Depois que fiz isso, o erro desapareceu.

informação relacionada