Bug 53165

Summary: Не получает pam_authtok
Product: Sisyphus Reporter: makhotinvs <makhotinvs>
Component: pam_pkcs11Assignee: manowar <manowar>
Status: CLOSED WONTFIX QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: alimektor, ldv, manowar, max.gordeef, placeholder
Version: unstable   
Hardware: x86   
OS: Linux   
Attachments:
Description Flags
pam_lightdm
none
pam_pkcs11_jacarta - conf
none
pam_pkcs11_rutoken
none
krb5
none
sssd
none
system-auth none

Description makhotinvs@mosreg.tru 2025-02-20 13:30:17 MSK
Столкнулся с проблемой что при использовании pam_pkcs11, а далее получения билета pam_krb5 в PAM_AUTHTOK не содержит введенный пин-код (от pam_pkcs11), чтобы pam_krb5 мог использовать ранее введенный пин код. Сейчас получается для авторизации пользователя по сертификату необходимо вводить 2 пин-кода.
Comment 1 Evgeny Shesteperov 2025-02-24 22:29:48 MSK
Здравствуйте!

Предоставьте следующую информацию:

1. Операционная система, версия.
2. Обновлена ли система до текущего состояния P10?
3. Какой провайдер токена используется (пример: Rutoken)?
4. Сервер AD: Windows Server (версия) или Samba (ALT Linux)?
5. Желательно предоставить шаги конфигурации / настройки / инструкция для воспроизведения.
Comment 2 makhotinvs@mosreg.tru 2025-02-27 11:25:55 MSK
1. [root@mz-skb-gk-lin1 ~]# lsb_release -a
LSB Version:    n/a
Distributor ID: ALT
Description:    ALT Workstation 10.4 (Autolycus)
Release:        10.4
Codename:       Autolycus

2. Да обновление выполнено.
3. Rutoken ECP 2.0, Jacarta PKI
4. Windows Server 2019 
5. Файлы конфигурации прикладываю.
Comment 3 makhotinvs@mosreg.tru 2025-02-27 11:28:26 MSK
Created attachment 17826 [details]
pam_lightdm
Comment 4 makhotinvs@mosreg.tru 2025-02-27 11:31:23 MSK
Created attachment 17827 [details]
pam_pkcs11_jacarta - conf
Comment 5 makhotinvs@mosreg.tru 2025-02-27 11:33:23 MSK
Created attachment 17828 [details]
pam_pkcs11_rutoken
Comment 6 makhotinvs@mosreg.tru 2025-02-27 11:37:57 MSK
Created attachment 17829 [details]
krb5
Comment 7 makhotinvs@mosreg.tru 2025-02-27 11:38:33 MSK
Created attachment 17830 [details]
sssd
Comment 8 makhotinvs@mosreg.tru 2025-02-27 11:39:34 MSK
Created attachment 17831 [details]
system-auth
Comment 9 makhotinvs@mosreg.tru 2025-02-27 11:43:55 MSK
1. Устанавливаем pam_pkcs11
2. Устанавливаем JaCarta (https://www.aladdin-rd.ru/upload/downloads/JaCarta_UC/jacarta-3.1/lunix/distributions/jacartauc_3.1.2.3478_rpm_x64.zip) и Rutoken (librtpkcs11ecp)
3. В папку /etc/security/pam_pkcs11/cacerts копируем файлы root ca (sub ca) и хэшируем pkcs11_make_hash_link.
4. Правим файлы lightdm и system-auth переключаем в krb5
Comment 10 makhotinvs@mosreg.tru 2025-02-27 11:44:28 MSK
Comment on attachment 17830 [details]
sssd

>[sssd]
>config_file_version = 2
>services = nss, pam
>
># Managed by system facility command:
>## control sssd-drop-privileges unprivileged|privileged|default
>user = root
>
># SSSD will not start if you do not configure any domains.
>
>domains = D.M.R
>[nss]
>
>[pam]
>[domain/D.MO.RU]
>dyndns_ttl = 0
>dyndns_refresh_interval = 60
>dyndns_update_ptr = true
>dyndns_update = true
>id_provider = ad
>auth_provider = ad
>chpass_provider = ad
>access_provider = ad
>default_shell = /bin/bash
>fallback_homedir = /home/%d/%u
>debug_level = 0
>cache_credentials = true
>ad_gpo_ignore_unreadable = true
>ad_gpo_access_control = permissive
>ad_update_samba_machine_account_password = true
>pam_cert_auth = True
>p11_child_timeout = 120
>pam_p11_allowed_services = +cinnamon-screensaver, +mate-screensaver, +lightdm
>; cache_credentials = false
Comment 11 Evgeny Shesteperov 2025-03-12 21:24:41 MSK
Предоставьте дополнительную информацию:

> 3. В папку /etc/security/pam_pkcs11/cacerts копируем файлы root ca (sub ca) и хэшируем pkcs11_make_hash_link.

1. Инструкцию какого вендора вы используете? В официальных открытых инструкциях ALT Linux я данной информации не нашёл, особенно про утилиту pkcs11_make_hash_link.

2. Я вижу в отличие от нашего вендора: использование апстримной библиотеки Jacarta jcpkcs11-2-2.9.0.874-1 вместо libjcpkcs11-2.9.0.806-alt3, который используется в репозитории. Воспроизводится ли данная ошибка с использованием libjcpkcs11-2.9.0.806-alt3? 

3. Вывод # cat /usr/share/polkit-1/actions/org.debian.pcsc-lite.policy?
Comment 12 makhotinvs@mosreg.tru 2025-03-12 21:47:33 MSK
файл (Ответ для Evgeny Shesteperov на комментарий #11)
> Предоставьте дополнительную информацию:
> 
> > 3. В папку /etc/security/pam_pkcs11/cacerts копируем файлы root ca (sub ca) и хэшируем pkcs11_make_hash_link.
> 
> 1. Инструкцию какого вендора вы используете? В официальных открытых
> инструкциях ALT Linux я данной информации не нашёл, особенно про утилиту
> pkcs11_make_hash_link.

https://kbp-6.aladdin-rd.ru/index.php?View=entry&EntryID=245 взята за основу вот эта статья.

https://github.com/OpenSC/pam_pkcs11/blob/master/tools/pkcs11_make_hash_link

> 
> 2. Я вижу в отличие от нашего вендора: использование апстримной библиотеки
> Jacarta jcpkcs11-2-2.9.0.874-1 вместо libjcpkcs11-2.9.0.806-alt3, который
> используется в репозитории. Воспроизводится ли данная ошибка с
> использованием libjcpkcs11-2.9.0.806-alt3? 

Jacarta jcpkcs11-2-2.9.0.874-1 взято с оф сайта JaCarta. Но проблема аналогичная и на Rutoken ECP 2.0/Rutoken 3.0 с пакетом из репозитория.


> 3. Вывод # cat /usr/share/polkit-1/actions/org.debian.pcsc-lite.policy?

Изменения в этот файл не вносил в итоге, так как они не влияют. Проверял.

Сейчас оставил пока авторизацию pam_krb5 (логин в lightdm подставляется из pklogin_finder модуля pam_pkcs11, далее запрос пинкода) без использования pam_pkcs11 в lightdm
Comment 13 Evgeny Shesteperov 2025-03-16 21:08:57 MSK
Воспроизводится в p10.

Перепроверил также с модулем su.

pam_krb5 не получает пароля от pam_pkcs11 через PAM_AUTHTOK.
Comment 14 Dmitry V. Levin 2025-03-17 02:46:40 MSK
(In reply to Evgeny Shesteperov from comment #13)
> Воспроизводится в p10.
> 
> Перепроверил также с модулем su.
> 
> pam_krb5 не получает пароля от pam_pkcs11 через PAM_AUTHTOK.

Уточните, пожалуйста, почему это было перевешено именно на pam-config.
Comment 15 Evgeny Shesteperov 2025-03-19 09:33:17 MSK
(Ответ для Dmitry V. Levin на комментарий #14)
> Уточните, пожалуйста, почему это было перевешено именно на pam-config.

Повесил изначально на пакет, отвечающий за данную директорию.

# rpm -qf /etc/pam.d/
pam-config-1.9.1-alt1.noarch

Посмотрел, за что отвечает данный пакет, перевесил обратно на pam_pkcs11.
Comment 16 manowar@altlinux.org 2025-03-19 16:46:20 MSK
А объясните, пожалуйста, почему (и каким образом?) у вас ПИН-код используется где-то ещё, кроме токена? Это же такой набор циферок, который зашит в конкретное устройство или карту. А у вас, получается, ПИН-код используется где-то помимо аппаратного устройства (на контроллере домена?). Я не совсем понимаю, почему аутентификация у вас так устроена. И ещё интересный вопрос, как вы синхронизируйте этот код? Допустим Вася заметил, что Петя следил за тем, как он вводит ПИН-код и поэтому поменял его на своём токене. Вопрос, каким образом Вася теперь пройдёт через pam_krb5, если пароль будет передаваться через PAM_AUTHTOK?
Comment 17 makhotinvs@mosreg.tru 2025-03-21 08:44:20 MSK
(Ответ для manowar@altlinux.org на комментарий #16)
> А объясните, пожалуйста, почему (и каким образом?) у вас ПИН-код
> используется где-то ещё, кроме токена? Это же такой набор циферок, который
> зашит в конкретное устройство или карту. А у вас, получается, ПИН-код
> используется где-то помимо аппаратного устройства (на контроллере домена?).
> Я не совсем понимаю, почему аутентификация у вас так устроена. И ещё
> интересный вопрос, как вы синхронизируйте этот код? Допустим Вася заметил,
> что Петя следил за тем, как он вводит ПИН-код и поэтому поменял его на своём
> токене. Вопрос, каким образом Вася теперь пройдёт через pam_krb5, если
> пароль будет передаваться через PAM_AUTHTOK?

Для понимания работы авторизации в конфиге lightdm:
1) Если вставлена физически смарт карта Rutoken запрос пинкода авторизация, если нет то пропускаем
auth            optional        pam_pkcs11.so card_only config_file=/etc/security/pam_pkcs11/pam_pkcs11_rutoken.conf
2) Если вставлена карта JaCarta запрос пинкода, если не вставлена пропускаем
auth            optional        pam_pkcs11.so card_only config_file=/etc/security/pam_pkcs11/pam_pkcs11_jacarta.conf
3) Если по 1 или 2 пункту были успехи то ЗАПРОС ПИН КОДА и авторизация с получением билета kerberos. Вопрос зачем пользователю вводить ещё раз свой пин код за 1 проход авторизации за рабочим местом?! Для этого PIN должен передаться с помощью pam_authtok из pam_pkcs11. 

Если токен ни 1 токен не был вставлен то запрос логина и пароля через pam_krb5 и получения билета kerberos и вход
auth            sufficient      pam_krb5.so try_pkinit use_first_pass
Comment 18 makhotinvs@mosreg.tru 2025-03-21 08:57:46 MSK
> И ещё интересный вопрос, как вы синхронизируйте этот код? Допустим Вася заметил,
> что Петя следил за тем, как он вводит ПИН-код и поэтому поменял его на своём
> токене.

Каждый пользователя имеет свой токен входа, соответственно каждый пользователь может изменить свой пин. Мы его не храним не синхронизируем он нужен только чтоб прочитать закрытый ключ для авторизации.
Comment 19 manowar@altlinux.org 2025-03-21 14:17:45 MSK
Всё ещё не понятно: у вас пользователь получает билет kerberos по ПИН-коду? Каким образом это возможно?

Предположение: может быть ПИН-код запрашивается дважды потому, что pam_pkcs11.so дважды упоминается в конфигурации PAM?
Comment 20 makhotinvs@mosreg.tru 2025-03-21 18:20:22 MSK
(Ответ для manowar@altlinux.org на комментарий #19)
> Всё ещё не понятно: у вас пользователь получает билет kerberos по ПИН-коду?
> Каким образом это возможно?
> Предположение: может быть ПИН-код запрашивается дважды потому, что
> pam_pkcs11.so дважды упоминается в конфигурации PAM?

Пользователь вводит пин код от токена (Rutoken/Jacarta) где храниться открытый и закрытый ключ, далее pam_krb5 получает билет с использвоанием сертификата открытого и закрытого ключа который находится на токене.

Предположение не верное - описал выше в ответе порядок прохождения pam и указал что если ключа нет то "пропуск" - pam_pkcs11 не может запросить PIN от токена которого нет в устройстве.
Comment 21 makhotinvs@mosreg.tru 2025-03-21 18:23:50 MSK
Я так понимаю если такие вопросы у исполнителя по багу то лучше не ждать вообще решения проблемы.