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

PAM принимает любой текущий пароль при изменении пароля LDAP

У меня есть система Centos-7.6, использующая PAM для аутентификации пользователей LDAP. Мне удалось заставить пользователя LDAP изменить свой пароль, установив для shadowLastChange значение 0, поэтому его пароль должен быть изменен.

Но если я действую как этот пользователь или зарегистрируюсь в системе приветствия, он примет любой пароль на запрос «текущий (UNIX) пароль: приглашение». Конечно, это приглашение приходит после уже введя пароль пользователя, что естественно при использовании su или greeter.

Password: 
You are required to change your password immediately (root enforced)
need a new password
Changing password for test_user.
(current) UNIX password: <--------- anything you type here will be accepted
New password:

При использовании ssh test_user @ centos7server я все равно вынужден изменить пароль, но в этом случае пароль проверяется правильно, а неверные пароли не допускаются.

You are required to change your password immediately (root enforced)
need a new password
Last login: Tue Sep  3 15:42:36 2019
WARNING: Your password has expired.
You must change your password now and login again!
Changing password for user test_user.
Changing password for test_user.
(current) UNIX password: <---------- password is properly verified
passwd: Authentication token manipulation error

ПРИМЕЧАНИЕ: использование аналогичных настроек в системе Centos-6.10 не позволяет использовать неверный пароль, поэтому он работает правильно.

Вот моя установка /etc/pam.d на машине Centos-7:

/etc/pam.d/system-auth:

auth        required      pam_env.so
auth        required      pam_faildelay.so delay=2000000
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        sufficient    pam_ldap.so use_first_pass
auth        required      pam_deny.so

account     required      pam_access.so accessfile=/etc/security/access.netgroup.conf
account     required      pam_unix.so broken_shadow
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 1000 quiet
account     [default=bad success=ok user_unknown=ignore] pam_ldap.so
account     required      pam_permit.so

password    requisite     pam_pwquality.so try_first_pass retry=3 authtok_type=
password    sufficient    pam_unix.so sha512 shadow nis nullok try_first_pass use_authtok
password    sufficient    pam_ldap.so use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_ldap.so

/etc/pam.d/password-auth идентичен system-auth (см. выше)

/etc/pam.d/sshd:

auth     required pam_sepermit.so
auth       substack     password-auth
auth       include      postlogin
# Used with polkit to reauthorize users in remote sessions
-auth      optional     pam_reauthorize.so prepare
account    required     pam_nologin.so
account    include      password-auth
account required pam_access.so accessfile=/etc/security/access.netgroup.conf
password   include      password-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      password-auth
session    include      postlogin
# Used with polkit to reauthorize users in remote sessions
-session   optional     pam_reauthorize.so prepare

/etc/pam.d/login:

auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth       substack     system-auth
auth       include      postlogin
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
session    optional     pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      system-auth
session    include      postlogin
-session   optional     pam_ck_connector.so

/etc/pam.d/su:

auth     sufficient  pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth    sufficient  pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth    required pam_wheel.so use_uid
auth     substack system-auth
auth     include     postlogin
account     sufficient  pam_succeed_if.so uid = 0 use_uid quiet
account     include     system-auth
password include     system-auth
session     include     system-auth
session     include     postlogin
session     optional pam_xauth.so

Любая помощь будет принята с благодарностью. Спасибо