Данное решение не рекомендуется использовать для компьютеров в доменах.
Рекомендованные решения для компьютеров в доменах см. в статье Двухфакторная аутентификация в доменах.
Данная статья применима к:
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8)
- Astra Linux Special Edition РУСБ.10015-01 и РУСБ.10015-10 (очередное обновление 1.7)
- Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
с установленным обновлением БЮЛЛЕТЕНЬ № 20200327SE16 (оперативное обновление 5) - Astra Linux Special Edition РУСБ.10015-16 исп. 1
с установленным обновлением Бюллетень № 20201007SE16 - Astra Linux Common Edition 2.12
При использовании решения pam_csp совместно с FreeIPA параметр доменной политики паролей "минимальный срок действия пароля" должен быть установлен в 0. Это можно сделать с помощью web-интерфейса администрирования FreeIPA ("Политика" — "Политики паролей") или из командной строки (требуется наличие Kerberos-билета администратора домена) командой:
Архитектура системы
Аутентификация пользователей (pam-csp)
Двухфакторная аутентификация с использованием ключевых носителей реализована в виде стандартного PAM-модуля pam-csp.so, обрабатывающего два события:
- аутентификация пользователя с использование ключевого носителя;
- изменение пользователем собственного пароля.
Модуль использует собственный формат данных для аутентификации, несовместимый с другими системами двухфакторной аутентификации. См. статьи:
- Двухфакторная PAM-аутентификация с использованием ключевых носителей: пакет libpam-p11;
- Двухфакторная PAM-аутентификация с использованием ключевых носителей: пакет libpam-pkcs11;
- Двухфакторная аутентификация в доменах.
Контроль пользовательской сессии (csp-monitor)
Для контроля за ходом пользовательской сессии используется служба csp-monitor. Эта служба:
- Принимает по шине DBus сообщения о входе и выходе пользователей с использованием ключевого носителя, регистрируя пользовательские сессии и информацию об использованных для входа ключевых носителях. Сообщения о входе могут передаваться модулем pam_csp.
- Осуществляет мониторинг подключений и отключений USB-устройств:
- При отключении ключевого носителя блокирует сессии, для входа в которые были использован этот носитель. Для разблокировки сессии пользователь должен подключить ключевой носитель и ввести PIN-код, точно так же, как если бы он сам заблокировал сессию ("Пуск" — "Завершение работы" — "Блокировка") или как если бы сессия была заблокирована по отсутствию активности пользователя.
- При подключении и отключении ключевых носителей выполняет на подключенных ключевых носителях поиск аутентификационных записей пользователей. В ранних версиях контролируются только токены. Начиная с csp_monitor версии 1.0.8+ci1 контролируется также подключение и отключение смарт-карт. Поиск выполняется в записях, используемых модулем pam-csp, и в сертификатах. В качестве имени пользователя используется значение CN (commonName) поля subj сертификата. Сертификаты, помеченные как сертификаты удостоверяющих центров (basicConstraints = CA:TRUE) игнорируются. Соответствие находящихся в ключевом носителе ключей и сертификатов не проверяется. Имена, которым не соответствуют данные в базе passwd, игнорируются. Обнаруженные имена пользователей сохраняются в файле /etc/X11/fly-dm/token. Далее этот файл может использоваться модулем входа (fly-dmgreet) для отображения списка возможных имен для входа.
Служба управляется как стандартный юнит systemd:
Установка пакетов
Для подготовки ключевых носителей к использованию в качестве средства двухфакторной аутентификации требуется установить пакет libpam-csp.
Для выполнения двухфакторной аутентификации дополнительно требуется установить пакет libpam-scp и и пакет csp-monitor. Пакеты могут быть установлены с помощью графического менеджера пакетов или из командной строки командой:
При установке пакета libpam-csp устанавливается PAM-модуль pam_csp.so. Модуль регистрируется в цепочках PAM-модулей в следующих PAM-профилях:
- /etc/pam.d/common-auth;
- /etc/pam.d/common-password;
- /etc/pam.d/common-session.
Подготовка ключевых носителей для передачи пользователям
Операции по подготовке ключевых носителей выполняются на компьютере сотрудника, ответственного за их подготовку. На этом компьютере должны быть установлены:
- пакет opensc-pkcs11 версии не ниже 0.19.0-1 (устанавливается автоматически при установке пакета libpam-csp или csp-moniror);
- интерфейсные модули для используемых ключевых носителей (см. Ключевые носители (токены) PKCS в Astra Linux);
- используемый интерфейсный модуль должен быть указан в файле
Процедура подготовки одинакова для локальных и для доменных пользователей и состоит из следующих шагов:
- Инициализировать (очистить) ключевой носитель. Эта операция обязательна как для бывших в эксплуатации, так и для новых ключевых носителей.
- Создать базовую структуру данных (аналог форматирования дискового раздела в ОС).
- Создать по крайней мере одно защищенное хранилище данных (аналог пользовательского домашнего каталога). В отличие от обычных каталогов ОС доступ к хранилищу защищен паролем (PIN-кодом).
- Записать необходимую для аутентификации информацию в созданное хранилище данных.
Ключевые носители Рутокен
Далее предполагается, что пакет с используемым интерфейсным модулем загружен и установлен.
Ключевые носители Рутокен Lite
Последовательность команд:
pkcs15-init --create-pkcs15 --so-pin <PIN_администратора> --so-puk ""
pkcs15-init --store-pin --label "User PIN" --auth-id 02 --pin <PIN_пользователя> --puk "" --so-pin <PIN_администратора> --finalize
pam_csp_ctl -c -u <имя_пользователя> -s <пароль_пользователя> -p <PIN_пользователя>
Ключевые носители Рутокен S
Последовательность команд:
pkcs15-init --create-pkcs15 --so-pin <PIN_администратора> --pin <PIN_пользователя> --so-puk ""
pkcs15-init --store-pin --label "User PIN" --auth-id 02 --pin <PIN_пользователя> --puk "" --so-pin <PIN_администратора>
pam_csp_ctl -c -u <имя_пользователя> -s <пароль_пользователя> -p <PIN_пользователя>
Ключевые носители Рутокен ЭЦП
Для работы с ключевыми носителями Рутокен ЭЦП указать интерфейсный модуль в файле /etc/security/pam_csp.conf в секции [global] (если файл не существует, то создать его):
[global] pkcs11_module = librtpkcs11ecp.so
Для очистки (инициализации) ключевых носителей Рутокен ЭЦП следует использовать инструмент rtadmin, предоставляемый производителем. Инструмент и инструкции к нему доступны по ссылке: Утилита администрирования Рутокен (rtAdmin).
Пример команды очистки (rtadmin версии 3.1):
При работе с токенами Рутокен ЭЦП после выполнения первой команды требуется дождаться готовности токена к выполнению следующей команды. При этом, пока токен не готов, следующая команда будет завершаться ошибкой. Пример сценария с проверкой готовности:
while ! pkcs15-init --create-pkcs15 --so-pin <PIN_администратора> --so-puk "" ; do echo Fail ; sleep 1 ; done
pkcs15-init --store-pin --so-pin <PIN_администратора> --pin <PIN_пользователя> --label "User PIN" --auth-id 02 --puk "" --finalize
pam_csp_ctl -c -u <имя_пользователя> -s <пароль_пользователя> -p <PIN_пользователя>
Ключевые носители Аладдин
Указать интерфейсный модуль в файле /etc/security/pam_csp.conf в секции [global] (если файл не существует, то создать его):
[global] pkcs11_module = libjcPKCS11-2.so
Для инициализации токенов Аладдин рекомендуется использовать предоставляемый производителем инструмент Единый клиент JaCarta.
Для токенов Аладдин JaCarta PKI после форматирования следует выполнить команды разметки:
pkcs11-tool --module /usr/lib/libjcPKCS11-2.so --so-pin <PIN_администратора> --init-pin --pin <PIN_пользователя>
pam_csp_ctl -c -u <имя_пользователя> -s <пароль_пользователя> -p <PIN_пользователя>
Проверка результатов подготовки ключевого носителя
Проверить результат подготовки токена можно с помощью команды:
Использование токенов для двухфакторной аутентификации
Подготовка компьютеров
На компьютерах, на которых будет выполняться вход с использованием двухфакторной аутентификации:
установить пакет libpam-csp:
sudo apt install libpam-csp- Установить интерфейсный модуль для используемых ключевых носителей и указать его в файле /etc/security/pam_csp.conf в секции [global] (если файл не существует, то создать его).
- Если требуется принудительная смена пользовательского пароля при первом входе, то установить срок его действия истекшим:
Для локальных пользователей команда должна быть выполнена непосредственно на компьютере, на котором будет выполняться вход (можно использовать уделенную сессию SSH):
sudo passwd --expire <имя_пользователя>
- Передать пользователю токен и пользовательский PIN-код.
Действия пользователя
Вход в сессию
Действия пользователя:
- Подключить токен.
При входе указать свой логин.
В ответ на дополнительное приглашение:
Введите ПИН-код:ввести сообщенный ему PIN-код.
В зависимости от настроек языка приглашение может выглядеть как "Supply token PIN:".
Смена пароля
При необходимости пользователь может сам сменить себе пароль. Для этого ему нужно:
Войти в систему. Допускается вход как с использованием, так и без использования токена.
Подключить токен, если он не был подключен ранее.
Выполнить команду:
passwd- В ответ на приглашение ввести и подтвердить PIN-код.
- Ввести и подтвердить новый пароль.
Самостоятельная смена PIN-кода пользователем
Смена пароля локального пользователя администратором
Для локального пользователя администратор может подготовить токен с паролем заранее. Для этого следует:
- Подключить токен.
Выполнить команду:
sudo passwd <имя_пользователя>В ответ на приглашение ввести PIN-код пользователя.
Ввести и подтвердить новый пароль пользователя.