04.02.2009

Протокол Remote Desktop. Архитектура и возможности

image

Данная статья открывает цикл статей, посвященных устройству и безопасности протокола RDP. В первой статье этого цикла анализируется устройство, использование и основные технологии, заложенные в данный протокол.

Автор: Сергей Рублев
Эксперт по информационной безопасности "Positive Technologies"

Данная статья открывает цикл статей, посвященных устройству и безопасности протокола RDP. В первой статье этого цикла анализируется устройство, использование и основные технологии, заложенные в данный протокол.

В следующих статьях будут подробно рассмотрены следующие вопросы:

  • Работа подсистемы безопасности Remote Desktop
  • Формат обмена служебной информацией в RDP
  • Уязвимые места сервера терминалов и пути их устранения
  • Подбор учетных записей пользователей по RDP протоколу (разработки компании Positive Technologies в данной области)

 

История появления RDP

Протокол Remote Desktop создан компанией Microsoft для обеспечения удаленного доступа к серверам и рабочим станциям Windows. Протокол RDP рассчитан на использование ресурсов высокопроизводительного сервера терминалов многими менее производительными рабочими станциями. Впервые сервер терминалов (версия 4.0) появился в 1998 году в составе Windows NT 4.0 Terminal Server, на момент написания статьи (январь 2009 года) последней версией терминального сервера является версия 6.1, включенная в дистрибутивы Windows 2008 Server и Windows Vista SP1. В настоящее время RDP является основным протоколом удаленного доступа для систем семейства Windows, а клиентские приложения существуют как для OC от Microsoft, так и для Linux, FreeBSD, MAC OS X и др.

Говоря об истории появления RDP, нельзя не упомянуть компанию Citrix. Citrix Systems в 1990-х годах специализировалась на многопользовательских системах и технологиях удаленного доступа. После приобретения лицензии на исходные коды Windows NT 3.51 в 1995 году эта компания выпустила многопользовательскую версию Windows NT, известную как WinFrame. В 1997 году Citrix Systems и Microsoft заключили договор, по которому многопользовательская среда Windows NT 4.0 базировалась на технологических разработках Citrix. В свою очередь Citrix Systems отказалась от распространения полноценной операционной системы и получала право на разработку и реализацию расширений для продуктов Microsoft. Данные расширения изначально назывались MetaFrame. Права на ICA (Independent Computing Architecture), прикладной протокол взаимодействия тонких клиентов с сервером приложений Citrix, остались за Citrix Systems, а протокол Microsoft RDP строился на базе ITU T.120.

В настоящее время основная конкурентная борьба между Citrix и Microsoft разгорелась в области серверов приложений для малого и среднего бизнеса. Традиционно решения на базе Terminal Services выигрывают в системах с не очень большим количеством однотипных серверов и схожих конфигураций, в то время как Citrix Systems прочно обосновалась на рынке сложных и высокопроизводительных систем. Конкуренция подогревается выпуском облегченных решений для небольших систем компанией Citrix и постоянным расширением функционала Terminal Services со стороны Microsoft. [11]

Рассмотрим преимущества этих решений.

Сильные стороны Terminal Services:

  • Простота установки приложений для клиентской части сервера приложений
  • Централизованное обслуживание сессий пользователя
  • Необходимость наличия лицензии только на Terminal Services

Сильные стороны решений Citrix:

  • Простота масштабирования
  • Удобство администрирования и мониторинга
  • Политика разграничение доступа
  • Поддержка корпоративных продуктов сторонних разработчиков (IBM WebSphere, BEA WebLogic)

 

Устройство сети, использующей Terminal Services

Microsoft предполагает два режима использования протокола RDP:

  • для администрирования (Remote administration mode)
  • для доступа к серверу приложений (Terminal Server mode)

RDP в режиме администрирования

Данный вид соединения используется всеми современными операционными системами Microsoft. Серверные версии Windows поддерживают одновременно два удаленных подключения и один локальный вход в систему, в то время как клиентские - только один вход (локальный или удаленный). Для разрешения удаленных подключений требуется включить удаленный доступ к рабочему столу в свойствах рабочей станции. [5]

RDP в режиме доступа к серверу терминалов

Данный режим доступен только в серверных версиях Windows. Количество удаленных подключений в данном случае не лимитируется, но требуется настройка сервера лицензий (License server) и его последующая активация. Сервер лицензий может быть установлен как на сервер терминалов, так и на отдельный сетевой узел. Возможность удаленного доступа к серверу терминалов открывается только после установки соответствующих лицензий на License server.

При использовании кластера терминальных серверов и балансировки нагрузки требуется установка специализированного сервера подключений (Session Directory Service). Данный сервер индексирует пользовательские сессии, что позволяет выполнять вход, а также повторный вход на терминальные серверы, работающие в распределенной среде. [5]

 

Принцип работы RDP

Remote Desktop является прикладным протоколом, базирующимся на TCP. После установки соединения на транспортном уровне инициализируется RDP- сессия, в рамках которой согласуются различные параметры передачи данных. После успешного завершения фазы инициализации сервер терминалов начинает передавать клиенту графический вывод и ожидает входные данные от клавиатуры и мыши. В качестве графического вывода может выступать как точная копия графического экрана, передаваемая как изображение, так и команды на отрисовку графических примитивов ( прямоугольник, линия, эллипс, текст и др.). Передача вывода с помощью примитивов является приоритетной для протокола RDP, так как значительно экономит трафик; а изображение передается лишь в том случае, если иное невозможно по каким-либо причинам (не удалось согласовать параметры передачи примитивов при установке RDP -сессии). RDP- клиент обрабатывает полученные команды и выводит изображения с помощью своей графической подсистемы. Пользовательский ввод по умолчанию передается при помощи скан-кодов клавиатуры. Сигнал нажатия и отпускания клавиши передается отдельно при помощи специального флага. [1][2]

RDP поддерживает несколько виртуальных каналов в рамках одного соединения, которые могут использоваться для обеспечения дополнительного функционала:

  • использование принтера или последовательного порта
  • перенаправление файловой системы
  • поддержка работы с буфером обмена
  • использование аудио- подсистемы

Характеристики виртуальных каналов согласуются на этапе установки соединения.

Обеспечение безопасности при использовании RDP

Спецификация протокола RDP предусматривает использование одного из двух подходов к обеспечению безопасности:

  • Standard RDP Security (встроенная подсистема безопасности)
  • Enhanced RDP Security (внешняя подсистема безопасности)

Standard RDP Security

При данном подходе аутентификация, шифрование и обеспечение целостности реализуется средствами, заложенными в RDP- протокол. [1]

Аутентификация

Аутентификация сервера выполняется следующим образом:

  1. При старте системы генерируется пара RSA- ключей
  2. Создается сертификат (Proprietary Certificate) открытого ключа
  3. Сертификат подписывается RSA- ключом, зашитым в операционную систему (любой RDP -клиент содержит открытый ключ данного встроенного RSA- ключа). [12]
  4. Клиент подключается к серверу терминалов и получает Proprietary Certificate
  5. Клиент проверяет сертификат и получает открытый ключ сервера (данный ключ используется в дальнейшем для согласования параметров шифрования)

Аутентификация клиента проводится при вводе имени пользователя и пароля.

Шифрование

В качестве алгоритма шифрования выбран потоковый шифр RC4. В зависимости от версии операционной системы доступны различные длины ключа от 40 до 168 бит.

Максимальная длина ключа для операционных систем Winodws:

  • Windows 2000 Server – 56 бит
  • Windows XP, Windows 2003 Server – 128 бит
  • Windows Vista, Windows 2008 Server – 168 бит

При установке соединения после согласования длины генерируется два различных ключа: для шифрования данных от клиента и от сервера.

Целостность

Целостность сообщения достигается применением алгоритма генерации MAC (Message Authentication Code) на базе алгоритмов MD5 и SHA1.

Начиная с Windows 2003 Server, для обеспечения совместимости с требованиями стандарта FIPS (Federal Information Processing Standard) 140-1 возможно использование алгоритма 3DES для шифрования сообщений и алгоритма генерации MAC, использующего только SHA1, для обеспечения целостности. [15]

Enhanced RDP Security

В данном подходе используются внешние модули обеспечения безопасности:

  • TLS 1.0
  • CredSSP

Протокол TLS можно использовать, начиная с версии Windows 2003 Server, но только если его поддерживает RDP- клиент. Поддержка TLS добавлена, начиная с RDP -клиента версии 6.0.

При использовании TLS сертификат сервера можно генерировать средствами Terminal Sercives или выбирать существующий сертификат из хранилища Windows. [13][16]

Протокол CredSSP представляет собой совмещение функционала TLS, Kerberos и NTLM.

Рассмотрим основные достоинства протокола CredSSP:

  • Проверка разрешения на вход в удаленную систему до установки полноценного RDP- соединения, что позволяет экономить ресурсы сервера терминалов при большом количестве подключений
  • Надежная аутентификация и шифрование по протоколу TLS
  • Использование однократного входа в систему (Single Sign On ) при помощи Kerberos или NTLM

Возможности CredSSP можно использовать только в операционных системах Windows Vista и Windows 2008 Server. Данный протокол включается флагом Use Network Level Authentication в настройках сервера терминалов (Windows 2008 Server) или в настройках удаленного доступа (Windows Vista). [14]

 

Схема лицензирования Terminal Services

При использовании RDP для доступа к приложениям в режиме тонкого клиента требуется настройка специализированного сервера лицензий.

Постоянные клиентские лицензии могут быть установлены на сервер только после прохождения процедуры активации, до ее прохождения возможна выдача временных лицензий, лимитированных по сроку действия. После прохождения активации серверу лицензий предоставляется цифровой сертификат, подтверждающий его принадлежность и подлинность. Используя этот сертификат, сервер лицензий может осуществлять последующие транзакции с базой данных Microsoft Clearinghouse и принимать постоянные клиентские лицензии для сервера терминалов. [6]

Виды клиентских лицензий:

  • временная лицензия  (Temporary Terminal Server CAL)
  • лицензия «на устройство» (Device Terminal Server CAL)
  • лицензия «на пользователя» (User Terminal Server CAL)
  • лицензия для внешних пользователей (External Terminal Server Connector)

Временная лицензия

Данный вид лицензии выдается клиенту при первом подключении к серверу терминалов, срок действия лицензии 90 дней. При успешном входе клиент продолжает работать с временной лицензией, а при следующем подключении сервер терминалов пробует заменить временную лицензию постоянной, при ее наличии в хранилище.

Лицензия «на устройство»

Эта лицензия выдается для каждого физического устройства, подключающегося к серверу приложения. Срок действия лицензии устанавливается случайным образом в промежутке от 52 до 89 дней. За 7 дней до окончания срока действия сервер терминалов пытается обновить лицензию с сервера лицензий при каждом новом подключении клиента.

Лицензия «на пользователя»

Лицензирование «на пользователя» обеспечивает дополнительную гибкость, позволяя пользователям подключаться с различных устройств. В текущей реализации Terminal Services нет средств контроля использования пользовательские лицензий, т.е. количество доступных лицензий на сервере лицензий не уменьшается при подключении новых пользователей. Использование недостаточного количества лицензий для клиентских подключений нарушает лицензионное соглашение с компанией Microsoft. Чтобы одновременно использовать на одном сервере терминалов клиентские лицензии для устройств и для пользователей, сервер должен быть настроен для работы в режиме лицензирования «на пользователя».

Лицензия для внешних пользователей

Это специальный вид лицензии, предназначенный для подключения внешних пользователей к корпоративному серверу терминалов. Данная лицензия не налагает ограничений на количество подключений, однако, согласно пользовательскому соглашению (EULA), сервер терминалов для внешних подключений должен быть выделенным, что не допускает его использования для обслуживания сессий от корпоративных пользователей. Из-за высокой цены данный вид лицензии не получил широкого распространения.

Для сервера лицензий может быть установлена одна из двух ролей:

  • Сервер лицензий для домена или рабочей группы (Domain or Workgroup License server)
  • Сервер лицензий предприятия (Entire Enterprise License Server)

Роли отличаются способом обнаружения сервера лицензий: при использовании роли Enterprise терминальный сервер выполняет поиск сервера лицензии по каталогу ActiveDirectory, в противном случае поиск выполняется при помощи широковещательного NetBIOS- запроса. Каждый найденный сервер проверяется на корректность при помощи RPC -запроса. [8][9]

 

Перспективные технологии Terminal Services

Решения для серверов приложений активно продвигаются компанией Microsoft, расширяется функционал, вводятся дополнительные модули. Наибольшее развитие получили технологии, упрощающие установку приложений и компоненты, отвечающие за работу сервера терминалов в глобальных сетях. [5]

В Terminal Services для Windows 2008 Server введены следующие возможности:

  • Terminal Services Printing – позволяет использовать принтер клиента для печати из приложений на сервере терминалов.
  • Terminal Services RemoteApp – обеспечивает доступ к любым приложениям через службу терминалов. Для пользователя в данном случае сервер терминалов становится совершенно прозрачным.
  • Terminal Services Web Access – позволяет клиентам подключаться к приложениям RemoteApp при помощи обычного браузера. В роли связующего звена для RemoteApp выступает Web -сервер.
  • Terminal Services Gateway – данная технология организует работу RDP поверх установленного HTTPS- соединения. TS Gateway дает возможность удаленным пользователям подключаться к серверу приложений через региональные сети или Internet с использованием безопасного SSL- туннеля и с минимальной настройкой сетевых устройств.
  • Terminal Services Session Broker – позволяет организовывать подключения пользователей к серверным платформам, использующим балансировку сетевой нагрузки.

 

Литература

  1. Спецификация Microsoft на основные функции RDP
    http://msdn.microsoft.com/en-us/library/cc240445(PROT.10).aspx
  2. Спецификация Microsoft на графические расширения RDP
    http://msdn.microsoft.com/en-us/library/cc241537(PROT.10).aspx
  3. Страничка википедии, посвященная Citrix Systems
    http://en.wikipedia.org/wiki/Citrix_Systems
  4. Вопросы по установке клиентских лицензий
    http://support.microsoft.com/kb/822134/ru
  5. Принцип работы сервера терминалов
    http://technet.microsoft.com/en-us/library/cc755399.aspx
  6. Инструкции по лицензированию Terminal Services
    http://technet.microsoft.com/ru-ru/library/cc787247.aspx
  7. Компоненты, введенные в Terminal Services под управлением Windows 2008 Server
    http://technet.microsoft.com/en-us/library/cc733093.aspx
  8. Описание процесса получения клиентских лицензий (часть 1)
    http://www.msterminalservices.org/articles/Terminal-Services-CAL-Allocation-Process-Part1.html
  9. Описание процесса получения клиентских лицензий (часть 2)
    http://www.msterminalservices.org/articles/Terminal-Services-CAL-Allocation-Process-Part2.html
  10. Полное руководство по терминальным службам Windows Server 2003
    http://citrix.pp.ru/ts2003/index.html
  11. Анализ функциональности, выполненный компанией Citrix Systems
    http://www.citrix.com/%2Fsite%2Fresources%2Fdynamic%2Fsalesdocs%2FCitrix-XenApp5-Terminal-Services-2003-2008-Feature-Analysis.pdf
  12. Исследования на тему RDP- ключей
    http://www.oxid.it/downloads/rdp-gbu.pdf
  13. Настройка SSL в Terminal Services
    http://technet.microsoft.com/en-us/library/cc782610.aspxt
  14. Спецификация протокола CredSSP
    http://download.microsoft.com/download/9/5/E/95EF66AF-9026-4BB0-A41D-A4F81802D92C/%5BMS-CSSP%5D.pdf
  15. Стандарт FIPS 140-1
    http://csrc.nist.gov/publications/fips/fips1401.htm
  16. Спецификация TLS 1.0
    http://www.ietf.org/rfc/rfc2246.txt

Об авторе:
Сергей Рублев закончил МГТУ им. Баумана. Эксперт в области криптографии и протоколов защищенного обмена данными. В компании Positive Technologies специализируется на анилизе уязвимостей в сетевых службах и разработке расширений к сканерам XSpider и MaxPatrol 8.

или введите имя

CAPTCHA
Страницы: 1  2  3  
04-02-2009 14:44:05
Интересная тема... Многообещающе выглядит, ждем продолжения!
0 |
05-02-2009 01:08:34
Очень интересно. Так как я смог найти только две программы для бутфорса пот win and unix. Первая по невыясниным причинам неработает,вторая мне досталась в исходных кодах (это под unix). Ключь можно получить xspider сканером. И упоминается про метод атаки (человек посередине). Но я так понемаю это только в локалке можно? Вообще есть желание такой переборьщик зделать. icq 840928восемь. Спосибо. Жду продолжение.
0 |
05-02-2009 09:33:53
Сертификат подписывается RSA- ключом, зашитым в операционную систему (любой RDP -клиент содержит открытый ключ данного встроенного RSA- ключа).Видно, что в криптографии разработчики разбираются на пять с плюсом.
0 |
05-02-2009 12:58:05
Вот это место я не понял. Любой клиент содержит открытый ключ сервера? Это значит что закрытый ключ всегда один и тот же? Не может быть чтобы всё было так печально. А если нет, и у сервера всё-таки генерируется пара RSA ключей, то как и кем они подписываются, и как клиент их проверяет? Из статьи я это не понял. Автор может и разбирается на пять с плюсом, только сведения он предпочёл хранить в тайне Кнкретно в пункте 3 (процитированном valyala) неясно что такое ключ зашитый в операционную систему. Может создаться вечатление, буд-то у всех операционных систем ключ один и тот же (что сводит ценность шифрования к нулю) или что MS заранее заготовила миллиард ключей для кажного потенциального сервера и разложила миллиард открытых ключей на каждого потенциального клиента, что тоже сводит ценность такого метода к нулю. Пошёл курить источник 12.
0 |
05-02-2009 13:18:29
Боже! Я угадал. Там дыра 9см*15см. Через неё-то Каин и лазает. Неужели в MS нет ни одного индуса, который читал про PKI? Или они боятся проиграть в удобстве Цитриксу? Боятся неудобств, тогда зачем вообще шифрованием занялись?
0 |
05-02-2009 14:26:49
Все что касается безопасности и ключей я подробно опишу в следующей статье Начиная с Windows 2003 Server на терминальном сервере можно включить поддержку TLS. При и спользовании данной модели возможно устанавливать на сервер сертификаты, подписанные доверенным CA (вот она и PKI) Рублев Сергей
0 |
05-02-2009 15:36:38
Конечно, Сергей, про TLS я прочитал. MS родила собственный способ шифрования. Ясно что он доминирует в офиссах (ну не будут админы заморачиваться с настройкой TLS) и этот метод по прочтении 12-й ссылки меня поразил. Ждём продолжения банкета.
0 |
05-02-2009 11:42:44
Хорошая тема! По опыту, сравнивая РДП и Цитриксы: 1. При прочих равных, и для архитектуры с ВинХП и тонкими клиентами, Цитрикс лучше по всем параметрам, кроме одного - абсолютно невменяемая цена. Главные минусы РДП: 1. Тяжеловесность на загруженных WAN каналах. Заметно подтормаживает. 2. Невнятная обработка принтеров (в версии 2003). 3. Плохой аудит (ну - это общая проблема вин-архитектуры). Достоинства: 1. Цена. 2. Доступность для всего что шевелится (впрочем - цитрикс тоже, тут скорее паритет) 3. Возможность "потестировать", зачастую без кавычек. 4. Простота для развертки и администрирования (относительно цитрикса).
0 |
09-02-2009 00:50:33
Отличная статья! Жду продолжения.
0 |
Страницы: 1  2  3