Подробный гайд: Проброс 11 Рутокенов с Debian на Windows Server через FreeRDP - Часть 5

Гайд по диагностике и решению проблемы проброса 11 Рутокенов через FreeRDP с Debian на Windows Server. Разбор ошибок VirtualBox, pcscd, драйверов и настроек RDP.

2026.11.09                  


Подробный гайд: Проброс 11 Рутокенов с Debian на Windows Server через FreeRDP - Часть 5Подробный гайд: Проброс 11 Рутокенов с Debian на Windows Server через FreeRDP - Часть 5

11. Практический скрипт диагностики внутри каждой ВМ

Можно использовать такой скрипт для сбора состояния:

#!/bin/bash

LOG=/tmp/rutoken-diag-$(hostname)-$(date +%Y%m%d-%H%M%S).log

exec > >(tee "$LOG") 2>&1

echo "=== Date ==="
date

echo
echo "=== Hostname ==="
hostname

echo
echo "=== OS ==="
cat /etc/os-release

echo
echo "=== Kernel ==="
uname -a

echo
echo "=== USB devices ==="
lsusb

echo
echo "=== PC/SC packages ==="
dpkg -l | grep -E 'pcscd|pcsc-tools|libccid|ifd-rutokens|freerdp' || true

echo
echo "=== PC/SC service ==="
systemctl status pcscd.service --no-pager || true
systemctl status pcscd.socket --no-pager || true

echo
echo "=== PC/SC drivers ==="
ls -l /usr/lib/pcsc/drivers/ || true

echo
echo "=== Missing libs in PC/SC drivers ==="
find /usr/lib/pcsc/drivers -type f -name '*.so*' -print -exec ldd {} \; 2>/dev/null | grep -B1 'not found' || true

echo
echo "=== Readers via opensc-tool ==="
opensc-tool -l || true

echo
echo "=== pcsc_scan short output ==="
timeout 5 pcsc_scan || true

echo
echo "=== FreeRDP version ==="
xfreerdp /version 2>/dev/null || xfreerdp --version 2>/dev/null || true

echo
echo "=== FreeRDP smartcard help ==="
xfreerdp --help 2>/dev/null | grep -i smartcard || true

echo
echo "=== Log saved to $LOG ==="


Запуск:

chmod +x diag.sh
./diag.sh

Полученный файл можно прикладывать к обращению в поддержку.


12. Рекомендуемая рабочая команда подключения

Для обычной рабочей сессии после успешной диагностики рекомендую такой вид:

xfreerdp \
  /v:SERVER_ADDRESS \
  /u:USERNAME \
  /d:DOMAIN \
  /smartcard \
  /network:lan \
  /dynamic-resolution \
  /clipboard \
  /log-level:INFO

Если нужна глубокая диагностика:

WLOG_LEVEL=TRACE xfreerdp \
  /v:SERVER_ADDRESS \
  /u:USERNAME \
  /d:DOMAIN \
  /smartcard \
  /network:lan \
  2>&1 | tee ~/freerdp-trace.log

Если в ВМ несколько читателей, попробуйте явное указание:

xfreerdp \
  /v:SERVER_ADDRESS \
  /u:USERNAME \
  /d:DOMAIN \
  /smartcard:"Aktiv Co. Rutoken Lite 00 00" \
  /log-level:TRACE

13. Типовые ошибки, которые встречаются в таких сценариях

Ошибка 1: Панель Рутокен запущена до подключения

Симптом:

служба смарткарт не запущена

при том, что служба на сервере работает.

Решение:

  • подключиться по RDP;
  • только после этого запустить панель;
  • если панель уже была открыта — перезапустить ее;
  • проверить certutil -scinfo.

Ошибка 2: Токен не дошел до ВМ

Симптом:

lsusb не видит токен

Решение:

  • проверить фильтр VirtualBox;
  • проверить VBoxManage list usbhost;
  • переустановить токен в фильтр;
  • перезапустить ВМ;
  • проверить другой порт.

Ошибка 3: Токен виден в lsusb, но не виден в pcsc_scan

Симптом:

устройство есть, читателя нет

Решение:

  • перезапустить pcscd;
  • проверить ifd-rutokens;
  • проверить конфликт libccid и ifd-rutokens;
  • обновить драйвер Рутокен;
  • проверить недостающие библиотеки.

Ошибка 4: В ВМ два читателя на один токен

Симптом:

opensc-tool -l показывает больше читателей, чем физических токенов

Решение:

  • отключить лишний драйвер;
  • явно указывать нужный читатель в FreeRDP;
  • проверить, не создает ли токен несколько интерфейсов;
  • использовать только один активный интерфейс.

Ошибка 5: Все 11 подключаются одновременно и часть падает

Симптом:

при одновременном подключении 11 сессий часть токенов не появляется

Решение:

  • подключать поэтапно;
  • увеличить паузы между подключениями;
  • перезапускать pcscd перед подключением;
  • проверить серверные журналы;
  • обновить клиент и серверные патчи.

Ошибка 6: Старые отключенные сеансы

Симптом:

пользователь переподключается, но токен не работает

Решение:

  • использовать полный logoff;
  • удалить старые сеансы;
  • перезагрузить сервер перед тестом.

14. Рекомендуемый порядок действий именно для вашего случая

Этап 1. Исключить панель Рутокен

  1. Перезагрузить сервер.
  2. Убедиться, что служба смарт-карт работает.
  3. Подключить пользователей через FreeRDP.
  4. Не запускать панель Рутокен до подключения.
  5. После входа проверить:


certutil -scinfo

Если все 11 видны через certutil, а панель у некоторых не показывает токен, проблема в панели/кэше/драйвере панели.


Этап 2. Проверить каждую ВМ локально

На каждой ВМ выполнить:

lsusb
systemctl status pcscd.service
opensc-tool -l

Цель:

в каждой ВМ ровно один Рутокен виден как смарт-карта

Если где-то этого нет, до сервера проблема еще не дошла.


Этап 3. Проверить VirtualBox

На проблемных ПК:

  • переподключить токен;
  • проверить фильтр;
  • переключить контроллер между USB 2.0 и USB 1.1;
  • закрыть все Рутокен-приложения на хосте;
  • проверить VBoxManage list usbhost.

Этап 4. Обновить клиентское ПО

Если есть возможность, обновить ВМ:

Debian 9 -> Debian 11/12
старый FreeRDP -> актуальный 2.10+ / 3.x
старый ifd-rutokens -> актуальный драйвер Актив

Это один из самых вероятных способов избавиться от проблемы.


Этап 5. Сделать поэтапный тест

  1. Подключить 5 пользователей.
  2. Проверить.
  3. Подключить еще 3.
  4. Проверить.
  5. Подключить еще 3.
  6. Проверить.

Если при таком порядке все 11 работают, значит проблема в одновременном подключении/таймаутах.


Этап 6. Если ровно 10 и не больше

Если после всех этапов:

всегда 10 работают, 11-й нет

И это не зависит от токена/пользователя/ВМ, тогда нужно:

  1. Проверить воспроизведение на актуальной версии FreeRDP.
  2. Проверить воспроизведение на одной современной Linux-машине с 11 токенами.
  3. Собрать логи.
  4. Обратиться к вендору с подозрением на ограничение/баг серверной части или клиентского смарт-карточного канала.
  5. Как временное решение — распределять пользователей по нескольким терминальным серверам.

15. Чек-лист

Проверьте по пунктам:

1. Сервер перезагружен.
2. Старые RDP-сеансы завершены, не просто отключены.
3. Служба смарт-карт на сервере запущена.
4. Панель Рутокен запускается только после подключения.
5. Вместо панели используется certutil -scinfo.
6. В каждой ВМ токен виден в lsusb.
7. В каждой ВМ токен виден в opensc-tool -l.
8. В каждой ВМ ровно один нужный читатель.
9. Нет конфликта между libccid и ifd-rutokens.
10. pcscd запущен до xfreerdp.
11. FreeRDP запущен с /smartcard и логом.
12. Версия FreeRDP актуальна.
13. Драйвер Рутокен актуален.
14. В логах нет ошибок доступа к устройству.
15. На сервере в диспетчере устройств появляется считыватель.
16. Подключение выполняется поэтапно, а не все 11 мгновенно.

16. Мой главный практический совет

Debian 9 + FreeRDP 2 из stretch-backports + pcscd 1.8.20 + ifd-rutokens 1.0.4

Она уже слишком старая для таких тонких сценариев.

Лучше сделать эталонную ВМ:

Debian 11/12 или Ubuntu LTS
актуальный FreeRDP
актуальный pcscd
актуальный драйвер Рутокен

Затем:

  1. Проверить на одной эталонной ВМ один токен.
  2. Размножить образ.
  3. Проверить 11 подключений поэтапно.
  4. Если проблема сохранится — собирать логи и открывать кейс у Актив/FreeRDP, потому что тогда это уже похоже на баг взаимодействия или серверное ограничение.

Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.


Статью подготовил: Аверко Денис Сергеевич @Nymexis г. Омск (специалист по ЗИ)

Комментарии

Загрузка...
Если комментарии не загружаются, можете попробовать отключить блокировщик рекламы для этого сайта