PAM

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-кода к токену;
  • Если аутентификация на токене прошла успешно, то производится подпись случайных данных с помощью закрытого ключа, хранящегося на токене. При этом сама подпись выполняется аппаратно;
  • Полученная электронная подпись проверяется с помощью сертификата пользователя;
  • Если в итоге проверка подписи осуществлена успешно, то модуль сообщает о пройденной аутентификации.

Дополнительная информация доступна на Портале документации Рутокен.