pam_tcb(8)
| PAM_TCB(8) | System Manager's Manual | PAM_TCB(8) |
Название
pam_tcb - реализующий поддержку схемы управления теневыми паролями tcb для всех групп управления, определённых в PAM: authentication, account, session, и password management.
Описание
pam_tcb - это модуль PAM, предназначенный для работы с Unix-аккаунтами и поддерживающий все определённые в PAM группы управления (PAM management groups): authentication, account management, session management, и password management. pam_tcb является заменителем использующихся в традиционной для Unix схеме модулей pam_unix и pam_pwdb.
- authentication
- Модуль pam_tcb использует только функции getpwnam(3) и getspnam(3) для получения информации, необходимой для аутентификации пользователей. Для хеширования паролей используется функция crypt_ra(3) либо crypt(3). Это значит, в частности, что модуль pam_tcb использует NSS и поддерживает все методы хеширования, поддерживаемые системными библиотеками (такими как libcrypt).
- account management
- Если информация об аккаунте доступна с помощью getspnam(3), подсистема pam_tcb, реализующая account management, проверяет срок действия пароля и аккаунта. При этом используются поля теневой записи, подробно описанной в shadow(5). Приложения, использующие PAM, должны соответствующим образом обрабатывать код возврата и, возможно, использовать password management group для смены истекшего пароля.
- session management
- По умолчанию, pam_tcb протоколирует открытие и закрытие сессий PAM с помощью syslog(3). В качестве syslog facility используется LOG_AUTH и, если не указан параметр noopenlog, в качестве ident используется "pam_tcb". Эту функциональность можно отключить с помощью параметра nolog (см. ниже).
- password management
- pam_chauthtok(3)
выполняется
в две
стадии при
обработке
стека password management:
PAM_PRELIM_CHECK и PAM_UPDATE_AUTHTOK.
Во время
стадии PAM_PRELIM_CHECK,
модуль pam_tcb
может, в
зависимости
от
параметров,
запросить
пароль, и
всегда
проверяет
старый
пароль. Это
позволяет
использовать
в стеке password management
модуль
контроля и
обеспечения
качества
паролей
типа pam_passwdqc до
pam_tcb,
избавляя
такой
модуль от
необходимости
выполнения
задач,
возлагаемых
на pam_tcb.
Собственно
смена
пароля
происходит
во время
стадии
PAM_UPDATE_AUTHTOK.
Во время смены пароля модуль pam_tcb может вносить изменения в следующие базы паролей:
файл /etc/passwd, см. passwd(5);
файл /etc/shadow см. shadow(5);
структура, расположенная в /etc/tcb/ см. tcb(5);
NIS и NIS+.
Параметры
Большинство параметров, использующихся в модулях pam_unix и pam_pwdb, используются в модуле pam_tcb и имеют тот же смысл. Впрочем, есть некоторые семантические различия, описанные ниже. Все логические параметры по умолчанию выключены. Значения по умолчанию для остальных параметров приведены ниже.
- debug
- Выводить отладочную информацию при помощи syslog(3).
- audit
- Выводить более детальную отладочную информацию, включая неизвестные имена пользователей. Есть риск того, что таким образом в лог попадут пароли, введённые по ошибке пользователями вместо имён.
- noopenlog
- В обычной ситуации модуль pam_tcb вызывает openlog(3) с аргументом ident "pam_tcb" до протоколирования и closelog(3) после. Параметр noopenlog выключает этот механизм.
- nolog
- Выключить протоколирование.
- blank_nolog
- Не протоколировать неудачные попытки аутентификации в случае, если введён пустой пароль. Если этот параметр не используется, некоторые приложения, например, sshd(8), могут порождать ложные предупреждения.
- nullok
- Разрешить пустые пароли.
- use_first_pass
- Не запрашивать пароль у пользователя, вместо этого взять значение из PAM_AUTHTOK и, возможно, PAM_OLDAUTHTOK.
- try_first_pass
- В качестве пароля использовать значения из PAM_AUTHTOK и, возможно, PAM_OLDAUTHTOK, и запросить пароль у пользователя в случае, если значения соответствующих переменных PAM не определены.
- use_authtok
- Действовать аналогично use_first_pass, используя только (новое) значение PAM_AUTHTOK. Этот параметр предназначен для организации стеков модулей для password management.
- not_set_pass
- Запретить модулю изменять значения вышеупомянутых переменных PAM.
- likeauth
- Будучи вызванным как credential setting module, возвращать то же значение, что было возвращено во время аутентификации.
- passwd
- Если указан этот параметр, pam_tcb может использовать второе поле пользовательской записи (обычно из файла /etc/passwd) в качестве хеша пароля. Детали см. ниже.
- shadow
- Если указан этот параметр, pam_tcb может использовать второе поле теневой пользовательской записи (обычно из файла /etc/shadow или из теневого файла по схеме tcb) в качестве хеша пароля. Детали см. ниже.
- nisplus
- Если указан этот параметр, pam_tcb будет пытаться устанавливать EUID пользователя непосредственно перед получением хеша пароля. Этот параметр необходимо указывать при использовании NIS+. Детали см. ниже.
- write_to=
- Этот параметр определяет, где модуль pam_tcb должен хранить хеши новых паролей при смене паролей. Возможные значения: "passwd", "shadow", "tcb", и "nis". Значение по умолчанию: "shadow".
- md5
- При обновлении паролей пользователей хешировать новые пароли с помощью устаревшего алгоритма, заимствованного из FreeBSD и основанного на MD5.
- prefix=
- При обновлении паролей пользователей генерировать salt с указанным префиксом (который, в свою очередь, определяет, какой метод будет применён для хеширования пароля). Значение по умолчанию для префикса - "$2a$", что соответствует bcrypt- методу, основанному на Blowfish и поддерживающему изменяемое число итераций.
- count=
- Число
итераций,
используемых
криптографическим
алгоритмом
при
хешировании
паролей.
Значение
по
умолчанию -
0; в этом
случае
применяется
количество
итераций
по
умолчанию
для
выбранного
криптоалгоритма.
Рекомендуется переопределять это значение. За информацией по поддерживаемым методам хеширования, их свойствам и параметрам обращайтесь к crypt(3).
- plain_crypt
- Использовать crypt(3) вместо crypt_ra(3). Это может понадобиться в случае, если в системной библиотеке нет реентерабельной реализации выбранного метода хеширования.
- nodelay
- Не задерживать выполнение при неудачных попытках аутентификации.
- fork
- Создавать специальный подпроцесс для доступа к теневым файлам. При использовании этого параметра можно быть уверенным в том, что после вызова pam_end(3) в адресном пространстве процесса не останется важной информации о паролях. С другой стороны, применение этого параметра может негативно повлиять на работоспособность некоторых сложных приложений, и требует некоторых дополнительных ресурсов системы, что может несколько снизить производительность.
- helper=
- Если хеш пароля не может быть получен модулем pam_tcb и UID аутентифицируемого пользователя совпадает с real UID того пользователя, под которым работает модуль, то pam_tcb запускает привилегированную вспомогательную программу для получения хеша пароля, необходимого для выполнения аутентификации. Этот параметр указывает путь к вспомогательной программе. Если указан пустой путь, то никакой вспомогательной программы запущено не будет. Значение по умолчанию - /usr/lib/chkpwd/tcb_chkpwd.
Получение хешей паролей
Модуль pam_tcb использует следующий алгоритм для получение хеша пароля пользователя:
если
(указан
параметр
passwd и поле pw_passwd
не равно ни
"x", ни "*NP*")
использовать
поле pw_passwd в
качестве
хеша;
если
(указан
параметр
nisplus) {
попытаться
установить
EUID
соответствующего
пользователя;
если не
удалось, то
признать
попытку
неудачной;
получить struct
spwd
пользователя
с помощью
getspnam(3);
восстановить
прежний EUID;
использовать
поле sp_pwdp в
качестве
хеша;
} если
(указан
параметр
shadow и поле pw_passwd
равно "x")
использовать
поле sp_pwdp в
качестве
хеша;
если все
вышеперечисленное
не удалось,
признать
попытку
неудачной.
Дефекты
Текущая реализация модуля pam_tcb не является thread-safe (равно как pam_unix и pam_pwdb).
Историческая справка
Первая
публичная
версия
реализации
альтернативной
схемы
управления
теневыми
паролями tcb
появилась 12
ноября 2001
года в ОС Openwall
GNU/*/Linux.
Дата
появления
tcb в ALT Linux Sisyphus - 20
декабря 2001
года.
Авторы
- Rafal Wojtczuk <nergal@owl.openwall.com>, Solar Designer <solar@owl.openwall.com> -
- реализация схемы tcb для ОС Openwall GNU/*/Linux.
- Dmitry V. Levin <ldv@altlinux.org> -
- аудит кода, адаптация схемы tcb для ОС ALT Linux, перевод документации по tcb на русский язык.
- Реализация PAM-модуля
- pam_tcb призвана обеспечивать обратную совместимость с pam_unix, ввиду чего некоторые решения были заимствованы из pam_unix. Некоторые менее критичные фрагменты кода, а также в некоторой мере композиция кода взяты из реализации модуля pam_unix в Linux-PAM. Имена соавторов pam_unix приведены в каталоге orig_copyright/ исходного кода схемы tcb.
Ссылки
crypt(3), crypt_ra(3), getpwnam(3), getspnam(3), shadow(3), syslog(3), login.defs(5), passwd(5), shadow(5), tcb(5), pam(8), tcb_convert(8)
| 16 April 2004 | ALT Linux |
