Подробный гайд: Автоблокировка экрана по PIN-коду Рутокен в РЕД ОС (MATE) через pkcs11 - Часть 1
pkcs11_eventmgr отвечает только за реакцию на извлечение Рутокена, например за автоматическую блокировку экрана.
То, что при разблокировке экрана запрашивается пароль или PIN, к pkcs11_eventmgr отношения уже не имеет.
Разблокировка экрана в MATE выполняется через PAM. Поэтому отдельно нужно настроить PAM-стек экранного блокировщика.
В MATE это обычно:
/etc/pam.d/mate-screensaver
Если вход в систему по PIN уже работает, а разблокировка заблокированного экрана всё равно требует пароль, чаще всего это означает, что:
pkcs11_eventmgrнормально блокирует экран;- но
mate-screensaverпри разблокировке не используетpam_pkcs11.so; - либо используется другой блокировщик / другой PAM-сервис;
- либо нет корректного сопоставления сертификата на Рутокене с пользователем Linux.
Ниже подробный гайд для РЕД ОС + MATE + Рутокен ЭЦП 2.0 Flash.
1. Важное предупреление
Перед правкой PAM-файлов обязательно держите открытым терминал с правами root или имейте возможность перейти в консоль:
Ctrl + Alt + F2
Ошибки в PAM могут привести к тому, что вход в систему станет невозможен.
Сделайте резервные копии:
sudo mkdir -p /root/pam-backup
sudo cp -a /etc/pam.d/mate-screensaver /root/pam-backup/ 2>/dev/null || true
sudo cp -a /etc/pam_pkcs11/pam_pkcs11.conf /root/pam-backup/ 2>/dev/null || true
sudo cp -a /etc/pam_pkcs11/pkcs11_eventmgr.conf /root/pam-backup/ 2>/dev/null || true
2. Определить, какой именно блокировщик экрана используется
Вы указали, что графическая оболочка MATE и используется mate-screensaver. Это хорошо, но на всякий случай проверим.
Выполните в терминале:
pgrep -af 'mate-screensaver|xscreensaver|light-locker|gnome-screensaver'
Если видите процесс вроде:
/usr/bin/mate-screensaver
значит блокировщик действительно mate-screensaver.
Если вместо него, например:
/usr/bin/light-locker
или:
/usr/bin/xscreensaver
То настраивать нужно уже не mate-screensaver, а соответствующий блокировщик:
| Блокировщик | Команда блокировки | PAM-файл |
|---|---|---|
mate-screensaver |
mate-screensaver-command --lock |
/etc/pam.d/mate-screensaver |
xscreensaver |
xscreensaver-command -lock |
/etc/pam.d/xscreensaver |
light-locker |
light-locker-command -l |
/etc/pam.d/light-locker |
gnome-screensaver |
gnome-screensaver-command --lock |
/etc/pam.d/gnome-screensaver |
Дальше я буду исходить из того, что используется именно mate-screensaver.
3. Проверить, что базовые компоненты установлены
Для работы Рутокена и PAM-аутентификации обычно нужны:
sudo dnf install -y pam_pkcs11 pcsc-lite pcsc-lite-ccid opensc pcsc-tools
Если пакет pcsc-tools недоступен, не критично — он нужен только для диагностики.
Включить и запустить службу PC/SC:
sudo systemctl enable --now pcscd.service
sudo systemctl enable --now pcscd.socket 2>/dev/null || true
Проверить статус:
systemctl status pcscd
Проверить наличие PKCS#11-библиотеки Рутокен:
ls -l /usr/lib64/librtpkcs11ecp.so
Если файла нет, найдите его:
find /usr/lib /usr/lib64 -name 'librtpkcs11*'
Для Рутокен ЭЦП 2.0 Flash обычно используется именно:
/usr/lib64/librtpkcs11ecp.so
4. Проверить, что система видит Рутокен через PKCS#11
Проверить слоты:
pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so --list-slots
Вы должны увидеть слот с токеном, например что-то похожее на:
Slot 0 (0x0): Rutoken ...
Проверить объекты на токене:
pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so --login --list-objects --type cert
Может потребоваться ввести PIN. Если сертификат есть, но вы хотите увидеть его subject, можно извлечь сертификат во временный файл.
Сначала посмотрите ID сертификата в выводе предыдущей команды, затем:
pkcs11-tool \
--module /usr/lib64/librtpkcs11ecp.so \
--login \
--read-object \
--type cert \
--id 01 \
--output-file /tmp/rutoken.cer
Где --id 01 замените на реальный ID вашего сертификата.
Посмотреть subject:
openssl x509 -inform DER -in /tmp/rutoken.cer -noout -subject -dates
Если сертификат в PEM-формате, используйте:
openssl x509 -inform PEM -in /tmp/rutoken.cer -noout -subject -dates
Пример subject:
subject=C = RU, O = Example, CN = Ivanov Ivan Ivanovich
Этот subject может понадобиться для сопоставления сертификата с пользователем Linux.
5. Проверить конфигурацию pam_pkcs11
Если вход в систему по PIN уже работает, скорее всего основной файл:
/etc/pam_pkcs11/pam_pkcs11.conf
уже настроен. Но если вы хотите проверить конфигурацию или настраиваете с нуля, вот рабочий пример для Рутокен ЭЦП 2.0.
Откройте файл:
sudo nano /etc/pam_pkcs11/pam_pkcs11.conf
Пример содержимого:
# /etc/pam_pkcs11/pam_pkcs11.conf
# Отладка. Для диагностики можно временно включить.
debug = false;
# Используемый модуль
use_pkcs11_module = rutoken_ecp;
# Политика проверки сертификата.
# Для рабочей инфраструктуры лучше использовать корректные сертификаты и, при необходимости,
# проверку цепочки:
# cert_policy = ca,signature;
# Для теста можно использовать более мягкие варианты, например:
cert_policy = signature;
# Мапперы для сопоставления сертификата пользователю Linux
use_mappers = file;
# Описание PKCS#11-модуля Рутокен
pkcs11_module rutoken_ecp {
module = /usr/lib64/librtpkcs11ecp.so;
description = "Rutoken ECP 2.0";
slot_num = 0;
# Варианты интерфейса ввода PIN:
# GTK - отдельное графическое окно
# INTERNAL - использовать диалог, предоставленный приложением, например экраном блокировки
# Если отдельный ввод PIN не появляется, можно попробовать INTERNAL.
ui_driver = INTERNAL;
}
# Маппер через файл сопоставления
mapper file {
mapper = file;
debug = false;
file = /etc/pam_pkcs11/card_mapping.conf;
}
Важное замечание про ui_driver
Если при разблокировке экрана появляется отдельное окно с запросом PIN, можно оставить:
ui_driver = GTK;
Если окно не появляется или теряется на фоне блокировки, попробуйте:
ui_driver = INTERNAL;
Если ваша версия pam_pkcs11 не понимает INTERNAL, верните GTK.
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.