Подробный гайд: Автоблокировка экрана по PIN-коду Рутокен в РЕД ОС (MATE) через pkcs11 - Часть 4
18. Если вход по PIN работает, а разблокировка нет: полезная проверка
Посмотрите, где уже настроен pam_pkcs11:
sudo grep -R "pam_pkcs11" /etc/pam.d/
Например, если вход по Рутокену работает через дисплейный менеджер, вы можете увидеть что-то в файлах:
/etc/pam.d/lightdm
/etc/pam.d/gdm-password
/etc/pam.d/sddm
/etc/pam.d/system-auth
/etc/pam.d/password-auth
Если там уже есть рабочая строка, например:
auth sufficient pam_pkcs11.so
или:
auth sufficient pam_pkcs11.so use_first_pass
то аналогичную строку можно использовать и в /etc/pam.d/mate-screensaver.
Но важно ставить её до строки:
auth include password-auth
или:
auth include system-auth
19. Вариант только по Рутокену, без пароля
Если вам нужно, чтобы разблокировка была только по Рутокену, без возможности ввода пароля, используйте более строгий вариант.
Пример:
#%PAM-1.0
auth requisite pam_pkcs11.so
auth required pam_deny.so
account include password-auth
password include password-auth
session include password-auth
Или:
#%PAM-1.0
auth requisite pam_pkcs11.so
auth required pam_deny.so
account include system-auth
password include system-auth
session include system-auth
Внимание
Такой вариант безопаснее, но опаснее административно. Если Рутокен забыт, сломан, заблокирован по PIN или потерян, вы не сможете разблокировать экран обычным паролем. Придётся использовать root-консоль или восстановление.
Для начала лучше использовать вариант с запасным паролем:
auth sufficient pam_pkcs11.so
auth include password-auth
А после стабильной проверки уже можно переходить на строгий режим.
20. Типовые ошибки и решения
Ошибка: экран блокируется, но при разблокировке просит пароль
Причина:
- не настроен
/etc/pam.d/mate-screensaver; - используется другой блокировщик;
pam_pkcs11.soстоит послеpam_unix;- нет сопоставления сертификата с пользователем.
Решение:
sudo grep -R "pam_pkcs11" /etc/pam.d/
sudo tail -f /var/log/secure
Добавить:
auth sufficient pam_pkcs11.so
auth include password-auth
в /etc/pam.d/mate-screensaver.
Ошибка: в логе нет pam_pkcs11, только pam_unix
Причина:
- файл /etc/pam.d/mate-screensaver не читается;
- блокировщик использует другой PAM-сервис.
Решение:
Проверить, какой процесс блокирует экран:
pgrep -af 'mate-screensaver|xscreensaver|light-locker|gnome-screensaver'
Настроить соответствующий PAM-файл.
Ошибка: pam_pkcs11 пишет, что не может загрузить модуль
Примеры сообщений:
Cannot find pkcs11 module
cannot dlopen pam_pkcs11.so
Решение:
Проверить наличие:
ls -l /usr/lib64/security/pam_pkcs11.so
ls -l /usr/lib64/librtpkcs11ecp.so
При необходимости использовать полный путь в PAM:
auth sufficient /usr/lib64/security/pam_pkcs11.so
Ошибка: no certificate found
Причина:
- Рутокен не виден;
- не запущен
pcscd; - неверная библиотека;
- неверный
slot_num; - токен занят другим приложением.
Решение:
systemctl status pcscd
pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so --list-slots
Если слот не 0, можно попробовать указать реальный номер слота в /etc/pam_pkcs11/pam_pkcs11.conf.
Ошибка: сертификат есть, но пользователь не определяется
Сообщения могут быть похожи на:
no matching user found
cannot map certificate to user
Решение:
Проверить:
cat /etc/pam_pkcs11/card_mapping.conf
Файл должен содержать строку вида:
subject = "/C=RU/O=Example/CN=..."; user = ваш_логин;
Ошибка: сертификат не проходит проверку
Сообщения:
certificate not trusted
unable to verify certificate
certificate policy error
Решение:
Проверить параметр:
cert_policy
В /etc/pam_pkcs11/pam_pkcs11.conf.
Для теста можно временно использовать:
cert_policy = signature;
Или, если нужно полностью отключить строгую проверку на время диагностики:
cert_policy = none;
Для рабочей инфраструктуры лучше использовать корректную цепочку сертификатов и настройку:
cert_policy = ca,signature;
Ошибка: pkcs11_eventmgr не блокирует экран
Причина:
- процесс не запущен;
- неправильный путь к команде;
- команде не хватает
DISPLAYилиDBUS_SESSION_BUS_ADDRESS; - используется не
mate-screensaver, а другой блокировщик.
Решение:
Проверить процесс:
pgrep -af pkcs11_eventmgr
Временно использовать действие:
action = "/usr/bin/touch /tmp/rutoken_removed";
Если файл создаётся, значит события обрабатываются.
Далее заменить действие на:
action = "/usr/bin/loginctl lock-session";
или:
action = "/usr/bin/dbus-send --session --type=method_call --dest=org.mate.ScreenSaver /org/mate/ScreenSaver org.mate.ScreenSaver.Lock";
21. Полный итоговый рабочий пример для MATE + Рутокен
/etc/pam_pkcs11/pkcs11_eventmgr.conf
pkcs11_eventmgr
{
daemon = true;
debug = false;
polling_time = 1;
expire_time = 0;
pkcs11_module = /usr/lib64/librtpkcs11ecp.so;
event card_insert {
on_error = ignore;
action = "/usr/bin/true";
}
event card_remove {
on_error = ignore;
action = "/usr/bin/mate-screensaver-command --lock";
}
event expire_time {
on_error = ignore;
action = "/usr/bin/true";
}
}
Если mate-screensaver-command не работает, заменить card_remove на:
action = "/usr/bin/loginctl lock-session";
или:
action = "/usr/bin/dbus-send --session --type=method_call --dest=org.mate.ScreenSaver /org/mate/ScreenSaver org.mate.ScreenSaver.Lock";
/etc/xdg/autostart/smartcard-screensaver.desktop
[Desktop Entry]
Type=Application
Name=Smart Card Screensaver
Comment=Lock screen on Rutoken removal
Exec=/usr/bin/pkcs11_eventmgr daemon
Terminal=false
NoDisplay=true
Hidden=false
X-GNOME-Autostart-enabled=true
OnlyShowIn=MATE;
/etc/pam.d/mate-screensaver
Вариант с возможностью разблокировки паролем:
#%PAM-1.0
auth sufficient pam_pkcs11.so
auth include password-auth
account include password-auth
password include password-auth
session include password-auth
Если система использует system-auth:
#%PAM-1.0
auth sufficient pam_pkcs11.so
auth include system-auth
account include system-auth
password include system-auth
session include system-auth
Если нужно строго только по Рутокену:
#%PAM-1.0
auth requisite pam_pkcs11.so
auth required pam_deny.so
account include password-auth
password include password-auth
session include password-auth
22. Что проверить в вашем случае в первую очередь
Судя по описанию, у вас уже работает вход в систему по PIN и терминальная аутентификация.
Значит, скорее всего, нужно сделать только одно:
Добавить pam_pkcs11.so в файл:
/etc/pam.d/mate-screensaver
до строки auth include ....
То есть минимально:
sudo cp -a /etc/pam.d/mate-screensaver /root/pam-backup/
sudo nano /etc/pam.d/mate-screensaver
Привести к виду:
#%PAM-1.0
auth sufficient pam_pkcs11.so
auth include password-auth
account include password-auth
password include password-auth
session include password-auth
Затем:
mate-screensaver-command --lock
и проверить разблокировку Рутокеном. Если в логах /var/log/secure видно, что pam_pkcs11 вызывается, но PIN не принимается, значит нужно смотреть маппинг сертификата и политику сертификатов в /etc/pam_pkcs11/pam_pkcs11.conf.
23. Краткий вывод
Ваш конфиг pkcs11_eventmgr.conf в целом подходит для автоблокировки при извлечении Рутокена. Основная проблема, вероятнее всего, не в нём. Для разблокировки заблокированного экрана нужно отдельно настроить PAM для mate-screensaver.
Главное:
pkcs11_eventmgr— блокирует экран при извлечении токена.mate-screensaver— разблокирует экран через PAM.- Чтобы разблокировка принимала PIN, в
/etc/pam.d/mate-screensaverдолжен бытьpam_pkcs11.soдо обычной парольной аутентификации.
4. Действие блокировки лучше указывать полным путём:
action = "/usr/bin/mate-screensaver-command --lock";
5. Если команда блокировки не срабатывает из демона, используйте:
action = "/usr/bin/loginctl lock-session";
или:
action = "/usr/bin/dbus-send --session --type=method_call --dest=org.mate.ScreenSaver /org/mate/ScreenSaver org.mate.ScreenSaver.Lock";
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.