Содержание

Skip to end of metadata
Go to start of metadata

При использовании решения pam_csp совместно с FreeIPA параметр доменной политики паролей "минимальный срок действия пароля" должен быть установлен в 0. (См. "Политика" - "Политики паролей" в WEB-интерфейсе администрирования FreeIPA).

Данная статья применима к:

  • ОС ОН Орёл 2.12
  • ОС СН Смоленск 1.6 с установленным обновлением Update 5

Архитектура системы

Аутентификация пользователей (pam-csp)

Двухфакторная аутентификация с использованием так называемых "токенов" (USB-ключей, криптографических ключей) реализована в виде стандартного PAM-модуля libpam-csp, обрабатывающего два события:

  1. аутентификация пользователя;
  2. смена пользовательского пароля.

Для доступа к токенам используется стандартная библиотека opensc-pkcs11, позволяющая модулю libpam-csp работать с любыми поддерживающими эту библиотеку токенами различных производителей.

Контроль пользовательской сессии (csp-monitor)

Для контроля за ходом пользовательской сессии используется сервис csp-monitor.

Этот сервис принимает от pam_csp по шине DBus сообщения о входе (и выходе) пользователя с использованием токена и поддерживает список текущих пользовательских сессий с информацией об использованных для входа токенах.

Сервис осуществляет мониторинг подключений и отключений USB устройств и, в случае если какой-либо токен из числа участвующих в пользовательской аутентификации был вынут, блокирует все сессии этого пользователя. Для дальнейшей разблокировки сессии пользователь должен подключить токен и ввести PIN-код, точно так же, как если бы пользователь выбрал команды меню "Завершение работы" и затем "Блокировка" (или как если бы сессия была заблокирована по неактивности пользователя).

Сервис управляется как обычный systemd юнит:

systemctl status csp-monitor
На данный момент сервис не имеет параметров.

Для взаимодействия с токенами сервис также использует стандартную библиотеку opensc-pkcs11.

Подготовка к работе

Подготовка к работе клиентской машины

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

sudo apt install libpam-csp

При установке пакета libpam-csp также автоматически будет установлен пакет для мониторинга пользовательских сессий csp-monitor.

При инсталляции пакета модуль pam_csp регистрируется ПЕРВЫМ в цепочках pam-модулей в двух PAM-профилях:

  1. /etc/pam.d/common-auth
  2. /etc/pam.d/common-password

Инициализация токенов

Данная процедура одинакова как для локальных так и для доменных пользователей.

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

  • opensc-pkcs11 версии не ниже 0.19.0-2;
  • ifd-rutokens версии не ниже 1.0.4 (для Rutoken S и Rutoken ECP ) (доступен по ссылке https://www.rutoken.ru/support/download/nix/);
  • или, возможно, иные специфичные для производителя используемой модели токена интерфейсные модули (в терминологии стандарта PCSC - Interface Device Handler).

Установить пакеты opensc-pkcs11можно командой:

sudo apt install opensc-pkcs11

Установка интерфейсных модулей выполняется в соответствии с инструкциями производителей соответствующих токенов.

Процедура инициализации обычно зависит от используемой модели токена.
Для токенов Rutoken процедура следующая:

  1. Инициализировать токен:
    1. Для Rutoken S:

      pkcs15-init --erase-card
      pkcs15-init --create-pkcs15 --so-pin "87654321" --so-puk "" --pin "12345678"
      pkcs15-init --store-pin --label "User PIN" --auth-id 02 --pin "12345678" --puk ""

    2. Для Rutoken ECP:

      pkcs15-init --erase-card -p rutoken_ecp
      pkcs15-init --create-pkcs15 --so-pin "87654321" --so-puk ""
      pkcs15-init --store-pin --label "User PIN" --auth-id 02 --pin "12345678" --puk "" --so-pin "87654321" --finalize

  2. Проверить, что токен успешно инициализирован, можно с помощью команды:

    pkcs15-tool -D

Использование токена

  1. Установить пакет libpam-csp:

    sudo apt install libpam-csp

  2. Задать команду принудительной смены пароля:
    1. Для локальных пользователей на компьютере пользователя:

      sudo passwd --expire <имя_пользователя>

    2. Для доменных пользователей необходимо использовать соответствующие инструменты администрирования домена.

  3. Сообщить пользователю текущий PIN токена.

  4. Далее пользователь пред входом в свою сессию подключает токен и, как обычно при входе, указывает свои логин и пароль, и в ответ на дополнительное приглашение

    Supply token PIN:

    пользователь вводит сообщенный ему PIN.

  5. Если PIN введён правильно, то пользователь получает приглашения ввести и подтвердить свой личный PIN:

    Supply new token PIN:
    Retype new token PIN:

    При этом можно указать новый PIN, а можно два раза нажать <Enter>, чтобы оставить существующий. После этого произойдет генерация нового случайного пароля, его назначение пользовательской учётной записи и вход в систему. Теперь в токене будет храниться 16-символьный пароль, недоступный без знания PIN-а.

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

    login: user
    Supply token PIN:
  7. При необходимости пользователь может сам сменить себе пароль. Для этого ему нужно будет войти в систему, а затем:
    1. При первом входе - подключить токен и выполнить команду passwd. При этом потребуется ввести текущий клавиатурный пароль:

      passwd

      Введите ПИН-код :
      Введите текущий пароль :
      Введите новый ПИН-код :
      Введите новый ПИН-код ещё раз :

    2. При последующих входах команду passwd следует выполнять при подключенном токене. При этом пароль запрашиваться уже не будет:

      passwd

      Введите ПИН-код :
      Введите новый ПИН-код :
      Введите новый ПИН-код ещё раз :

  8. Для локального пользователя администратор может подготовить токен со сгенерированным паролем заранее. Для этого следует подключить токен и выполнить команду:

    sudo passwd <имя_пользователя>

    Введите ПИН-код :
    Введите новый ПИН-код :
    Введите новый ПИН-код ещё раз :
    ПИН-код успешно изменён.
    passwd: пароль успешно изменен

  • No labels