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

  • 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 используется при входе пользователя в сессию. Модуль выполняет аутентификацию пользователя по следующему алгоритму:

  1. Публичные ключи, хранящиеся в домашнем каталоге пользователя (файл .eid/authorized_certificates), сравниваются с ключами, обнаруженными в ключевых носителях.
  2. Если найден совпадающий ключ, то ключевому носителю передаются случайные данные для подписания неизвлекаемым закрытым ключом.
  3. Полученная подпись проверяется с помощью публичного ключа.

Таким образом, модуль проверяет, что в ключевом носителе есть не только публичный ключ, но и соответствующий ему закрытый ключ. Более строгие проверки (проверка подписей удостоверяющих центров, списков отзыва сертификатов и пр.) не предусмотрены.

Такой принцип работы удобен для малых систем, не входящих в домен. При работе в доменах (ALD Pro, FreeIPA, Windows AD, Samba AD) рекомендуется использовать штатную службу Astra Linux — sssd (см. Двухфакторная аутентификация в доменах). Если домен не используется, то для больших систем предпочтительно использовать пакет libpam_pkcs11, обеспечивающий большую функциональность.

Подробное описание модуля pam_p11 доступно по ссылке: https://github.com/OpenSC/pam_p11.

Подготовка ключевых носителей

Действия по подготовке ключевых носителей подробно описаны с статье Ключевые носители (токены) PKCS в Astra Linux. Основные шаги по подготовке:

  1. Установить пакеты из базового репозитория Astra Linux:

    sudo apt install libccid pcscd libpcsclite1 pcsc-tools opensc libengine-pkcs11-openssl1.1

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

  3. Убедиться в доступности подключенного ключевого носителя.

  4. Инициализировать ключевой носитель.

  5. Создать на ключевом носителе ключевую пару.

  6. Подписать сертификат открытого ключа. Допускается использовать самоподписанные сертификаты.

  7. Записать сертификат в ключевой носитель.

Настройка клиентской машины

Установка пакетов и настройка PAM

  1. Установить пакеты командой:

    sudo apt install opensc libengine-pkcs11-openssl libpam-p11 pcscd libccid

  2. Установить интерфейсный модуль для используемых ключевых носителей.
  3. Создать файл /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  — для ключевых носителей Рутокен;
  4. Загрузить созданный файл в PAM-стек:

    sudo pam-auth-update --enable pam_p11

Установка сертификатов пользователей

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

Для каждого пользователя, использующего двухфакторную аутентификацию с помощью pam_p11:

  1. Создать подкаталог .eid в домашнем каталоге пользователя:

    sudo mkdir /home/<имя_пользователя>/.eid

  2. Установить права доступа к каталогу:

    sudo chmod 0755 /home/<имя_пользователя>/.eid
    sudo chown <имя_пользователя>:<имя_пользователя> /home/<имя_пользователя>/.eid

  3. Ранее созданный сертификат пользователя в формате PEM добавить в файл authorized_certificates (создать файл, если его нет):

    cat <имя_файла_сертификата> | sudo tee -a /home/<имя_пользователя>/.eid/authorized_certificates

Проверка работы авторизации

Для проверки работы выполнить вход при подключенном ключевом носителе:

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

  • Нет меток