PAM_TCB
Updated: 02 March 2002
Index Return to Main Contents
Название
pam_tcb - PAM-модуль, реализующий поддержку схемы управления теневыми паролями 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 запускает привилегированную вспомогательную программу для получения хеша пароля, необходимого для выполнения аутентификации. Этот параметр указывает путь к вспомогательной программе. Если указан пустой путь, то никакой вспомогательной программы запущено не будет. Значение по умолчанию - /sbin/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).Авторы
Rafal Wojtczuk <nergal@owl.openwall.com>, Solar Designer <solar@owl.openwall.com> - реализация схемы TCB для ОС Openwall GNU/*/Linux.- Dmitry V. Levin <ldv@alt-linux.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)
Index
- Название
- Описание
- Параметры
- Получение хешей паролей
- Дефекты
- Авторы
- Ссылки