PAM: auth: pam_unix(dovecot:auth): ошибка аутентификации;

PAM: auth: pam_unix(dovecot:auth): ошибка аутентификации;

У нас на сервере Ubuntu настроен opnldap, и мы получаем следующее сообщение для пользователя:

 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

Я успешно сменил пароль с помощью ldappasswd, но ошибка все еще сохраняется. Проведя некоторые исследования, выяснилось, что shadowLastChange не обновляется.

Как мы можем решить эту проблему?

/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

Хорошо, похоже, это проблема PAM.

Если я отредактирую /etc/nsswitch.conf следующим образом:

shadow: compat

Я не получаю сообщение о том, что срок действия учетной записи истек.

Если я изменю это на:

shadow: files ldap

Да. Но в любом случае я все равно получаю ошибку голубятни.

решение1

яделатьНе хотелось бы поднимать мертвый вопрос, но, учитывая, что это один из лучших результатов поиска по запросу «dovecot pam authentication failure ldap», позвольте мне добавить немного дополнительных знаний:

Единственное, что я видел в своем тестировании, что обновляет shadowAccountатрибуты, это passwdкоманда, когда вы изменяете пароль для пользователя в LDAP... Большинство других инструментов не слишком заботятся о классе и его атрибутах и ​​не будут их трогать. Однако я обнаружил, что классы нужно добавлять shadowAccountтолько к пользователямshadowAccountесли они собираются входить в хост, с тех порделаетзабота. Если вы просто делаете что-то вроде аутентификации электронной почты (Dovecot), то это не очень полезно. Ямогздесь я ошибаюсь, но я пока не видел ничего, кроме как при входе в систему хоста обращались бы к shadowAccountатрибутам.

Теперь, если вы используете Dovecot для аутентификациичерезPAM (который, как я предполагаю, вы, вероятно, и делаете, поскольку Dovecot запрашивает его, и вы меняете nsswitch), то, пожалуйста, имейте в виду, что хотя, да, PAM будет обращать внимание на эти дополнительные атрибуты, вам все равно нужны правильные инструменты для их изменения... то есть все, что меняет пароли пользователей, также должно проходить через PAM. Непопулярное мнение, как это может быть, если вы не требуете входов на хост, а только такие службы, как Dovecot или другие, нет необходимости вовлекать PAM, поскольку он будет проверять гораздо больше вещей, которые, скорее всего, будут неактуальны. (В лучшем случае он может обеспечить соблюдение других вещей, таких как, да, истечение срока действия пароля, но лично я бы не стал обеспечивать соблюдение таких вещей, когда служба, в которую вы входите, имеетнет возможности изменить пароль(вроде этого) В долгосрочной перспективе, вероятно, будет проще, если службы входа, не являющиеся хостами/оболочками, будут сами проверять LDAP, что позволит использовать другие функции, например фильтры поиска.специфичные для данной услуги.

Однакопредполагаявы настроили Dovecot для проверки самого LDAP, а не для использования PAM, в конце Dovecot 10-auth.confнаходится список !includeстрок для различных механизмов аутентификации, таких как LDAP, SQL и т. д. По умолчанию файл auth-system.conf.extвключендодругие механизмы, такие как LDAP. Это означает, что, поскольку в моем тестировании Dovecot проверяет этив том порядке, в котором они предоставлены, Dovecot сначала попытается аутентифицировать пользователя с помощью PAM, а затем, если это не удастся, аутентифицировать с помощью LDAP. Следовательно, вы получите ошибку PAM, сообщающую, что да, authentication failure(а также первую, указывающуючтоЕсли бы вы изменили этот порядок так, чтобы метод, который, скорее всего, будет успешным (можно предположить, LDAP), запрашивался первым, то не было бы необходимости проверять PAM, и, следовательно, не было бы никакой ошибки, выдаваемой PAM.

Чтобы решить эту проблему, ваммогзакомментируйте !include auth-system.conf.ext, но это может привести к тому, что системные пользователи (например, rootили postmaster) будут считаться несуществующими, если они не настроены в LDAP.

Мое личное решение этой проблемы состояло в том, чтобы вырезать эту строку и вставить ее в конец.нижний, так:

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

Это означает, что Dovecot будетпервыйпроконсультируйтесь с LDAP,затемЕсли, как показало мое тестирование, LDAP не дал результатов, обратитесь к PAM.

решение2

Никогда раньше не отвечал на свой собственный вопрос, но я хотел поделиться, если кто-то еще с этим столкнется. Это было связано с тем, что saslauthd не был установлен, настроен и запущен. Как только я это сделал, ошибка исчезла.

Связанный контент