[devel] Не локальный вариант настроек PAM (/etc/pam.d/system-auth)

Evgeny Sinelnikov sin на altlinux.ru
Пт Апр 28 00:31:10 MSK 2017


Здравствуйте,

Смена стандартных настроек PAM может достаточно болезненно может
сказаться в самый неподходящий момент. Но для сложных инфраструктур
эта проблема назрела.

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

Во-вторых, при попытке смены пароля у нас возникают повторные попытки
ввести пароль, что вообще странно и нелогично.

В-третьих, у нас накладываются локальные ограничения на политику
сложности паролей для глобальных пользователей, что приводит к тому,
что, вроде бы, сложность на уровне Samba/Winbind, Samba/SSSD,
FreeIPA/SSSD снижена, а, фактически, на клиентах это снижение
сложности не отрабатывает.

В связи с первым и вторым у нас не предусмотрены многие детали
связанные с особенностями реализации смены пароля графической утилитой
userpasswd.

Ещё один не вполне логичный момент - это условие uid >= 500 для любых
глобальных пользователей. Я думаю, что это момент стоит сделать
настраиваемым с помощью control. Думаю, что тут должно быть три вида
политики:
- текущая (остаётся, по умолчанию) uid >= 500;
- облегчённая uid > 0 (все, кроме рута);
- простая (без ограничений на uid);
- расширенная uid >= 10000 (при которой для локальных uid'ов выделен
диапазон от 500 до, к примеру, 10000. И этот диапазон согласован с
настройками, по умолчанию для мапинга глобальных пользователей в
службах Winbind, SSSD или записях в LDAP).

Ну, и ещё один момент - это парные настройки вида:
$ ls -1 /etc/pam.d/system-auth*use_first_pass*
/etc/pam.d/system-auth-use_first_pass
/etc/pam.d/system-auth-use_first_pass-krb5
/etc/pam.d/system-auth-use_first_pass-krb5_ccreds
/etc/pam.d/system-auth-use_first_pass-ldap
/etc/pam.d/system-auth-use_first_pass-local
/etc/pam.d/system-auth-use_first_pass-multi
/etc/pam.d/system-auth-use_first_pass-pkcs11
/etc/pam.d/system-auth-use_first_pass-sss
/etc/pam.d/system-auth-use_first_pass-winbind
Честно говоря, меня они путают - я не понимаю: "На каком этапе они
используются?"

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

Для этого я предлагаю проверить тестовую сборку (надеюсь она собирётся
- в любом случае номера "тасков" сохраняться):
#182276 AWAITING #1 p8 pam-config.git=1.8.0-alt1 sssd.git=1.15.2-alt3%ubt
#182275 BUILDING #1 [locked] sisyphus pam-config.git=1.8.0-alt1
sssd.git=1.15.2-alt3%ubt

Там же, я предлагаю убрать прибитые гвоздями настройки ccache для
krb5. Это нужно выносить отдельно - а использоваться должен тот
credential cache, который задан по умолчанию. А то в общесистемных
настройках одно, а в PAM - другое.


-- 
Sin (Sinelnikov Evgeny)


Подробная информация о списке рассылки Devel