Данная статья – небольшая заметка по результатам исследования способов реализации двухфакторной аутентификации в ОС Astra Linux Special Edition (очередные обновления 1.7 и 1.8) с применением штатных средств ОС.

В качестве небольшого отступления стоит сказать, что вместо "двухфакторной аутентификации" было бы правильнее использовать понятие "многофакторная аутентификация", так как именно данный термин устанавливается ГОСТ Р 58833-2020 "Защита информации. Идентификация и аутентификация. Общие положения".

В Astra Linux имеется несколько модулей, позволяющих реализовать MFA, в том числе аутентификацию как по паролю, так и по сертификату. Далее приведем сравнительный анализ соответствующих PAM-модулей согласно документации (все модули доступны в составе основного репозитория).

Модуль Пакет Комментарий Возможность блокировки пользовательской сессии при отключении ключевого носителя
pam_csp libpam_csp Модуль аутентификации по паролю, сохраненному в токене. Для доступа к сохраненному паролю используется PIN-код. Допускает использование пассивных токенов. Только при условии использования csp-monitor. Начиная с csp-moniror версии 1.0.8+ci1 — для токенов и смарт-карт, в более ранних версиях — только для токенов.
pam_p11 libpam-p11 Модуль аутентификации по сертификату. Проверка сертификата выполняется с помощью неизвлекаемого ключа. Требует использования активного токена. Нет.
pam_pkcs11 libpam_pkcs11 Универсальный модуль аутентификации. Возможна настройка разных способов проверки, в том числе без использования токенов (LDAP). Да.
pam_sss pam_sss Универсальный модуль аутентификации в домене службы sssd. Поддерживает аутентификацию с использованием ключевых носителей. Нет.

 

Использовать аутентификацию по сертификату (или ключу) целесообразно при наличии в инфраструктуре предприятия собственного PKI. В простейшем же случае для локальных пользователей возможна настройка аутентификации по паролю, сохраненному на токене (модуль pam_csp): для прохождения аутентификации необходимо предъявить токен (фактор владения), а также пин-код (фактор знания), после чего пароль пользователя будет автоматически извлечен из хранилища. Далее описывается пример процедуры подготовки токена и настройки АРМ для использования _pamcsp.

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

В данном примере предполагается использование Рутокен, однако общий принцип настройки будет аналогичен и для токенов других производителей.

1. Подготовка АРМ Администратора и инициализации токена

В случае, если используемый токен не поддерживается стандартными библиотеками, необходимо установить набор библиотек от вендора и указать интерфейсную библиотеку в кофигурационном файле /etc/security/pam_csp.conf (создать его, если не существует). Например:

[global]
pkcs11_module = librtpkcs11ecp.so

Далее необходимо инициализировать сам токен. В случае с Рутокен первоначальная инициализация токена производится специальной утилитой вендора — rtAdmin:

./rtadmin format --pin-change-policy both -r -l "LABEL" --new-so-pin 87654321

Произведем предварительную очистку смарт-карты и создадим новую структуру PKCS #15:

pkcs15-init --erase-card -p rutoken_ecp
pkcs15-init --create-pkcs15 --so-pin 87654321 --so-puk ""

, где --so-pin - пин-код администратора (Security Officer PIN), --so-puk - пустой, т.к. не используется для Рутокен.

Теперь присвоим контейнеру пин-код администратора (--so-pin) и пин-код пользователя (--pin):

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

Далее запишем на токен аутентификационную пару пароль-пользователь:

pam_csp_ctl -c -u administrator -s P@ssw0rd -p 12345678

, где -u - имя учетной записи пользователя ОС, -s - пароль учетной записи пользователя ОС, -p - пин-код пользователя токена.

Обратите внимание, что пароль пользователя вводится в терминал в открытом виде. После завершения процедуры настройки токена следует очистить историю введенных команд, либо на время его инициализации отключить сохранение истории команд в целом. В bash отключить историю команд можно с помощью set +o history (и соответственно set -o history для обратного включения).

Проверить корректность сохранения учетных данных (перечислить информацию о хранящихся УЗ) можно следующей командной:

pam_csp_ctl -l

2. Настройка рабочей станции пользователя

В первую очередь потребуется установить пакет libpam-csp, предоставляющий нужный нам PAM-модуль:

sudo apt install libpam-csp

Далее по аналогии с п. 1. может потребоваться установка дополнительных библиотек для работы с токеном. Важно не забыть указать необходимую интерфейсную библиотеку в /etc/security/pam_csp.conf.

После перезагрузки устройства будет доступна двухфакторная аутентификация (теперь при входе в систему или при запросе повышения привилегий будет запрашиваться пин-код пользователя контейнера), однако при этом сохранится и возможность входа по паролю (при отключенном токене). Для того, чтобы включить жесткую многофакторную аутентификацию в конфигурационный файл /etc/security/pam_csp.conf в секцию [global] необходимо добавить следующий параметр:

require_token = true

Отдельно стоит отметить, что при отключении токена сессия пользователя будет блокироваться — за это отвечает отдельная systemd-служба csp-monitor.

В случае потери возможности аутентификации по токену (например, при настройке и отладке самого механизма аутентификации) получить привилегировангый доступ к системе "по паролю" возможно через Recovery mode в GRUB (если дополнительно не включен запрет на отображение загрузчика).

Актуальную и более подробную информацию по настройке MFA в Astra Linux можно найти в оф. документации.

Предыдущая запись