Службы удаленных рабочих столов ( RDS ), известные как службы терминалов в Windows Server 2008 и более ранних версиях, [1] являются одним из компонентов Microsoft Windows , которые позволяют пользователю инициировать и контролировать интерактивный сеанс [2] на удаленном компьютере или виртуальной машине. через сетевое соединение. RDS был впервые выпущен в 1998 году как сервер терминалов в Windows NT 4.0 Terminal Server Edition , автономной версии Windows NT 4.0 Server , которая позволяла пользователям удаленно входить в систему. Начиная с Windows 2000 , он был интегрирован под названием Terminal Services в качестве дополнительного компонента в серверные выпуски операционных систем семейства Windows NT , [3] получая обновления и улучшения с каждой версией Windows. [4] В 2009 году службы терминалов были переименованы в службы удаленных рабочих столов в Windows Server 2008 R2 [5] .
RDS — это реализация архитектуры тонкого клиента от Microsoft , в которой программное обеспечение Windows и весь рабочий стол компьютера, на котором работает RDS, становятся доступными для любого удаленного клиентского компьютера, поддерживающего протокол удаленного рабочего стола (RDP). Пользовательские интерфейсы отображаются с сервера на клиентскую систему, а входные данные из клиентской системы передаются на сервер, где происходит выполнение программного обеспечения. [6] В этом отличие от систем потоковой передачи приложений , таких как Microsoft App-V , в которых компьютерные программы передаются клиенту по требованию и выполняются на клиентском компьютере.
RemoteFX был добавлен в RDS как часть пакета обновления 1 для Windows Server 2008 R2 .
Windows включает три клиентских компонента, использующих RDS:
Первые две представляют собой отдельные утилиты, которые позволяют пользователю управлять интерактивным сеансом на удаленном компьютере по сети. В случае удаленной помощи удаленный пользователь должен получить приглашение, и управление будет совместным. Однако в случае RDC удаленный пользователь открывает новый сеанс на удаленном компьютере и получает все полномочия, предоставленные правами и ограничениями его учетной записи. [6] [7] [8] Быстрое переключение пользователей позволяет пользователям переключаться между учетными записями пользователей на локальном компьютере без выхода из программного обеспечения и выхода из системы. Быстрое переключение пользователей является частью Winlogon и использует RDS для выполнения своей функции переключения. [9] [10] Сторонние разработчики также создали клиентское программное обеспечение для RDS. Например, rdesktop поддерживает платформы Unix .
Хотя RDS поставляется с большинством выпусков всех версий Windows NT, начиная с Windows 2000, [3] его функциональные возможности различаются в каждой версии. Windows XP Home Edition вообще не принимает никаких подключений RDC, резервируя RDS только для быстрого переключения пользователей и удаленной помощи. Другие клиентские версии Windows позволяют подключаться к системе только одному удаленному пользователю за счет отключения пользователя, вошедшего в консоль. Windows Server позволяет двум пользователям подключаться одновременно. Эта схема лицензирования, называемая «Удаленный рабочий стол для администрирования», облегчает администрирование автоматических или автономных компьютеров . Только приобретя дополнительные лицензии (в дополнение к лицензии Windows), компьютер под управлением Windows Server сможет одновременно обслуживать нескольких удаленных пользователей и получить инфраструктуру виртуальных рабочих столов . [5] [9]
В организации RDS позволяет ИТ-отделу устанавливать приложения на центральном сервере, а не на нескольких компьютерах. [11] Удаленные пользователи могут войти в систему и использовать эти приложения по сети. Такая централизация может облегчить обслуживание и устранение неполадок. Системы аутентификации RDS и Windows предотвращают доступ неавторизованных пользователей к приложениям или данным.
Microsoft имеет давнее соглашение с Citrix , облегчающее обмен технологиями и лицензирование патентов между Microsoft Terminal Services и Citrix XenApp (ранее Citrix MetaFrame и Citrix Presentation Server ). Благодаря этому соглашению Citrix получает доступ к ключевому исходному коду платформы Windows, что позволяет разработчикам улучшить безопасность и производительность платформы служб терминалов. В конце декабря 2004 года обе компании объявили о пятилетнем продлении этого соглашения для охвата Windows Vista . [12]
Ключевым серверным компонентом RDS является сервер терминалов ( termdd.sys
), который прослушивает TCP-порт 3389. Когда клиент протокола удаленного рабочего стола (RDP) подключается к этому порту, он помечается уникальным идентификатором SessionID и связывается с только что созданным сеансом консоли (Session). 0, только клавиатура, мышь и текстовый режим). Затем запускаются подсистема входа в систему (winlogon.exe) и графическая подсистема GDI , которая выполняет задачу аутентификации пользователя и представления графического интерфейса. Эти исполняемые файлы загружаются в новом сеансе, а не в сеансе консоли. При создании нового сеанса драйверы графического устройства и клавиатуры/мыши заменяются драйверами, специфичными для RDP: RdpDD.sys
и RdpWD.sys
. Это RdpDD.sys
драйвер устройства, который записывает вызовы рендеринга пользовательского интерфейса в формат, который можно передавать по RDP. RdpWD.sys
действует как драйвер клавиатуры и мыши; он получает ввод с клавиатуры и мыши по TCP-соединению и представляет их как ввод с клавиатуры или мыши. Это также позволяет создавать виртуальные каналы , которые позволяют перенаправлять другие устройства, такие как диски, аудио, принтеры и COM-порты, т. е. каналы действуют как замена этих устройств. Каналы подключаются к клиенту через TCP-соединение; когда к каналам осуществляется доступ к данным, клиент информируется о запросе, который затем передается по TCP-соединению в приложение. Вся эта процедура выполняется терминальным сервером и клиентом, при этом RDP обеспечивает правильную передачу и полностью прозрачна для приложений. [13] Сообщения RDP шифруются с использованием 128-битного шифрования RC4 . Windows Server 2003 и более поздних версий может использовать схемы шифрования, соответствующие стандарту FIPS 140 . [6]
Как только клиент инициирует соединение и получает информацию об успешном вызове стека терминальных служб на сервере, он загружает устройство, а также драйверы клавиатуры/мыши. Данные пользовательского интерфейса, полученные по RDP, декодируются и визуализируются как пользовательский интерфейс, тогда как ввод с клавиатуры и мыши в окно, в котором размещается пользовательский интерфейс, перехватывается драйверами и передается по RDP на сервер. Он также создает другие виртуальные каналы и настраивает перенаправление. Связь RDP может быть зашифрована; используя низкое, среднее или высокое шифрование. При низком уровне шифрования вводимые пользователем данные (исходящие данные) шифруются с использованием слабого (40-битного RC4) шифра. При среднем шифровании пакеты пользовательского интерфейса (входящие данные) также шифруются с использованием этого слабого шифра. Параметр «Высокое шифрование (без экспорта)» использует 128-битное шифрование RC4, а «Высокое шифрование (экспорт)» использует 40-битное шифрование RC4. [14]
Сервер терминалов — это серверный компонент служб терминалов. Он выполняет работу по аутентификации клиентов, а также обеспечивает удаленный доступ к приложениям. Ему также поручена работа по ограничению клиентов в соответствии с уровнем доступа, который они имеют. Сервер терминалов соблюдает настроенные политики ограничения программного обеспечения, чтобы ограничить доступность определенного программного обеспечения только для определенной группы пользователей. Информация об удаленном сеансе хранится в специализированных каталогах, называемых каталогом сеансов , которые хранятся на сервере. Каталоги сеансов используются для хранения информации о состоянии сеанса и могут использоваться для возобновления прерванных сеансов. Терминальный сервер также должен управлять этими каталогами. Терминальные серверы также могут использоваться в кластере . [6]
В Windows Server 2008 он был существенно переработан. Если при входе в систему пользователь вошел в локальную систему с использованием учетной записи домена Windows Server , учетные данные того же входа можно использовать для аутентификации удаленного сеанса. Однако для этого требуется, чтобы Windows Server 2008 была ОС сервера терминалов, а клиентская ОС ограничена Windows Server 2008, Windows Vista и Windows 7 . Кроме того, сервер терминалов можно настроить на разрешение подключения к отдельным программам, а не ко всему рабочему столу, с помощью функции RemoteApp. Веб-доступ к службам терминалов (TS Web Access) позволяет вызывать сеанс RemoteApp из веб-браузера . Он включает в себя элемент управления веб-частью TS Web Access, который поддерживает список приложений RemoteApp, развернутых на сервере, и поддерживает его актуальность. Сервер терминалов также может интегрироваться с диспетчером системных ресурсов Windows для регулирования использования ресурсов удаленными приложениями. [4]
Сервер терминалов управляется оснасткой консоли управления Microsoft « Диспетчер серверов терминалов» . Его можно использовать для настройки требований входа в систему, а также для принудительного выполнения одного экземпляра удаленного сеанса. Его также можно настроить с помощью групповой политики или инструментария управления Windows . Однако он недоступен в клиентских версиях ОС Windows, где сервер предварительно настроен на разрешение только одного сеанса и соблюдение прав учетной записи пользователя в удаленном сеансе без какой-либо настройки. [6]
Компонент службы шлюза удаленных рабочих столов , также известный как шлюз RD , может туннелировать сеанс RDP с использованием канала HTTPS . [15] Это повышает безопасность RDS за счет инкапсуляции сеанса с помощью Transport Layer Security (TLS). [16] Это также позволяет использовать Internet Explorer в качестве клиента RDP. Официальный клиент MS RDP для macOS поддерживает RD Gateway начиная с версии 8. Он также доступен для iOS и Android.
Эта функция была представлена в продуктах Windows Server 2008 и Windows Home Server .
В октябре 2021 года компания Thincast, основной участник проекта FreeRDP, опубликовала первое решение шлюза удаленных рабочих столов, работающее на базе Linux. [17]
В конце 2018 года Microsoft выпустила веб-клиент HTML5 для удаленного рабочего стола. Клиент позволяет пользователям подключаться к своим удаленным приложениям или к своим удаленным рабочим столам без использования установленного клиента удаленного рабочего стола. [18] [19] Веб-клиент использует защищенный TLS порт 443 и не использует шлюз RD для передачи трафика, вместо этого полагаясь исключительно на аспект узла сеанса удаленного рабочего стола служб удаленных рабочих столов. [20] [21]
RemoteApp (или TS RemoteApp ) — это специальный режим RDS, доступный в Windows Server 2008 R2 и более поздних версиях, в котором настройка удаленного сеанса интегрирована в клиентскую операционную систему. Клиент RDP 6.1 поставляется с Windows XP SP3, KB952155 для пользователей Windows XP SP2, [23] Windows Vista SP1 и Windows Server 2008. Пользовательский интерфейс RemoteApp отображается в окне поверх локального рабочего стола и управляется как любое другое окно. для локальных приложений. Конечным результатом этого является то, что удаленные приложения ведут себя во многом аналогично локальным приложениям. Задача установления удаленного сеанса, а также перенаправления локальных ресурсов на удаленное приложение прозрачна для конечного пользователя. [24] В одном сеансе RemoteApp можно запустить несколько приложений, каждое из которых имеет свои собственные окна. [25]
RemoteApp можно упаковать в виде .rdp
файла или распространить через пакет .msi
установщика Windows . При упаковке в виде .rdp
файла (который содержит адрес сервера RemoteApp, используемые схемы аутентификации и другие настройки) RemoteApp можно запустить двойным щелчком по файлу. Он вызовет клиент подключения к удаленному рабочему столу, который подключится к серверу и отобразит пользовательский интерфейс. RemoteApp также можно упаковать в базу данных установщика Windows , при установке которой можно зарегистрировать RemoteApp в меню «Пуск» , а также создать ярлыки для его запуска. RemoteApp также можно зарегистрировать в качестве обработчика типов файлов или URI. Открытие файла, зарегистрированного в RemoteApp, сначала вызывает подключение к удаленному рабочему столу, которое подключается к серверу терминалов, а затем открывает файл. Любое приложение, к которому можно получить доступ через удаленный рабочий стол, может служить RemoteApp. [24]
Windows 7 включает встроенную поддержку публикации RemoteApp, но ее необходимо включить вручную в реестре, поскольку в клиентских версиях Microsoft Windows консоль управления RemoteApp отсутствует. [26]
Начиная с Windows Vista , службы терминалов также включают возможность совместного использования рабочего стола несколькими участниками, известную как общий доступ к рабочему столу Windows . В отличие от служб терминалов, которые создают новый сеанс пользователя для каждого подключения RDP, общий доступ к рабочему столу Windows может размещать удаленный сеанс в контексте текущего вошедшего в систему пользователя без создания нового сеанса и делать доступным рабочий стол или его подмножество. через РДП. [27] Общий доступ к рабочему столу Windows можно использовать для предоставления общего доступа ко всему рабочему столу, определенному региону или конкретному приложению. [28] Общий доступ к рабочему столу Windows также можно использовать для совместного использования рабочих столов с несколькими мониторами. При совместном использовании приложений по отдельности (а не всего рабочего стола) окна управляются (свернуты или развернуты) независимо на стороне сервера и клиента. [28]
Функциональность предоставляется только через общедоступный API , который может использоваться любым приложением для предоставления функции совместного использования экрана. API общего доступа к рабочему столу Windows предоставляет два объекта: RDPSession
для сеанса общего доступа и RDPViewer
для средства просмотра. Для одного объекта сеанса можно создать экземпляры нескольких объектов просмотра. Зритель может быть либо пассивным зрителем, который может просто смотреть приложение как скринкаст , либо интерактивным зрителем, который может взаимодействовать с удаленным приложением в реальном времени. [27] Объект RDPSession
содержит все общие приложения, представленные в виде Application
объектов, каждый из Window
которых представляет собой экранное окно. Фильтры отдельных приложений захватывают Windows приложений и упаковывают их как Window
объекты. [29] Зритель должен пройти аутентификацию, прежде чем он сможет подключиться к сеансу совместного использования. Это делается путем создания файла Invitation
с использованием метода RDPSession
. Он содержит билет аутентификации и пароль. Объект сериализуется и отправляется зрителям, которым необходимо предъявить его Invitation
при подключении. [27] [29]
API общего доступа к рабочему столу Windows используется Windows Meeting Space и Windows Remote Assistance для предоставления функций совместного использования приложений между узлами сети . [28]
Аутентификация на уровне сети ( NLA ) — это функция RDP-сервера или подключения к удаленному рабочему столу (RDP-клиент), которая требует от подключающегося пользователя пройти аутентификацию перед установкой сеанса с сервером.
Первоначально, если пользователь открывал сеанс RDP (удаленный рабочий стол) на сервере, он загружал для пользователя экран входа в систему с сервера. Это привело бы к использованию ресурсов на сервере и было потенциальной областью для атак типа «отказ в обслуживании» , а также атак с удаленным выполнением кода (см. BlueKeep ). Аутентификация на уровне сети делегирует учетные данные пользователя от клиента через поставщика поддержки безопасности на стороне клиента и предлагает пользователю пройти аутентификацию перед установкой сеанса на сервере.
Аутентификация на уровне сети была представлена в RDP 6.0 и первоначально поддерживалась в Windows Vista . Он использует нового поставщика поддержки безопасности CredSSP, который доступен через SSPI в Windows Vista. В Windows XP с пакетом обновления 3 на этой платформе был представлен CredSSP, а включенный в комплект клиент RDP 6.1 поддерживает NLA; однако CredSSP сначала необходимо включить в реестре. [30] [31]
Преимущества аутентификации на уровне сети:
Подключение к удаленному рабочему столу (RDC, также называемое удаленным рабочим столом или просто RD , [34] [35] ранее известное как клиент Microsoft Terminal Services Client , mstsc или tsclient в Windows 2000 и более ранних версиях) [36] [37] — это клиентское приложение для RDS. Это позволяет пользователю удаленно войти в сетевой компьютер, на котором работает сервер служб терминалов. RDC представляет интерфейс рабочего стола (или графический интерфейс приложения) удаленной системы так, как если бы к нему осуществлялся локальный доступ. [6] Помимо обычного имени пользователя и пароля для авторизации в удаленном сеансе, RDC также поддерживает использование смарт-карт для авторизации. [6]
RDC 6.0 был выпущен как часть Windows Vista. В RDC 6.0 разрешение удаленного сеанса можно установить независимо от настроек на удаленном компьютере. Если компонент «Возможности рабочего стола» подключен к удаленному серверу, элементы пользовательского интерфейса удаленного приложения (например, границы окон приложений, кнопки «Развернуть», «Свернуть», «Закрыть» и т. д.) будут иметь тот же вид, что и локальные приложения. В этом сценарии удаленные приложения будут использовать тему Aero , если пользователь подключается к серверу с компьютера под управлением Windows Vista, на котором работает Aero. [4] Более поздние версии протокола также поддерживают рендеринг пользовательского интерфейса в полном 32-битном цвете, а также перенаправление ресурсов для принтеров, COM-портов, дисководов, мышей и клавиатур. Благодаря перенаправлению ресурсов удаленные приложения могут использовать ресурсы локального компьютера. Аудио также перенаправляется, так что любые звуки, созданные удаленным приложением, воспроизводятся в клиентской системе. [6] [4] Более того, удаленный сеанс также может охватывать несколько мониторов в клиентской системе, независимо от настроек нескольких мониторов на сервере. RDC также можно использовать для подключения к удаленным сеансам Windows Media Center (WMC); однако, поскольку WMC не передает потоковое видео с помощью RDP, таким образом можно просматривать только приложения, а не любые медиафайлы.
RDC отдает приоритет данным пользовательского интерфейса, а также вводу с клавиатуры и мыши, а не заданиям печати или передаче файлов. чтобы сделать приложения более отзывчивыми. Он перенаправляет устройства Plug and Play, такие как камеры, портативные музыкальные плееры и сканеры, так что входные данные с этих устройств также могут использоваться удаленными приложениями. [4] RDC также можно использовать для подключения к компьютерам, которые доступны через шлюз Windows Home Server RDP через Интернет . [38] Наконец, несколько ярлыков, которые будут полезны.
Microsoft выпускает официальный клиент для различных платформ, отличных от Windows:
Существует множество реализаций клиентов, не принадлежащих Microsoft, которые реализуют подмножества функций Microsoft для ряда платформ. Наиболее распространенными являются:
Windows XP, Windows Server 2003, Windows Vista, and Windows Server 2008 all contain the RDC tool,mstsc.exe
[...] MSTSC in the filenamemstsc.exe
stands for Microsoft Terminal Services Client.