PAM — Pluggable Authentication Modules, подключаемые модули аутентификации — можно разделить на 2 логические части: подсистему аутентификации и модули PAM. Подсистема PAM позволяет приложениям запрашивать аутентификацию, разбирает конфигурационные файлы и обращается к модулям аутентификации. Модули PAM представляют собой библиотеки, в которых прописаны обработчики операций, которые может направлять к ним подсистема PAM.
Например, стандартный модуль pam_unix умеет следующее:
- запросить пароль у пользователя;
- сверить введенный пароль со значением, хранящимся в системе
- проверить удовлетворяет ли пароль требованиям безопасности, и не истек ли он.
- Общая схема работы PAM.
Упрощенно схема аутентификации в приложении, использующем PAM, выглядит следующим образом:
- приложение инициализирует библиотеку PAM (libpam.so);
- PAM в соответствии с конфигурационным файлом для приложения обращается к требуемым модулям;
- модули выполняют возложенные на них действия
- приложению возвращается результат операции.
PAM позволяет проводить не только аутентификацию. Функции PAM классифицируются по типу модулей (в скобках указаны обозначения модулей в конфигурационных файлах):
- аутентификация (auth);
- управление учетными записями (account);
- управление сеансами (session);
- управление паролями (passwd).
Схема работы модуля аутентификации для PAM pam_p11
Данный модуль позволяет осуществить двухфакторную аутентификацию пользователей по смарт-картам или USB-токенам с использованием асимметричной криптографии. Рассмотрим общую схему его работы:
- на токене хранится сертификат пользователя и его закрытый ключ;
- сертификат также сохранен в домашнем каталоге пользователя как доверенный.
Аутентификация происходит следующим образом:
- На токене выполняется поиск сертификата пользователя;
- Через PAM производится запрос PIN-кода к токену;
- Если аутентификация на токене прошла успешно, то производится подпись случайных данных с помощью закрытого ключа, хранящегося на токене. При этом сама подпись выполняется аппаратно;
- Полученная электронная подпись проверяется с помощью сертификата пользователя;
- Если в итоге проверка подписи осуществлена успешно, то модуль сообщает о пройденной аутентификации.
Дополнительная информация доступна на Портале документации Рутокен.