Назад | Перейти на главную страницу

Как заставить пользователей обновлять пароль с истекшим сроком действия (ppolicy), когда они входят в систему с ключами SSH?

Сервер OpenLDAP - это Ubuntu 18.04 с пакетом slapd версии 2.4.45 + dfsg-1ubuntu1.4.

Клиент - Ubuntu 18.04, использующий sssd 1.16.1-1ubuntu1.4 с бэкэндом LDAP.

я не использование открытых ключей SSH в LDAP; они просто находятся в файле authorized_keys на клиенте.

Я столкнулся с проблемой, из-за которой я не могу принудительно обновить пароль, если пользователь входит в систему с открытым ключом и обходит проверку пароля. Мне бы очень хотелось, чтобы PAM проверял с помощью SSSD / LDAP истекший пароль или для атрибута pwdReset, установленного на TRUE, и предлагал пользователю сбросить свой пароль. я не пытаюсь заблокировать учетные записи. Это не способ отключить учетные записи через определенное время. Пароль с истекшим сроком действия должен быть просто напоминанием о том, что им нужно установить новый пароль в соответствии с политикой паролей (я не придумал политику, не ненавидьте меня). Они должны установить новый пароль и продолжить свою работу.

В настоящее время, когда пользователи входят в систему с паролем и срок их действия истек (когда это происходит, используется maxPwdAge ppolicy), они получают стандартное приглашение UNIX passwd, и если они не меняют свой пароль, они загружаются из системы. Я бы хотел, чтобы такое поведение происходило и при входе в систему с открытыми ключами SSH.

Я понимаю, что когда они входят в систему с помощью ключа, они не привязываются к LDAP, их пароль не проверяется. Как лучше всего это сделать, используя стандартные PAM или SSSD или любые другие функции?

Я прочитал несколько веток, в которых обсуждались похожие проблемы; в 2013 году Брэд пытался выполнить аналогичную задачу http://www.openldap.org/lists/openldap-technical/201311/msg00237.html & https://lists.fedorahosted.org/archives/list/sssd-devel@lists.fedorahosted.org/thread/LGQSLF4ZJ2EWR7HJ2ZTMO53TXXLQ2KP2/ но встретил сопротивление и токсичность со стороны разработчиков с обеих сторон. Реализована ли эта функция с тех пор? Любая помощь приветствуется.

sssd.conf:

[domain/default]

enumerate = False
cache_credentials = True
ldap_search_base = dc=example,dc=org
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldap://ldap.example.org
ldap_tls_cacert = /etc/ssl/certs/ca-certificates.crt
ldap_id_use_start_tls = True
ldap_tls_reqcert = demand

[sssd]

services = nss, pam
config_file_version = 2
domains = default

[nss]

[pam]

[sudo]

[autofs]

[ssh]

[pac]

nsswitch.conf:

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat systemd sss
group:          compat systemd sss
shadow:         compat sss
gshadow:        files

hosts:          files dns
networks:       files

protocols:      db files
services:       db files sss
ethers:         db files
rpc:            db files

netgroup:       nis sss
sudoers:        files sss