Формат конфигурационного файла Linux-PAM
  • Категории
  • Подписка
  • Разместить статью
01/07/10 1 4869 Модули аутентификации PAM
-

Формат конфигурационного файла Linux-PAM

Давайте рассмотрим подробнее конфигурационный файл службы подключаемых модулей аутентификации.

Что есть конфигурационный файл? Это файл /etc/pam.conf или набор файлов в каталоге /etc/pam.d с именами, которые совпадают с именами отдельных служб.

Оформляется как последовательность строк, каждая из которых информирует о подключении отдельного аутентификационного модуля и имеет следующий формат:

service     module_type     control_flag     module_path     options

Поле service определяет прикладную службу и может принимать, например,  такие значение: login, rlogin, rsh, telnet, ftp, passwd, OTHER (последнее отвечает всем тем службам, которые не указаны явным образом). Присутствует, только если в качестве конфигурационного файла используется файл /etc/pam.conf.

Поле module_type определяет тип аутентификационного модуля. Возможные значения: auth, account, session, password.

Поле control_flag определяет поведение системы в случаях, когда с одной службой связывается несколько аутентификационных модулей одного типа (когда стекуется несколько аутентификационных модулей). Возможные значения: requisite, required, sufficient, optional.

Поле module_path указывает на расположение аутентификационных модулей в файловой системе (содержит имена файлов с аутентификационными модулями).

Поле options содержит специфические для всех аутентификационных модулей опции (например, use_smart_card).

Пример конфигурационного файла:

login        auth             required     pam_unix_auth.so
login        session        required     pam_unix_session.so
login        account       required     pam_unix_account.so
ftp             auth              required     pam_skey_auth.so
ftp             session         required     pam_unix_session.so
passwd    password    required     pam_unix_passwd.so
OTHER     auth             required     pam_unix_auth.so
OTHER     session        required     pam_unix_session.so
OTHER     account       required     pam_unix_account.so

При связывании нескольких аутентификационных механизмов с одной службой возникают следующие две проблемы:

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

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

Фрагмент конфигурационного файла со стековкой аутентификационных модулей:

login     auth     required     pam_unix_auth.so
login     auth     required     pam_kerb_auth.so     use_mapped_pass
login     auth     optional     pam_rsa_auth.so      use_first_pass
rlogin    auth     sufficient   pam_rhosts_auth.so
rlogin    auth     required     pam_unix_auth.so

ПРИМЕЧАНИЕ:
Модуль pam_rhosts_auth.so реализует ту часть стандартного поведения rlogin-сервера, согласно которой пароль не спрашивается, если клиентский узел обозначен в файлах /etc/hosts.equiv или ~/.rhosts.

Поле control_flag определяет поведение системы в зависимости от результата выполнение соответствующего аутентификационного модуля.

На практике применяется, главным образом, стековка модулей аутентификации. Дальше рассмотрим семантику значений поля control_flag по отношению к модулям аутентификации:

  • requisite: как только соответствующий модуль возвратит ошибку, принимается решение о неуспехе аутентификации, при этом остальные стекуемые модули уже не выполняются;
  • required: если соответствующий модуль возвратит ошибку, принимается решение о неуспехе аутентификации, но при этом остальные стекуемые модули тоже выполняются;
  • sufficient: если соответствующий модуль будет выполнен успешно, принимается решение об успехе аутентификации, при этом остальные стекуемые модули уже не выполняются (но только если все предыдущие модули, помеченные как required, тоже выполнены успешно);
  • optional: успех и ошибка соответствующего модуля имеют значение, только если это единый модуль, подключенный к данной службе (в других случаях неуспех выполнения такого модуля не считается основанием для отказа в аутентификации).

Применение нескольких аутентификационных механизмов одновременно может требовать от пользователей запоминания нескольких паролей. Это неудобно, однако, использование одного пароля для разных механизмов приводит к уязвимости стойкости системы аутентификации в общем, поскольку компрометация одного пароля приводила бы в таком случае к компрометации системы в целом. Кроме того, разные аутентификационные механизмы предъявляют разные требования относительно паролей (относительно длины, алфавита, интервала обновления и т.п.), что усложняет применение одного пароля для нескольких аутентификационных механизмов.

Для решения этой проблемы в системе PAM предусмотренный механизм маппинга паролей (password mapping). Благодаря этому механизму пользователю, который реально имеет разные пароли для разных аутентификационных механизмов, достаточно помнить лишь один из своих паролей — основной (primary). Предполагается, что это наиболее стойкий из паролей пользователя. Другие – дополнительные (secondary) – пароли пользователя сохраняются в домашнем каталоге пользователя или другом защищенном месте (например, на флеш-карте пользователя) в зашифрованном виде; при этом в качестве ключа шифрования используется основной пароль пользователя.

Для поддержки возможности использовать одного пароля для нескольких аутентификационных механизмов разработчики аутентификационных модулей должны поддерживать следующие опции:

  • use_first_pass: использовать тот же пароль, что и первый для стекуемых аутентификационных модулей, при этом в случае неудачной аутентификации по этому паролю не спрашивать новый;
  • try_first_pass: использовать тот же пароль, что и первый для стекуемых аутентификационных модулей, при этом в случае неудачной аутентификации по этому паролю спросить новый;
  • use_mapped_pass: получить пароль с использованием механизма маппинга паролей, при этом в случае неудачной аутентификации по этому паролю не спрашивать новый;
  • try_mapped_pass: получить пароль с использованием механизма маппинга паролей, при этом в случае неудачной аутентификации по этому паролю спросить новый.

Механизм маппинга паролей не может быть применен для аутентификационных модулей, которые предусматривают использование одноразовых паролей.


Один комментарий на «“Формат конфигурационного файла Linux-PAM”»

  1. Андрей:

    Спасибо за ликбез)

Добавить комментарий

Яндекс.Метрика