Блокировать аутентификацию RSA при истечении срока действия пароля

Я настраиваю сервер FreeIPA на CentOS 7 и хочу заблокировать аутентификацию RSA через SSH, когда срок действия пароля истек. По умолчанию, когда у меня истекает срок действия пароля пользователя, и они входят в систему, они вынуждены менять свой пароль. Но если тот же пользователь также использует аутентификацию RSA, сервер пропускает их и не заставляет их менять свой пароль. Я искал темы, связанные с FreeIPA, PAM и SSH, и не могу найти ответ, который ищу.

Есть ли способ заблокировать аутентификацию с ключом RSA через SSH, когда срок действия пароля пользователя истек?

5
задан 29 February 2016 в 00:35
3 ответа

Если вы зарегистрировали клиента в FreeIPA, его стек PAM будет настроен на использование демона SSSD. Рассматриваемый модуль PAM - pam_sss, который обращается к демону SSSD для выполнения проверки. SSSD знает об атрибутах IPA и должен правильно отклонять сеанс, когда пользователь заблокирован.

# ipa user-disable abbra
-----------------------------
Disabled user account "abbra"
-----------------------------
# grep UsePAM /etc/ssh/sshd_config
UsePAM yes
# journalctl -u sshd -f
 .....
Feb 29 17:21:23 a.example.com systemd[1]: Started OpenSSH server daemon.
Feb 29 17:21:33 a.example.com sshd[20209]: pam_sss(sshd:account): system info: [The user account is locked on the server]
Feb 29 17:21:33 a.example.com sshd[20209]: pam_sss(sshd:account): Access denied for user abbra: 6 (Permission denied)
Feb 29 17:21:33 a.example.com sshd[20209]: fatal: Access denied for user abbra by PAM account configuration [preauth]

Для активированного пользователя у вас будет что-то вроде:

# ipa user-enable abbra
----------------------------
Enabled user account "abbra"
----------------------------
# journalctl -u sshd -f
 ....
Feb 29 18:03:27 a.example.com sshd[22302]: Accepted publickey for abbra from X.Y.Z.W port 54540 ssh2: KEY...

Когда пароль помечен как просроченный (либо путем установки его другим пользователем, то есть администратором, либо применяя определенную политику паролей), SSSD игнорирует тот факт, что пароль требует изменения, потому что на этом этапе он выполняет только этап учетной записи, где пароли не проверяются.

Раньше было несколько запросов на добавление такой логики в В прошлом одним из аргументов против этого был тот факт, что если вы используете один тип аутентификации (открытый ключ), почему статус учетной записи должен основываться на состоянии другого типа аутентификации. В этом есть логика, но, возможно, было бы хорошо добавить политику паролей, которая позволяет логике связывать состояние учетной записи с состоянием пароля.

Если вы заинтересованы в такой политике паролей, я бы рекомендовал открыть билет на FreeIPA, чтобы запросить его,с объяснением вашего варианта использования.

1
ответ дан 3 December 2019 в 02:02

Prawdopodobnie mógłbyś stworzyć skrypt używając chage lub usermod, np: usermod --expiredate ... Gdybym musiał, użyłbym skryptu powłoki podobnego do następującego pseudokodu:

if `chage -l user_account_you_want_expired_etc | awk '/expires/{print "relevant fields}'` >= expiration
then
usermod -s /sbin/nologin USERNAME
fi

Coś w tym kierunku (pamiętajcie, że nie działa, ale coś, co da wam strukturę. "Jeśli wygaśnięcie (grep z awk) jest większe lub równe temu, co chcę / potrzebuję, to zmień powłokę do nologin. "

0
ответ дан 3 December 2019 в 02:02

Jeśli używasz PAM do tworzenia sesji dla swoich użytkowników ( usePAM tak ), nie pozwoli to użytkownikowi logować się z wygasłym hasłem.

To fajnie opisane na Unix (ok, jest to odwrócony problem, ale może być pomocny).

0
ответ дан 3 December 2019 в 02:02

Теги

Похожие вопросы