Данная статья применима к:
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8)
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
- Astra Linux Special Edition РУСБ.10015-17
- Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
- Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
Архитектура системы
Модуль pam_p11 используется при входе пользователя в сессию. Модуль выполняет аутентификацию пользователя по следующему алгоритму:
- Публичные ключи, хранящиеся в домашнем каталоге пользователя (файл .eid/authorized_certificates), сравниваются с ключами, обнаруженными в ключевых носителях.
- Если найден совпадающий ключ, то ключевому носителю передаются случайные данные для подписания неизвлекаемым закрытым ключом.
- Полученная подпись проверяется с помощью публичного ключа.
Таким образом, модуль проверяет, что в ключевом носителе есть не только публичный ключ, но и соответствующий ему закрытый ключ. Более строгие проверки (проверка подписей удостоверяющих центров, списков отзыва сертификатов и пр.) не предусмотрены.
Такой принцип работы удобен для малых систем, не входящих в домен. При работе в доменах (ALD Pro, FreeIPA, Windows AD, Samba AD) рекомендуется использовать штатную службу Astra Linux — sssd (см. Двухфакторная аутентификация в доменах). Если домен не используется, то для больших систем предпочтительно использовать пакет libpam_pkcs11, обеспечивающий большую функциональность.
Подробное описание модуля pam_p11 доступно по ссылке: https://github.com/OpenSC/pam_p11.
Подготовка ключевых носителей
Действия по подготовке ключевых носителей подробно описаны с статье Ключевые носители (токены) PKCS в Astra Linux. Основные шаги по подготовке:
Установить пакеты из базового репозитория Astra Linux:
sudo apt install libccid pcscd libpcsclite1 pcsc-tools opensc libengine-pkcs11-openssl1.1Установить интерфейсные модули для используемых ключевых носителей.
Убедиться в доступности подключенного ключевого носителя.
Инициализировать ключевой носитель.
Создать на ключевом носителе ключевую пару.
Подписать сертификат открытого ключа. Допускается использовать самоподписанные сертификаты.
Записать сертификат в ключевой носитель.
Настройка клиентской машины
Установка пакетов и настройка PAM
Установить пакеты командой:
sudo apt install opensc libengine-pkcs11-openssl libpam-p11 pcscd libccid- Установить интерфейсный модуль для используемых ключевых носителей.
Создать файл /usr/share/pam-configs/p11 со следующим содержимым:
где <интерфейсный_модуль> — путь к используемой библиотеке, например:Name: pam_p11 Default: yes Priority: 800 Auth-Type: Primary Auth: sufficient pam_p11.so <интерфейсный_модуль>
- /usr/lib/libjcPKCS11-2.so — для ключевых носителей Аладдин;
- /usr/lib/librtpkcs11ecp.so — для ключевых носителей Рутокен;
Загрузить созданный файл в PAM-стек:
sudo pam-auth-update --enable pam_p11
Установка сертификатов пользователей
Для каждого пользователя, использующего двухфакторную аутентификацию с помощью pam_p11:
Создать подкаталог .eid в домашнем каталоге пользователя:
sudo mkdir /home/<имя_пользователя>/.eidУстановить права доступа к каталогу:
sudo chmod 0755 /home/<имя_пользователя>/.eid
sudo chown <имя_пользователя>:<имя_пользователя> /home/<имя_пользователя>/.eidРанее созданный сертификат пользователя в формате PEM добавить в файл authorized_certificates (создать файл, если его нет):
cat <имя_файла_сертификата> | sudo tee -a /home/<имя_пользователя>/.eid/authorized_certificates
Проверка работы авторизации
Для проверки работы выполнить вход при подключенном ключевом носителе: