Проброс 11 рутокенов средствами FreeRDP

Коротко о проблеме
С Windows удаётся пробросить на сервер 11 рутокенов одновременно, однако с Debian через FreeRDP удаётся пробросить максимум 10 рутокенов или меньше.

Дано
Windows Server 2012 R2 Standart с панелью управления рутокен и настроенным сервером терминалов.
11 ПК с Windows 10, к каждому из которых подключен 1 рутокен.
На каждом ПК c Windows 10 установлен VirtualBox и есть ВМ с Debian 9. Все ВМ с Debian одинаковые, каждая из которых содержит FreeRDP версии 2 из stretch-backports, libccid 1.4.26-1, pcscd 1.8.20-1, ifd-rutokens 1.0.4.
На ПК, к которому подключен рутокен S, дополнительно установлена панель управления рутокен.

Токены
Взяли токены, какие были.
Название; Версия; Количетсво
Рутокен ЭЦП Flash; 55.02.19.00; 1
Рутокен ЭЦП 2.0; 20.05.23.02; 2
Рутокен Lite; 54.01.09.00; 3
Рутокен Lite; 51.04.10.00; 4
Рутокен S; 51.00.36.00; 1

Шаги

  • К каждому из 11 ПК был подключен 1 рутокен.

  • С 11 ПК было выполнено 11 подключений по RDP средствами Windows с пробросом токена к серверу терминалов.

  • На сервере через диспетчер задач было зафиксировано 11 параллельно подключенных пользователей.

  • Все 11 пользователей подтвердили, что они видят рутокен в панели управления рутокен на сервере.

  • Пользователи отключились от сервера, пробросили токены в ВМ с Debian и выполнили подключение к терминальному серверу с пробросом токенов средствами FreeRDP (ключ /smartcard)

  • На сервере через диспетчер задач было зафиксировано 11 параллельно подключенных пользователей.

  • 8 пользователей подтвердили, что видят рутокен в панели сервера. 3 пользователя сообщили об ошибке "служба смарткарт не запущена" (панель управления рутокен была запущена до подключения по RDP)

Никак не получается пробросить более 10 токенов с Debian на Windows Server. Выше описана одна из попыток. Видимо существует проблема интеграции FreeRDP и рутокен, которая вызывает ограничение на количество терминальных сессий с пробросом рутокен.

Re: Проброс 11 рутокенов средствами FreeRDP

Здравствуйте.
Уточните, пожалуйста, токены не пробрасываются все время одни и те же? Или токены разные, но важно именно количество?
Можете на виртуальных машинах установить пакет pcsc-tools и перед подключением по RDP убедиться, что токен виден в виртуальной машине с помощью команды pcsc_scan?

Re: Проброс 11 рутокенов средствами FreeRDP

Уточните, пожалуйста, токены не пробрасываются все время одни и те же? Или токены разные, но важно именно количество?

По отдельности токены работают на Debian и пробрасываются по RDP. Проблема заключается именно в одновременном пробросе большого количества токенов по одному на пользователя.
Нам удавалось успешно пробросить эти же 11 рутокенов с Debian на Windows Server в пяти сессиях. То есть каждый из 5 пользователей пробрасывал 2 или 3 рутокена.

Можете на виртуальных машинах установить пакет pcsc-tools

Да. ВМ для тестирования рутокен.

перед подключением по RDP убедиться, что токен виден в виртуальной машине с помощью команды pcsc_scan?

Мы можем повторить эксперимент на Debian. Однако, прошлый занял порядка 16 человек * час (2 часа, 8 участников). Поэтому мы хотим минимизировать количество экспериментов. Возможно вы подскажите какие логи на стороне сервера можно собрать. На стороне клиента мы можем собрать FreeRDP с флагом -DWITH_SMARTCARD_INSPECT=ON и предоставить лог, также вывод pcscd -d и вывод pcsc_scan до проброса.

У вас есть возможность повторить эксперимент с пробросом 11-ти рутокенов с Debian на Windows Server?

Re: Проброс 11 рутокенов средствами FreeRDP

В системном логе на Windows Server в разделе Приложения или Система нет никаких ошибок?

pestov_ev пишет:

У вас есть возможность повторить эксперимент с пробросом 11-ти рутокенов с Debian на Windows Server?

К сожалению, такой возможности нет.

pestov_ev пишет:

3 пользователя сообщили об ошибке "служба смарткарт не запущена" (панель управления рутокен была запущена до подключения по RDP)

А пользователи после получения такой ошибки пробовали перезапускать Панель управления Рутокен или перезапускать сессию подключения по RDP только у пользователей с проблемой?

После подключения из Windows к серверу, пользователи выходили из сеанса или просто отключались без завершения сессии?

Re: Проброс 11 рутокенов средствами FreeRDP

В системном логе на Windows Server в разделе Приложения или Система нет никаких ошибок?

Во время тестирования Debian в журнале есть ошибка -- Панель управления рутокен выкинула исключение 0xc0000409.

Имя сбойного приложения: rtcontrol_panel.exe, версия: 4.8.8.0, метка времени: 0x5f467db5
Имя сбойного модуля: rtcontrol_panel.exe, версия: 4.8.8.0, метка времени: 0x5f467db5
Код исключения: 0xc0000409
Смещение ошибки: 0x0000000000264f50
Идентификатор сбойного процесса: 0x284c
Время запуска сбойного приложения: 0x01d6ef1c39761fc5
Путь сбойного приложения: C:\Windows\System32\Aktiv Co\rtControl_Panel\rtcontrol_panel.exe
Путь сбойного модуля: C:\Windows\System32\Aktiv Co\rtControl_Panel\rtcontrol_panel.exe
Идентификатор отчета: ce5f66b9-5b11-11eb-80e4-0800275b709a
Полное имя сбойного пакета: 
Код приложения, связанного со сбойным пакетом: 

После подключения из Windows к серверу, пользователи выходили из сеанса или просто отключались без завершения сессии?

В основном нажимали "отключиться".

А пользователи после получения такой ошибки пробовали перезапускать Панель управления Рутокен или перезапускать сессию подключения по RDP только у пользователей с проблемой?

Была попытка отключиться и подключиться по RDP заново, в панели управления рутокен осталась ошибка о не запущенной службе смарткарт. Была одна попытка перезапустить панель управления рутокен -- она не включилась. Ошибка из журнала Windows приложенная выше произошла примерно в это же время.

До тестирования одновременного проброса каждый токен по отдельности был проброшен с ВМ с debian на Windows Server. Токен было видно в панели управления рутокен. Это тестировалось на одном ноутбуке, в который поочерёдно были подключены все токены по одному за раз. Далее эта ВМ с Debian была экспортирована и распространена на 11 ПК/ноутбуков.

Re: Проброс 11 рутокенов средствами FreeRDP

А с каким ПО в дальнейшем планируется использовать эти токены?
Возможно, токены успешно пробрасываются, но возникает проблема именно с Панелью Управления Рутокен.

Re: Проброс 11 рутокенов средствами FreeRDP

С каким ПО планируется использовать уточню. На данный момент мне известно, что рутокены пробрасываются для электронной подписи документов.

Re: Проброс 11 рутокенов средствами FreeRDP

Пересылаю ответы на вопросы.

А с каким ПО в дальнейшем планируется использовать эти токены?

Токен будет использоваться для хранения ЭП и подписания документов в различных информационных системах.
Планируется пробрасывать токены со 150 Debian-клиентов на общий сервер.

Возможно, токены успешно пробрасываются, но возникает проблема именно с Панелью Управления Рутокен.

При подключении более 10 Рутокенов у новых пользователей сессия не определяет их. При этом при запуске Rutoken Control Panel видим, что служба смарт-карт не запущена. Перезапуск службы не решает эту проблему.
Токен не определяется только с незапущенной службой смарт-карт.

Re: Проброс 11 рутокенов средствами FreeRDP

Скорее всего проблема возникает из-за утечек памяти в клиенте freerdp https://github.com/FreeRDP/FreeRDP/issues/5891

Re: Проброс 11 рутокенов средствами FreeRDP

Мы собирём логи FreeRDP уровня warning или выше, в том числе для проверки связи с утечкой памяти. В логе, приложенном к issue, явно видно записи об утечках памяти.
Повторное тестирование запланировано на завтра.

Re: Проброс 11 рутокенов средствами FreeRDP

Провели повторное тестирование.
В предыдущем тестировании каждый токен был подключен к отдельному ПК, в текущем использовано 5 ПК, на некоторых из которых запускалось несколько ВМ, через каждую из которых прокидывался 1 рутокен на сервер.


Эксперимент 1


Действия на каждой ВМ Debian

  • Запущена ВМ

  • Рутокен проброшен в ВМ средствами VirtualBox

  • Рутокен проверен командой pcsc_scan

  • Выполнено подключение по RDP с пробросом токена
    xfreerdp /v:192.168.101.41 /u:User_${TOKEN_NUMBER} /p:P@ssw0rd /cert-ignore /smartcard /log-level:trace | tee log.txt

  • Запущена панель управления рутокен и проверено наличие рутокена в выпадающем списке

  • В случаи ошибок на предыдущем шаге производятся отладочные действия -- перезапуск панели управления  рутокен, переподключение к серверу

  • Подключение по RDP висит, ожидание готовности других ВМ

  • Выключается панель управления рутокен

  • Отключение от сервера "Пуск"→"Выключение"→"Отключиться"

  • Скинут лог FreeRDP с ВМ

Действия на Windows Server

  • Перезапущен сервер

  • К серверу подключились по RDP

  • После того как на всех клиентских ВМ были опробованы средства отладки проброса было проверено наличие 11-ти подключений в диспетчере задач

  • В таблицу (ниже) внесен последний результат проброса токена

  • Экспортирован журнал событий

Токены
№, Модель, Версия, Последний результат проброса
01, Рутокен ЭЦП Flash, 55.02.19.00, Служба смарт-карт не запущена
02, Рутокен Lite (1000), 51.04.10.02, Проброшен
03, Рутокен Lite (1000), 51.04.10.00, Служба смарт-карт не запущена
04, Рутокен Lite (1000), 51.04.10.00, Служба смарт-карт не запущена
05, Рутокен Lite (1000), 51.04.10.00, Служба смарт-карт не запущена
06, Рутокен Lite (1000), 51.04.10.00, Проброшен
07, Рутокен Lite (1000), 51.04.09.00, Проброшен
08, Рутокен Lite (1000), 51.04.10.00, Проброшен
09, Рутокен Lite (1000), 51.04.10.00, Проброшен
10, Рутокен Lite (1000), 51.04.09.00, Не запускается панель управления рутокен
11, Рутокен Lite (1000), 51.04.10.00, Проброшен

К каким ПК подключены токены:
ПК "А" -- 3, 4, 5, 11.
ПК "Б" -- 1, 2.
ПК "В" -- 6, 7, 10.
ПК "Г" -- 8.
ПК "Д" -- 9.

Результаты

С этих ВМ были собраны логи FreeRDP уровня trace. В этих логах отсутствует упоминание утечек, которые мы видим в приложенных к этому issue логах https://github.com/FreeRDP/FreeRDP/issues/5891.

pcsc_scan обнаружил токен ка каждой ВМ -- выводил название токена и его состояние "card inserted". На некоторых ВМ, как минимум на 7-ой

Эксперимент 2
Выполнялся так же как и первый, но со следующими отличиями:

  • Вместо Debian был использован ViPNet Terminal.

  • Так как pcsc_scan не обнаружил Рутокен ЭЦП Flash этот токены был заменен на Рутокен Lite, остальные токены использовались те же и имели те же номера. И этот Lite был перемещен в другой ПК.

  • Не были собраны логи FreeRDP

01, Проброшен
02, Проброшен
03, Служба смарт-карт не запущена
04, Проброшен
05, Служба смарт-карт не запущена
06, Проброшен
07, Служба смарт-карт не запущена
08, Проброшен
09, Проброшен
10, Не запускается панель управления рутокен
11, Проброшен

ПК "А" -- 3, 4, 5, 11.
ПК "Б" -- 2.
ПК "В" -- 1, 6, 7, 10.
ПК "Г" -- 8.
ПК "Д" -- 9.

Выводы
Проблема не связана с https://github.com/FreeRDP/FreeRDP/issues/5891
С 10-ый токеном возможно что-то не так, в случаи с остальныйми не прокидываются разные токены, не одни и те же.
Симптомы на Debian и ViPNet Terminal аналогичные.

Re: Проброс 11 рутокенов средствами FreeRDP

Добрый день.
Можете прислать логи подключения с ошибкой на averchenko@rutoken.ru

Re: Проброс 11 рутокенов средствами FreeRDP

Отправил логи FreeRDP с первого описанного вчера эксперимента.

Посмотрел наличие операций с токеном в логах "grep -rc smartcard". Такие операции отсутствуют в логах 3, 4, 5, но присутствуют во всех остальных. То есть нет операций с токенами в логах FreeRDP при пробросе тех рутокенов lite, для которых в панели управления рутокен отображалась ошибка "служба смарткарт не запущена". Видимо с сервера не приходили удаленные вызовы процедур для работы с токеном?

Re: Проброс 11 рутокенов средствами FreeRDP

Панель управления рутокен транслирует ошибку с клиента. То есть проблема со службой смарт-карт (сервисом pcscd) возникает именно на клиенте.
3, 4, 5 виртуалки расположены на одном хосте. При этом 11 токен проброшен успешно. Команда pcsc_scan на этих виртуалках показывала токен без ошибок?
В виртуальных машинах какой тип контроллера USB выбран? Он соответствует типу физического порта USB?
VirtualBox какой версии?

Re: Проброс 11 рутокенов средствами FreeRDP

Упс. Не получил уведомление о сообщении. Случайно прошел по ссылке "отписаться", вместо ссылки на сообщение. Далее постараюсь отвечать оперативно.

На ПК "А", к которому были подключены рутокены 3, 4, 5, 11:

  • В настройках всех ВМ был контроллер USB 2.0.

  • На этом ПК один из токенов был подключен к синему USB-порту, остальные 3 к черным. Номер единственного рутокена, который который был физически подключен к USB 3.0 и проброшен средствами VBox в ВМ с контроллером 2.0 мы не записали и не запомнили.

  • Команда pcsc_scan на 4-ёх ВМ с ПК "А" не выдавала ошибок.

  • VirtualBox Версия 6.1.16 r140961 (Qt5.6.2)