Проброс токена через rdp linux

Подключение по RDP с Windows на Linux с пробросом Rutoken ECP

Есть задача подключаться с Windows на Linux Debian 11.6 с использованием Рутокена ECP.
Токен был инициализирован через панель управления Рутокен Windows. Сертификат сгенерирован средстами на стороне Windows.
На Debian установлен XRDP, XORGXRDP

xorgxrdp/stable,now 1:0.2.12-1 amd64 [installed,automatic] xrdp/stable,now 0.9.12-1.1 amd64 [residual-config]

Обе машины находятся в домене. Авторизация по PAM. PAM настроил, но есть сомнение что правильно в части использования токена.
Авторизация проходит успешно по логину и паролю.
Но Debian упорно не хочет видеть Рутокен.

root@testtslinux:~# pcsc_scan Using reader plug'n play mechanism Scanning present readers. Waiting for the first reader. \

В /etc/pam.d/common-auth вписал строку

auth [success=1 default=ignore] pam_pkcs11.so

В /etc/pam_pkcs11/pam_pkcs11.conf настроил конфиг для работы с токеном:

. use_pkcs11_module = rutokenecp; . pkcs11_module rutokenecp < module = /usr/lib/librtpkcs11ecp.so; description = "RuToken pkcs#11 module"; slot_num = 0; support_threads = false; ca_dir = /etc/pam_pkcs11/cacerts; crl_dir = /etc/pam_pkcs11/crls; cert_policy = signature, ca, oscp_on; >

В /etc/pam_pkcs11/cacerts положил сертификат ЦС домена.

Когда подключаюсь по RDP к Debian в логах XRDP вижу ошибки, но сказать наверняка, что это связано с тем, что рутокен не виден, не могу.

[ERROR] xrdp_sec_recv: xrdp_mcs_recv failed [20230530-05:30:15] [ERROR] xrdp_rdp_recv: xrdp_sec_recv failed [20230530-05:30:15] [ERROR] libxrdp_process_data: xrdp_rdp_recv failed [20230530-05:30:15] [ERROR] xrdp_process_data_in: xrdp_process_loop failed [20230530-05:30:15] [ERROR] SSL_write: I/O error [20230530-05:30:15] [ERROR] xrdp_iso_send: trans_write_copy_s failed [20230530-05:30:15] [ERROR] Sending [ITU T.125] DisconnectProviderUltimatum failed [20230530-05:30:16] [INFO ] Socket 12: AF_INET connection received from 192.168.13.236 port 57550 [20230530-05:30:16] [INFO ] Using default X.509 certificate: /etc/xrdp/cert.pem [20230530-05:30:16] [INFO ] Using default X.509 key file: /etc/xrdp/key.pem [20230530-05:30:16] [INFO ] Security protocol: configured [SSL|RDP], requested [SSL|HYBRID|HYBRID_EX|RDP], selected [SSL] [20230530-05:30:16] [ERROR] SSL_read: I/O error [20230530-05:30:16] [ERROR] libxrdp_force_read: header read error [20230530-05:30:16] [ERROR] Processing [ITU-T T.125] Connect-Initial failed [20230530-05:30:16] [ERROR] [MCS Connection Sequence] receive connection request failed [20230530-05:30:16] [ERROR] xrdp_sec_incoming: xrdp_mcs_incoming failed [20230530-05:30:16] [ERROR] xrdp_rdp_incoming: xrdp_sec_incoming failed [20230530-05:30:16] [ERROR] xrdp_process_main_loop: libxrdp_process_incoming failed [20230530-05:30:16] [INFO ] Socket 12: AF_INET connection received from 192.168.0.1 port 57552 [20230530-05:30:16] [ERROR] xrdp_iso_send: trans_write_copy_s failed [20230530-05:30:16] [INFO ] Using default X.509 certificate: /etc/xrdp/cert.pem [20230530-05:30:16] [ERROR] Sending [ITU T.125] DisconnectProviderUltimatum failed [20230530-05:30:16] [INFO ] Using default X.509 key file: /etc/xrdp/key.pem [20230530-05:30:16] [INFO ] Security protocol: configured [SSL|RDP], requested [SSL|HYBRID|HYBRID_EX|RDP], selected [SSL] [20230530-05:30:16] [INFO ] Connected client computer name: COMP [20230530-05:30:16] [WARN ] Received [MS-RDPBCGR] TS_UD_HEADER type 0xc006 is unknown (ignored) [20230530-05:30:16] [WARN ] Received [MS-RDPBCGR] TS_UD_HEADER type 0xc00a is unknown (ignored) [20230530-05:30:16] [INFO ] xrdp_load_keyboard_layout: Keyboard information sent by the RDP client, keyboard_type:[0x04], keyboard_subtype:[0x00], keylayout:[0x00000409] [20230530-05:30:16] [INFO ] xrdp_load_keyboard_layout: model [] variant [] layout [us] options [] [20230530-05:30:16] [INFO ] TLS connection established from 192.168.0.1 port 57552: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 [20230530-05:30:16] [INFO ] xrdp_caps_process_pointer: client supports new(color) cursor [20230530-05:30:16] [INFO ] xrdp_process_offscreen_bmpcache: support level 1 cache size 10485760 MB cache entries 100 [20230530-05:30:16] [INFO ] xrdp_caps_process_codecs: nscodec, codec id 1, properties len 3 [20230530-05:30:16] [WARN ] xrdp_caps_process_codecs: unknown codec id 5 [20230530-05:30:16] [INFO ] xrdp_caps_process_codecs: RemoteFX, codec id 3, properties len 49 [20230530-05:30:16] [INFO ] Loading keymap file /etc/xrdp/km-00000409.ini [20230530-05:30:16] [WARN ] local keymap file for 0x00000409 found and doesn't match built in keymap, using local keymap file [20230530-05:30:27] [INFO ] connecting to sesman on 127.0.0.1:3350 [20230530-05:30:27] [INFO ] xrdp_wm_log_msg: sesman connect ok [20230530-05:30:27] [INFO ] sesman connect ok [20230530-05:30:27] [INFO ] sending login info to session manager. Please wait. [20230530-05:30:29] [INFO ] xrdp_wm_log_msg: login failed for user user [20230530-05:30:29] [INFO ] login failed for user user 
[20230530-05:07:06] [ERROR] sesman_data_in: scp_process_msg failed [20230530-05:07:06] [ERROR] sesman_main_loop: trans_check_wait_objs failed, removing trans [20230530-05:30:27] [INFO ] Socket 12: AF_INET connection received from 127.0.0.1 port 33210 [b][20230530-05:30:27] [INFO ] PAM: Smartcard authentication starts[/b] [b][20230530-05:30:27] [ERROR] PAM: Error 2306: No suitable token available[/b] [b][20230530-05:30:29] [ERROR] pam_authenticate failed: Authentication failure[/b] [20230530-05:30:29] [INFO ] AUTHFAIL: user=user ip=192.168.0.1 time=1685439029 [20230530-05:30:29] [ERROR] sesman_data_in: scp_process_msg failed [20230530-05:30:29] [ERROR] sesman_main_loop: trans_check_wait_objs failed, removing trans

На Windows стоят драйвера версии 4.16.0.0.

Читайте также:  Рамки окна linux mint

На Debian установлены следующие пакеты:

libccid/stable,now 1.4.34-1 amd64 [installed] libpcsclite1/stable,now 1.9.1-1 amd64 [installed,automatic] pcscd/stable,now 1.9.1-1 amd64 [installed] pcsc-tools/stable,now 1.5.7-1 amd64 [installed] opensc/stable,now 0.21.0-1 amd64 [installed]

Источник

RDP, смарт-карты и СЗИ НСД

*ночное включение передачи для полуночных НСДшников*
Который год бьюсь с маленькой частной проблемкой (в масштабах страны, ага) совместимости AstraLinux SpecialEdition (и не только) и СЗИ НСД SecretNet/SecretNetStudio при использовании персональных идентификаторов (eToken, Rutoken, etc) в RDP-сессиях.
Краткая суть проблемы: при опросе идентификаторов средствами SN/SNS в терминальной сессии используются некие «дополнительные вызовы» функции ScardLocateCardsByATR. Что, к сожалению, не полностью поддерживается утилитой freerdp-x11 версии 2 (и всеми обертками над ним типа Remmina).
Проект freerdp-x11 переживает второе дыхание, но переписан с 0 относительно прошлой версии (которая, кстати, таких проблем совместимости не имеет и, в то же время, входит в состав ALSE 1.5). В ALSE 1.6, соответственно, перекочевал из Debian 9, а в ALSE 1.7 — (модуль экстрасенсорики подсказывает) перекочует из Debian 10.
В сущности, за неимением альтернативы, разобрался, что некорректная поддержка функции ScardLocateCardsByATR связана с дочерним проектом разработчиков freerdp-x11 — библиотекой winpr. Увы, запросы и к одним разработчикам, и к другим особого эффекта не дают, поскольку конкретика вызовов ScardLocateCardsByATR сокрыта в недрах СЗИ НСД SecretNet/SecretNetStudio. Путь оказался слишком тернист: нужно допросить «Код Безопасности», чтобы они дали информацию, требуемую разработчиками winpr, которые внесут изменения (возможно) в их библиотеку, которую (возможно) будут использовать с новым релизом freerdp-x11, который (возможно) попадет в Debian 10, из которого (возможно) попадет в ALSE 1.7 в рамках обновлений и инспекционного контроля. И самый первый шаг его уж больно сложен: «Код безопасности» не спешит делиться информацией.
Внезапное условное решение: взглянул на альтернативный и старый проект — rdesktop, от которого отказался еще в 2013 г. (уж больно он был падуч и багован). Оказалось, проект 2 года назад ожил и пофиксил часть багов. И, внезапно, в нем задача обработки вызовов решается на 4+. Для корректного проброса идентификатора в RDP-сессию через rdesktop требуется вот такой ключ вызова: -r scard:»имя-идентификатора-в-системе«=»имя-идентификатора-в-Win;имя-организации-разработчика-идентификатора« (ключи типа -k -e -E -5 -P -K добавить по вкусу, чтобы уменьшить нагрузку на клиента и сеть, но только при условии корректной настройки сервера). Имя идентификатора в локальной системе можно узнать по выхлопу утилиты pcsc_scan. Имя идентификатора в Win рекомендую узнавать, подключившись к удаленному серверу через Windows-клиент (это имя на поведение SN/SNS не влияет, но может поломать работу с идентификатором как со смарт-картой родными утилитами).
К чему вся эта простыня текста? Primo, памятка самому себе. Secundo, помощь лицам, столкнувшимся со схожими проблемами (уверен, такие найдутся). Tertio, для наглядности — авось при разработке/сертификации ALSE 1.7 или ее обновлений rdesktop будет включен в состав или случайно не выпилен из него.

Читайте также:  Linux serial number monitor

ЗЫ Лучше бы «Коду безопасности» переписать свой драйвер и выпилить из него указанные «дополнительные вызовы». Или разработчикам freerdp-x11 пофиксить winpr для их обработки. Или разработчикам rdesktop допилить проект до нормального состояния — да, указанную задачу он решает, но как были у него проблемы с клавиатурным вводом и не только, так и остались. Эх, мечты-мечты.
И первым, и вторым, и третьим уже писал. Результата пока нет (см. опус про тернистый путь).

Источник

Проброс токена через rdp linux

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

Настройка рабочего окружения

Тонкий Linux терминал должен отвечать следующим требованиям:

  • наличие libpcsclite , pcscd
  • наличие установленного драйвера (только для Рутокен S)
  • наличие libccid (только для Рутокен ЭЦП)
  • наличие rdesktop, скомпилированного с поддержкой смарт-карт.

Для Рутокен S

Итак, для работы с Рутокен S нам потребуются libpcsclite, pcscd и драйвер Рутокен S.

Для Рутокен ЭЦП

Итак, для работы с Рутокен ЭЦП нам потребуются libpcsclite, pcscd и libccid.

Драйвер устройства

Программное обеспечение pcsc-lite представляет собой аналог Windows ресурс-менеджера winscard.dll для *nix-платформ.

Демон pcscd работает со смарт-картами через своего рода «драйверы», которые обычно находятся в системном каталоге /usr/lib/pcsc/drivers.

Для Рутокен S

Для Рутокен S существует специальный драйвер, который можно скачать на странице http://www.rutoken.ru/support/download/drivers-for-nix/, запустить его и следовать указаниям установщика.

Для Рутокен ЭЦП

Для Рутокен ЭЦП драйвером является стандартная библиотека libccid , которая поддерживает почти все известные ccid-устройства. Иногда случается так, что версия libccid слишком стара для поддержки Рутокен ЭЦП.

В таком случае нужно конфигурационный файл

/usr/lib/pcsc/drivers/ifd-bundle/Contents/Info.plist (обычно он находится тут)

открыть в любом текстовом редакторе и добавить следующие данные о Рутокен ЭЦП:

Читайте также:  Аналог irfanview in linux

в массиве ifdVendorID
добавить 0x0A89

в массиве ifdProductID
добавить 0x0030

в массиве ifdFriendlyName
добавить Aktiv Rutoken ECP

Rdesktop

Для поддержки смарт-карт Rdesktop должен быть скомпилирован с флагом —enable-smartcard.

Не во всех linux дистрибутивах rdesktop распространяется с такой опцией, но пакет rdesktop-smartcard достаточно часто встречается в сторонних репозиториях и найти его для нужного дистрибутива обычно не представляет проблем.

Для того, чтобы rdesktop попытался увидеть Рутокен, ему нужно указать опцию:

Источник

Оцените статью
Adblock
detector