Подробный гайд: Проброс 11 Рутокенов с Debian на Windows Server через FreeRDP - Часть 3
6. Проверка FreeRDP
6.1. Проверьте версию и поддержку смарт-карт
xfreerdp /version
или:
xfreerdp --version
Проверьте наличие опции смарт-карт:
xfreerdp --help | grep -i smartcard
Должна быть опция вроде:
/smartcard:<name>
или просто:
/smartcard
Если xfreerdp --help не показывает смарт-карты, значит сборка без поддержки смарт-карт или отсутствует нужный модуль.
6.2. Обновите FreeRDP
Это один из самых важных шагов. Debian 9 и старый FreeRDP 2 из stretch-backports — очень плохая основа для диагностики таких проблем.
Рекомендуемый минимальный ориентир:
актуальный Debian LTS;
FreeRDP 2.10+ или FreeRDP 3.x;
актуальный pcsc-lite;
актуальный драйвер Рутокен.
Если есть возможность, лучше обновить ВМ до:
Debian 11 / Debian 12 / современный Ubuntu LTS
и использовать пакетный xfreerdp из актуальных репозиториев. Если обновить ОС нельзя, можно собрать более новый FreeRDP вручную, но это сложнее и не всегда оправдано на Debian 9 из-за старых библиотек.
6.3. Запускайте подключение с подробным логом
Для диагностики используйте логирование.
Простой вариант:
xfreerdp \
/v:ADDRESS \
/u:USER \
/d:DOMAIN \
/smartcard \
/log-level:TRACE \
2> ~/freerdp-smartcard.log
Например:
xfreerdp /v:192.168.1.10 /u:user1 /d:domain.local /smartcard /log-level:TRACE 2> ~/freerdp-smartcard.log
Можно также использовать:
WLOG_LEVEL=TRACE xfreerdp /v:ADDRESS /u:USER /d:DOMAIN /smartcard 2>&1 | tee ~/freerdp-smartcard.log
В логе ищите строки, связанные с:
smartcard
scard
reader
PCSC
SCARD_E_NO_READERS_AVAILABLE
SCARD_E_NO_SERVICE
SCARD_E_SERVICE_STOPPED
SCARD_F_COMM_ERROR
SCARD_E_TIMEOUT
Если в логе видно, что читатель найден, но дальше идет ошибка при работе смарт-карты, проблема ближе к серверу или протоколу.
Если читатель вообще не найден, проблема в pcscd/драйвере/USB.
6.4. Попробуйте явно указать читателя
Если в ВМ вдруг видно несколько читателей, лучше явно указать нужный.
Сначала получите имя:
opensc-tool -l
Пример условного имени:
Aktiv Co. Rutoken Lite 00 00
Затем попробуйте:
xfreerdp /v:ADDRESS /u:USER /d:DOMAIN \
/smartcard:"Aktiv Co. Rutoken Lite 00 00" \
/log-level:TRACE
Если имя содержит пробелы — обязательно кавычки.
Если версия FreeRDP не принимает явное имя или ведет себя странно, используйте просто:
/smartcard
но тогда убедитесь, что в системе только один нужный читатель.
6.5. Временно отключите лишние функции сеанса
Для чистоты эксперимента можно запустить минимальный сеанс:
xfreerdp \
/v:ADDRESS \
/u:USER \
/d:DOMAIN \
/smartcard \
-clipboard \
-themes \
-wallpaper \
/network:lan \
/log-level:TRACE
Это не всегда влияет на смарт-карты, но помогает исключить побочные эффекты других каналов.
6.6. Попробуйте разные режимы безопасности
Иногда смарт-карточные сценарии чувствительны к режиму аутентификации и согласованию безопасности.
Попробуйте по очереди:
xfreerdp /v:ADDRESS /u:USER /d:DOMAIN /smartcard /sec:nla
xfreerdp /v:ADDRESS /u:USER /d:DOMAIN /smartcard /sec:tls
xfreerdp /v:ADDRESS /u:USER /d:DOMAIN /smartcard /sec:rdp
Если какой-то режим работает стабильнее, зафиксируйте его в рабочем ярлыке подключения.
6.7. Проверьте, что FreeRDP не sandboxed
Если вы используете не обычный пакет xfreerdp, а, например, Flatpak/Snap/AppImage, возможны ограничения доступа к pcscd или USB. Для диагностики используйте нативный пакет из репозитория дистрибутива.
7. Проверка сервера Windows Server 2012 R2
7.1. Проверьте службу смарт-карт
На сервере выполните:
sc query SCardSvr
или откройте:
services.msc
Служба:
Smart Card
Смарт-карта
должна быть:
Status: Running
Startup type: Automatic
Также проверьте:
Smart Card Certificate Propagation
Распространение сертификата смарт-карты
Обычно она может быть в ручном режиме, но должна нормально запускаться по запросу.
7.2. Проверьте политики проброса смарт-карт
Проверьте групповые политики:
Computer Configuration
-> Administrative Templates
-> Windows Components
-> Remote Desktop Services
-> Remote Desktop Session Host
-> Device and Resource Redirection
Параметр:
Allow smart card device redirection
должен быть:
Not Configured
или:
Enabled
Параметр:
Do not allow smart card device redirection
не должен быть включен.
Также проверите свойства коллекции удаленных рабочих столов:
Server Manager
-> Remote Desktop Services
-> Collections
-> Properties
-> Client Settings
Смарт-карты должны быть разрешены.
7.3. Проверьте журнал событий смарт-карт
На сервере откройте eventvwr.msc и посмотрите:
Applications and Services Logs
-> Microsoft
-> Windows
-> SmartCard
-> Operational
Если события нет или журнал не включен, можно включить его.
Также полезны журналы:
Applications and Services Logs
-> Microsoft
-> Windows
-> TerminalServices-LocalSessionManager
-> Operational
и:
Applications and Services Logs
-> Microsoft
-> Windows
-> TerminalServices-RemoteConnectionManager
-> Operational
Ищите события вокруг момента подключения 11-го пользователя.
7.4. Используйте certutil, а не только панель Рутокен
В сеансе пользователя, который сообщает об ошибке, выполните:
certutil -scinfo
Если certutil пишет, что смарт-карта недоступна, а служба работает, значит читатель не появился в сеансе.
Если certutil видит карту, а панель Рутокен — нет, проблема в панели/кэше/драйвере панели.
7.5. Обновите драйверы и панель Рутокен на сервере
На терминальном сервере должна быть актуальная версия:
- панели управления Рутокен;
- драйверов Рутокен;
- криптопровайдера, если используется.
Для терминального сервера установка должна быть выполнена корректно для всех пользователей.
Если на сервере установлена очень старая панель Рутокен, она может некорректно работать с новыми токенами или некорректно отображать состояние устройств в сеансах.
7.6. Очистите скрытые устройства смарт-карт
Windows может накапливать старые устройства считывателей смарт-карт, особенно если пользователи часто подключаются и отключаются.
Сделайте так:
1. Откройте командную строку:
set devmgr_show_nonpresent_devices=1
start devmgmt.msc
2. В диспетчере устройств включите:
Вид -> Показать скрытые устройства
3. Раскройте:
Устройства чтения смарт-карт
- Удалите старые/серые/неактивные устройства.
- Перезагрузите сервер.
Это может помочь, если проблема связана с накоплением призрачных устройств.
7.7. Перед массовым тестом завершите все старые сеансы
Не просто отключите пользователей, а именно завершите сеансы.
Проверить сеансы можно:
query user
query session
Для завершения сеанса:
logoff SESSION_ID
или через диспетчер задач/диспетчер пользователей. Если старые отключенные сеансы остаются, они могут удерживать ресурсы и устройства.
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.