#1 2022.06.06 14:30:41
0
Архитектура системы
Аутентификация пользователей (pam-csp)
Двухфакторная аутентификация с использованием так называемых "токенов" (USB-ключей, криптографических ключей) реализована в виде стандартного PAM-модуля libpam-csp, обрабатывающего два события:
- аутентификация пользователя;
- смена пользовательского пароля.
Для доступа к токенам используется стандартная библиотека opensc-pkcs11, позволяющая модулю libpam-csp работать с любыми поддерживающими эту библиотеку токенами различных производителей.
Контроль пользовательской сессии (csp-monitor)
Для контроля за ходом пользовательской сессии используется сервис csp-monitor.
Этот сервис принимает от pam_csp по шине DBus сообщения о входе (и выходе) пользователя с использованием токена и поддерживает список текущих пользовательских сессий с информацией об использованных для входа токенах.
Сервис осуществляет мониторинг подключений и отключений USB устройств и, в случае если какой-либо токен из числа участвующих в пользовательской аутентификации был вынут, блокирует все сессии этого пользователя. Для дальнейшей разблокировки сессии пользователь должен подключить токен и ввести PIN-код, точно так же, как если бы пользователь выбрал команды меню "Завершение работы" и затем "Блокировка" (или как если бы сессия была заблокирована по неактивности пользователя).
Сервис управляется как обычный systemd юнит:
На данный момент сервис не имеет параметров.
Для взаимодействия с токенами сервис также использует стандартную библиотеку opensc-pkcs11.
Подготовка к работе клиентской машины
Модуль libpam-csp входит в состав пакета libpam-csp и может быть установлен с помощью графического менеджера пакетов или из командной строки командой:
При работе в Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6) с установленным обновлением БЮЛЛЕТЕНЬ № 20210611SE16 (оперативное обновление 7) и последующими оперативными обновлениями пакет csp-monitor будет автоматически установлен при установке пакета libpam-csp.
При инсталляции пакета модуль pam_csp регистрируется в цепочках pam-модулей в следующих PAM-профилях:
Инициализация токенов
Операции по подготовке токенов выполняются на компьютере ответственного за подготовку токенов администратора перед передачей токенов пользователям . Для выполнения операций на этом компьютере должны быть установлены пакеты:
- opensc-pkcs11 версии не ниже 0.19.0-1;
- ifd-rutokens версии не ниже 1.0.4 (для Rutoken S и Rutoken ECP) (доступен по ссылке https://www.rutoken.ru/support/download/get/rtDrivers-x64-deb.html);
- или, возможно, иные специфичные для производителя используемой модели токена интерфейсные модули (в терминологии стандарта PCSC - Interface Device Handler).
Установить пакет opensc-pkcs11 можно командой:
Установка интерфейсных модулей выполняется в соответствии с инструкциями производителей соответствующих токенов.
Процедура инициализации обычно зависит от используемой модели токена.
Для токенов Rutoken процедура следующая:
Инициализировать токен:
Для Rutoken S:
Для Rutoken ECP:
Проверить, что токен успешно инициализирован, можно с помощью команды:
Использование токена
Установить пакет libpam-csp:
Задать команду принудительной смены пароля:
Для локальных пользователей на компьютере пользователя:
Для доменных пользователей необходимо использовать соответствующие инструменты администрирования домена.
Сообщить пользователю текущий PIN токена.
Далее пользователь пред входом в свою сессию подключает токен и, как обычно при входе, указывает свои логин и пароль, и в ответ на дополнительное приглашение
Supply token PIN:
пользователь вводит сообщенный ему PIN.
Если PIN введён правильно, то пользователь получает приглашения ввести и подтвердить свой личный PIN:
При этом можно указать новый PIN, а можно два раза нажать <Enter>, чтобы оставить существующий. После этого произойдет генерация нового случайного пароля, его назначение пользовательской учётной записи и вход в систему. Теперь в токене будет храниться 16-символьный пароль, недоступный без знания PIN-а.
При последующих входах в систему пользователю нужно будет предварительно подключить токен, и далее, как обычно, ввести логин и, вместо пароля, свой PIN. Диалог из терминала будет выглядеть примерно так:
При необходимости пользователь может сам сменить себе пароль. Для этого ему нужно будет войти в систему, а затем:
При первом входе - подключить токен и выполнить команду passwd. При этом потребуется ввести текущий клавиатурный пароль:
При последующих входах команду passwd следует выполнять при подключенном токене. При этом пароль запрашиваться уже не будет:
Для локального пользователя администратор может подготовить токен со сгенерированным паролем заранее. Для этого следует подключить токен и выполнить команду:
Аутентификация пользователей (pam-csp)
Двухфакторная аутентификация с использованием так называемых "токенов" (USB-ключей, криптографических ключей) реализована в виде стандартного PAM-модуля libpam-csp, обрабатывающего два события:
- аутентификация пользователя;
- смена пользовательского пароля.
Для доступа к токенам используется стандартная библиотека opensc-pkcs11, позволяющая модулю libpam-csp работать с любыми поддерживающими эту библиотеку токенами различных производителей.
Контроль пользовательской сессии (csp-monitor)
Для контроля за ходом пользовательской сессии используется сервис csp-monitor.
Этот сервис принимает от pam_csp по шине DBus сообщения о входе (и выходе) пользователя с использованием токена и поддерживает список текущих пользовательских сессий с информацией об использованных для входа токенах.
Сервис осуществляет мониторинг подключений и отключений USB устройств и, в случае если какой-либо токен из числа участвующих в пользовательской аутентификации был вынут, блокирует все сессии этого пользователя. Для дальнейшей разблокировки сессии пользователь должен подключить токен и ввести PIN-код, точно так же, как если бы пользователь выбрал команды меню "Завершение работы" и затем "Блокировка" (или как если бы сессия была заблокирована по неактивности пользователя).
Сервис управляется как обычный systemd юнит:
systemctl status csp-monitor
На данный момент сервис не имеет параметров.
Для взаимодействия с токенами сервис также использует стандартную библиотеку opensc-pkcs11.
Подготовка к работе клиентской машины
Модуль libpam-csp входит в состав пакета libpam-csp и может быть установлен с помощью графического менеджера пакетов или из командной строки командой:
sudo apt install libpam-csp csp-monitor
При работе в Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6) с установленным обновлением БЮЛЛЕТЕНЬ № 20210611SE16 (оперативное обновление 7) и последующими оперативными обновлениями пакет csp-monitor будет автоматически установлен при установке пакета libpam-csp.
При инсталляции пакета модуль pam_csp регистрируется в цепочках pam-модулей в следующих PAM-профилях:
/etc/pam.d/common-auth
/etc/pam.d/common-password
/etc/pam.d/common-session
Инициализация токенов
AstraLinux писал(а)
Данная процедура одинакова как для локальных так и для доменных пользователей.Операции по подготовке токенов выполняются на компьютере ответственного за подготовку токенов администратора перед передачей токенов пользователям . Для выполнения операций на этом компьютере должны быть установлены пакеты:
- opensc-pkcs11 версии не ниже 0.19.0-1;
- ifd-rutokens версии не ниже 1.0.4 (для Rutoken S и Rutoken ECP) (доступен по ссылке https://www.rutoken.ru/support/download/get/rtDrivers-x64-deb.html);
- или, возможно, иные специфичные для производителя используемой модели токена интерфейсные модули (в терминологии стандарта PCSC - Interface Device Handler).
Установить пакет opensc-pkcs11 можно командой:
sudo apt install opensc-pkcs11
Установка интерфейсных модулей выполняется в соответствии с инструкциями производителей соответствующих токенов.
Процедура инициализации обычно зависит от используемой модели токена.
Для токенов Rutoken процедура следующая:
Инициализировать токен:
Для 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 ""
Для 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
Проверить, что токен успешно инициализирован, можно с помощью команды:
pkcs15-tool -D
Использование токена
Установить пакет libpam-csp:
sudo apt install libpam-csp
Задать команду принудительной смены пароля:
Для локальных пользователей на компьютере пользователя:
sudo passwd --expire <имя_пользователя>
Для доменных пользователей необходимо использовать соответствующие инструменты администрирования домена.
Сообщить пользователю текущий PIN токена.
Далее пользователь пред входом в свою сессию подключает токен и, как обычно при входе, указывает свои логин и пароль, и в ответ на дополнительное приглашение
Supply token PIN:
пользователь вводит сообщенный ему PIN.
Если PIN введён правильно, то пользователь получает приглашения ввести и подтвердить свой личный PIN:
Supply new token PIN:
Retype new token PIN:
При этом можно указать новый PIN, а можно два раза нажать <Enter>, чтобы оставить существующий. После этого произойдет генерация нового случайного пароля, его назначение пользовательской учётной записи и вход в систему. Теперь в токене будет храниться 16-символьный пароль, недоступный без знания PIN-а.
При последующих входах в систему пользователю нужно будет предварительно подключить токен, и далее, как обычно, ввести логин и, вместо пароля, свой PIN. Диалог из терминала будет выглядеть примерно так:
login: user
Supply token PIN:
При необходимости пользователь может сам сменить себе пароль. Для этого ему нужно будет войти в систему, а затем:
При первом входе - подключить токен и выполнить команду passwd. При этом потребуется ввести текущий клавиатурный пароль:
passwd
Введите ПИН-код :
Введите текущий пароль :
Введите новый ПИН-код :
Введите новый ПИН-код ещё раз :
При последующих входах команду passwd следует выполнять при подключенном токене. При этом пароль запрашиваться уже не будет:
passwd
Введите ПИН-код :
Введите новый ПИН-код :
Введите новый ПИН-код ещё раз :
Для локального пользователя администратор может подготовить токен со сгенерированным паролем заранее. Для этого следует подключить токен и выполнить команду:
sudo passwd <имя_пользователя>
Введите ПИН-код :
Введите новый ПИН-код :
Введите новый ПИН-код ещё раз :
ПИН-код успешно изменён.
passwd: пароль успешно изменен