- Протокол Remote Desktop. Архітектура і можливості Дана стаття відкриває цикл статей, присвячених...
- RDP в режимі доступу до сервера терміналів
- Забезпечення безпеки при використанні RDP
- аутентифікація
- шифрування
- цілісність
- Протокол Remote Desktop. Архітектура і можливості
- RDP в режимі адміністрування
- RDP в режимі доступу до сервера терміналів
- Забезпечення безпеки при використанні RDP
- аутентифікація
- шифрування
- цілісність
- Протокол Remote Desktop. Архітектура і можливості
- RDP в режимі адміністрування
- RDP в режимі доступу до сервера терміналів
- Забезпечення безпеки при використанні RDP
- аутентифікація
- шифрування
- цілісність
Протокол Remote Desktop. Архітектура і можливості
Дана стаття відкриває цикл статей, присвячених пристрою і безпеки протоколу RDP. У першій статті цього циклу аналізується пристрій, використання і основні технології, закладені в даний протокол.
Автор: Сергій Рубльов
Експерт з інформаційної безпеки "Positive Technologies"
Дана стаття відкриває цикл статей, присвячених пристрою і безпеки протоколу RDP. У першій статті цього циклу аналізується пристрій, використання і основні технології, закладені в даний протокол.
У наступних статтях будуть детально розглянуті такі питання:
- Робота підсистеми безпеки Remote Desktop
- Формат обміну службовою інформацією в RDP
- Уразливі місця сервера терміналів та шляхи їх усунення
- Підбір облікових записів користувачів по RDP протоколу (розробки компанії Positive Technologies в даній області)
Протокол 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)
Microsoft передбачає два режими використання протоколу RDP:
- для адміністрування (Remote administration mode)
- для доступу до сервера додатків (Terminal Server mode)
RDP в режимі адміністрування
Даний вид з'єднання використовується всіма сучасними операційними системами Microsoft. Серверні версії Windows підтримують одночасно два віддалених підключення і один локальний вхід в систему, в той час як клієнтські - тільки один вхід (локальний або віддалений). Для вирішення віддалених підключень потрібно включити віддалений доступ до робочого столу у властивостях робочої станції. [5]
RDP в режимі доступу до сервера терміналів
Даний режим доступний тільки в серверних версіях Windows. Кількість вилучених підключень в даному випадку не лімітується, але потрібно налаштування сервера ліцензій (License server) і його подальша активація. Сервер ліцензій може бути встановлений як на сервер терміналів, так і на окремий мережевий вузол. Можливість віддаленого доступу до сервера терміналів відкривається тільки після установки відповідних ліцензій на License server.
При використанні кластера термінальних серверів і балансування навантаження потрібна установка спеціалізованого сервера підключень (Session Directory Service). Даний сервер індексує сесії користувачів, що дозволяє виконувати вхід, а також повторний вхід на термінальні сервери, що працюють в розподіленому середовищі. [5]
Remote Desktop є прикладним протоколом, що базуються на TCP. Після установки з'єднання на транспортному рівні инициализируется RDP- сесія, в рамках якої узгоджуються різні параметри передачі даних. Після успішного завершення фази ініціалізації сервер терміналів починає передавати клієнту графічний висновок і очікує вхідні дані від клавіатури і миші. В якості графічного виведення може виступати як точна копія графічного екрану, що передається як зображення, так і команди на отрисовку графічних примітивів (прямокутник, лінія, еліпс, текст і ін.). Передача виведення за допомогою примітивів є пріоритетною для протоколу RDP, так як значно економить трафік; а зображення передається лише в тому випадку, якщо інше неможливо з яких-небудь причин (не вдалося узгодити параметри передачі примітивів при установці RDP -сессіі). RDP- клієнт обробляє отримані команди і виводить зображення за допомогою своєї графічної підсистеми. Призначений для користувача введення за замовчуванням передається за допомогою скан-кодів клавіатури. Сигнал натискання і відпускання клавіші передається окремо за допомогою спеціального прапора. [1] [2]
RDP підтримує кілька віртуальних каналів в рамках одного з'єднання, які можуть використовуватися для забезпечення додаткового функціоналу:
- використання принтера або послідовного порту
- перенаправлення файлової системи
- підтримка роботи з буфером обміну
- використання аудіо- підсистеми
Характеристики віртуальних каналів узгоджуються на етапі встановлення з'єднання.
Забезпечення безпеки при використанні RDP
Специфікація протоколу RDP передбачає використання одного з двох підходів до забезпечення безпеки:
- Standard RDP Security (вбудована підсистема безпеки)
- Enhanced RDP Security (зовнішня підсистема безпеки)
При цьому підході аутентифікація, шифрування і забезпечення цілісності реалізується засобами, закладеними в RDP- протокол. [1]
аутентифікація
Аутентифікація сервера виконується наступним чином:
- При старті системи генерується пара RSA- ключів
- Створюється сертифікат (Proprietary Certificate) відкритого ключа
- Сертифікат підписується RSA- ключем, зашитим в операційну систему (будь-RDP-клієнт містить відкритий ключ даного вбудованого RSA- ключа). [12]
- Клієнт підключається до сервера терміналів і отримує Proprietary Certificate
- Клієнт перевіряє сертифікат і отримує відкритий ключ сервера (даний ключ використовується в подальшому для узгодження параметрів шифрування)
Аутентифікація клієнта проводиться при введенні імені користувача та пароля.
шифрування
В якості алгоритму шифрування обраний потоковий шифр 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]
В даному підході використовуються зовнішні модулі забезпечення безпеки:
Протокол 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]
При використанні 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]
Рішення для серверів додатків активно просуваються компанією 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 - дозволяє організовувати підключення користувачів до серверних платформ, які використовують балансування мережевого навантаження.
- Специфікація Microsoft на основні функції RDP
http://msdn.microsoft.com/en-us/library/cc240445(PROT.10).aspx - Специфікація Microsoft на графічні розширення RDP
http://msdn.microsoft.com/en-us/library/cc241537(PROT.10).aspx - Сторінка вікіпедії, присвячена Citrix Systems
http://en.wikipedia.org/wiki/Citrix_Systems - Питання по установці клієнтських ліцензій
http://support.microsoft.com/kb/822134/ru - Принцип роботи сервера терміналів
http://technet.microsoft.com/en-us/library/cc755399.aspx - Інструкції з ліцензування Terminal Services
http://technet.microsoft.com/ru-ru/library/cc787247.aspx - Компоненти, введені в Terminal Services під управлінням Windows 2008 Server
http://technet.microsoft.com/en-us/library/cc733093.aspx - Опис процесу отримання клієнтських ліцензій (частина 1)
http://www.msterminalservices.org/articles/Terminal-Services-CAL-Allocation-Process-Part1.html - Опис процесу отримання клієнтських ліцензій (частина 2)
http://www.msterminalservices.org/articles/Terminal-Services-CAL-Allocation-Process-Part2.html - Повне керівництво по термінальних служб Windows Server 2003
http://citrix.pp.ru/ts2003/index.html - Аналіз функціональності, виконаний компанією Citrix Systems
http://www.citrix.com/%2Fsite%2Fresources%2Fdynamic%2Fsalesdocs%2FCitrix-XenApp5-Terminal-Services-2003-2008-Feature-Analysis.pdf - Дослідження на тему RDP- ключів
http://www.oxid.it/downloads/rdp-gbu.pdf - Налаштування SSL в Terminal Services
http://technet.microsoft.com/en-us/library/cc782610.aspxt - Специфікація протоколу CredSSP
http://download.microsoft.com/download/9/5/E/95EF66AF-9026-4BB0-A41D-A4F81802D92C/%5BMS-CSSP%5D.pdf - Стандарт FIPS 140-1
http://csrc.nist.gov/publications/fips/fips1401.htm - Специфікація TLS 1.0
http://www.ietf.org/rfc/rfc2246.txt
Про автора:
Сергій Рубльов закінчив МГТУ ім. Баумана. Експерт в області криптографії та протоколів захищеного обміну даними. У компанії Positive Technologies спеціалізується на аніліз вразливостей в мережевих службах і розробці розширень до сканерів XSpider і MaxPatrol 8.
Протокол Remote Desktop. Архітектура і можливості
Дана стаття відкриває цикл статей, присвячених пристрою і безпеки протоколу RDP. У першій статті цього циклу аналізується пристрій, використання і основні технології, закладені в даний протокол.
Автор: Сергій Рубльов
Експерт з інформаційної безпеки "Positive Technologies"
Дана стаття відкриває цикл статей, присвячених пристрою і безпеки протоколу RDP. У першій статті цього циклу аналізується пристрій, використання і основні технології, закладені в даний протокол.
У наступних статтях будуть детально розглянуті такі питання:
- Робота підсистеми безпеки Remote Desktop
- Формат обміну службовою інформацією в RDP
- Уразливі місця сервера терміналів та шляхи їх усунення
- Підбір облікових записів користувачів по RDP протоколу (розробки компанії Positive Technologies в даній області)
Протокол 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)
Microsoft передбачає два режими використання протоколу RDP:
- для адміністрування (Remote administration mode)
- для доступу до сервера додатків (Terminal Server mode)
RDP в режимі адміністрування
Даний вид з'єднання використовується всіма сучасними операційними системами Microsoft. Серверні версії Windows підтримують одночасно два віддалених підключення і один локальний вхід в систему, в той час як клієнтські - тільки один вхід (локальний або віддалений). Для вирішення віддалених підключень потрібно включити віддалений доступ до робочого столу у властивостях робочої станції. [5]
RDP в режимі доступу до сервера терміналів
Даний режим доступний тільки в серверних версіях Windows. Кількість вилучених підключень в даному випадку не лімітується, але потрібно налаштування сервера ліцензій (License server) і його подальша активація. Сервер ліцензій може бути встановлений як на сервер терміналів, так і на окремий мережевий вузол. Можливість віддаленого доступу до сервера терміналів відкривається тільки після установки відповідних ліцензій на License server.
При використанні кластера термінальних серверів і балансування навантаження потрібна установка спеціалізованого сервера підключень (Session Directory Service). Даний сервер індексує сесії користувачів, що дозволяє виконувати вхід, а також повторний вхід на термінальні сервери, що працюють в розподіленому середовищі. [5]
Remote Desktop є прикладним протоколом, що базуються на TCP. Після установки з'єднання на транспортному рівні инициализируется RDP- сесія, в рамках якої узгоджуються різні параметри передачі даних. Після успішного завершення фази ініціалізації сервер терміналів починає передавати клієнту графічний висновок і очікує вхідні дані від клавіатури і миші. В якості графічного виведення може виступати як точна копія графічного екрану, що передається як зображення, так і команди на отрисовку графічних примітивів (прямокутник, лінія, еліпс, текст і ін.). Передача виведення за допомогою примітивів є пріоритетною для протоколу RDP, так як значно економить трафік; а зображення передається лише в тому випадку, якщо інше неможливо з яких-небудь причин (не вдалося узгодити параметри передачі примітивів при установці RDP -сессіі). RDP- клієнт обробляє отримані команди і виводить зображення за допомогою своєї графічної підсистеми. Призначений для користувача введення за замовчуванням передається за допомогою скан-кодів клавіатури. Сигнал натискання і відпускання клавіші передається окремо за допомогою спеціального прапора. [1] [2]
RDP підтримує кілька віртуальних каналів в рамках одного з'єднання, які можуть використовуватися для забезпечення додаткового функціоналу:
- використання принтера або послідовного порту
- перенаправлення файлової системи
- підтримка роботи з буфером обміну
- використання аудіо- підсистеми
Характеристики віртуальних каналів узгоджуються на етапі встановлення з'єднання.
Забезпечення безпеки при використанні RDP
Специфікація протоколу RDP передбачає використання одного з двох підходів до забезпечення безпеки:
- Standard RDP Security (вбудована підсистема безпеки)
- Enhanced RDP Security (зовнішня підсистема безпеки)
При цьому підході аутентифікація, шифрування і забезпечення цілісності реалізується засобами, закладеними в RDP- протокол. [1]
аутентифікація
Аутентифікація сервера виконується наступним чином:
- При старті системи генерується пара RSA- ключів
- Створюється сертифікат (Proprietary Certificate) відкритого ключа
- Сертифікат підписується RSA- ключем, зашитим в операційну систему (будь-RDP-клієнт містить відкритий ключ даного вбудованого RSA- ключа). [12]
- Клієнт підключається до сервера терміналів і отримує Proprietary Certificate
- Клієнт перевіряє сертифікат і отримує відкритий ключ сервера (даний ключ використовується в подальшому для узгодження параметрів шифрування)
Аутентифікація клієнта проводиться при введенні імені користувача та пароля.
шифрування
В якості алгоритму шифрування обраний потоковий шифр 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]
В даному підході використовуються зовнішні модулі забезпечення безпеки:
Протокол 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]
При використанні 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]
Рішення для серверів додатків активно просуваються компанією 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 - дозволяє організовувати підключення користувачів до серверних платформ, які використовують балансування мережевого навантаження.
- Специфікація Microsoft на основні функції RDP
http://msdn.microsoft.com/en-us/library/cc240445(PROT.10).aspx - Специфікація Microsoft на графічні розширення RDP
http://msdn.microsoft.com/en-us/library/cc241537(PROT.10).aspx - Сторінка вікіпедії, присвячена Citrix Systems
http://en.wikipedia.org/wiki/Citrix_Systems - Питання по установці клієнтських ліцензій
http://support.microsoft.com/kb/822134/ru - Принцип роботи сервера терміналів
http://technet.microsoft.com/en-us/library/cc755399.aspx - Інструкції з ліцензування Terminal Services
http://technet.microsoft.com/ru-ru/library/cc787247.aspx - Компоненти, введені в Terminal Services під управлінням Windows 2008 Server
http://technet.microsoft.com/en-us/library/cc733093.aspx - Опис процесу отримання клієнтських ліцензій (частина 1)
http://www.msterminalservices.org/articles/Terminal-Services-CAL-Allocation-Process-Part1.html - Опис процесу отримання клієнтських ліцензій (частина 2)
http://www.msterminalservices.org/articles/Terminal-Services-CAL-Allocation-Process-Part2.html - Повне керівництво по термінальних служб Windows Server 2003
http://citrix.pp.ru/ts2003/index.html - Аналіз функціональності, виконаний компанією Citrix Systems
http://www.citrix.com/%2Fsite%2Fresources%2Fdynamic%2Fsalesdocs%2FCitrix-XenApp5-Terminal-Services-2003-2008-Feature-Analysis.pdf - Дослідження на тему RDP- ключів
http://www.oxid.it/downloads/rdp-gbu.pdf - Налаштування SSL в Terminal Services
http://technet.microsoft.com/en-us/library/cc782610.aspxt - Специфікація протоколу CredSSP
http://download.microsoft.com/download/9/5/E/95EF66AF-9026-4BB0-A41D-A4F81802D92C/%5BMS-CSSP%5D.pdf - Стандарт FIPS 140-1
http://csrc.nist.gov/publications/fips/fips1401.htm - Специфікація TLS 1.0
http://www.ietf.org/rfc/rfc2246.txt
Про автора:
Сергій Рубльов закінчив МГТУ ім. Баумана. Експерт в області криптографії та протоколів захищеного обміну даними. У компанії Positive Technologies спеціалізується на аніліз вразливостей в мережевих службах і розробці розширень до сканерів XSpider і MaxPatrol 8.
Протокол Remote Desktop. Архітектура і можливості
Дана стаття відкриває цикл статей, присвячених пристрою і безпеки протоколу RDP. У першій статті цього циклу аналізується пристрій, використання і основні технології, закладені в даний протокол.
Автор: Сергій Рубльов
Експерт з інформаційної безпеки "Positive Technologies"
Дана стаття відкриває цикл статей, присвячених пристрою і безпеки протоколу RDP. У першій статті цього циклу аналізується пристрій, використання і основні технології, закладені в даний протокол.
У наступних статтях будуть детально розглянуті такі питання:
- Робота підсистеми безпеки Remote Desktop
- Формат обміну службовою інформацією в RDP
- Уразливі місця сервера терміналів та шляхи їх усунення
- Підбір облікових записів користувачів по RDP протоколу (розробки компанії Positive Technologies в даній області)
Протокол 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)
Microsoft передбачає два режими використання протоколу RDP:
- для адміністрування (Remote administration mode)
- для доступу до сервера додатків (Terminal Server mode)
RDP в режимі адміністрування
Даний вид з'єднання використовується всіма сучасними операційними системами Microsoft. Серверні версії Windows підтримують одночасно два віддалених підключення і один локальний вхід в систему, в той час як клієнтські - тільки один вхід (локальний або віддалений). Для вирішення віддалених підключень потрібно включити віддалений доступ до робочого столу у властивостях робочої станції. [5]
RDP в режимі доступу до сервера терміналів
Даний режим доступний тільки в серверних версіях Windows. Кількість вилучених підключень в даному випадку не лімітується, але потрібно налаштування сервера ліцензій (License server) і його подальша активація. Сервер ліцензій може бути встановлений як на сервер терміналів, так і на окремий мережевий вузол. Можливість віддаленого доступу до сервера терміналів відкривається тільки після установки відповідних ліцензій на License server.
При використанні кластера термінальних серверів і балансування навантаження потрібна установка спеціалізованого сервера підключень (Session Directory Service). Даний сервер індексує сесії користувачів, що дозволяє виконувати вхід, а також повторний вхід на термінальні сервери, що працюють в розподіленому середовищі. [5]
Remote Desktop є прикладним протоколом, що базуються на TCP. Після установки з'єднання на транспортному рівні инициализируется RDP- сесія, в рамках якої узгоджуються різні параметри передачі даних. Після успішного завершення фази ініціалізації сервер терміналів починає передавати клієнту графічний висновок і очікує вхідні дані від клавіатури і миші. В якості графічного виведення може виступати як точна копія графічного екрану, що передається як зображення, так і команди на отрисовку графічних примітивів (прямокутник, лінія, еліпс, текст і ін.). Передача виведення за допомогою примітивів є пріоритетною для протоколу RDP, так як значно економить трафік; а зображення передається лише в тому випадку, якщо інше неможливо з яких-небудь причин (не вдалося узгодити параметри передачі примітивів при установці RDP -сессіі). RDP- клієнт обробляє отримані команди і виводить зображення за допомогою своєї графічної підсистеми. Призначений для користувача введення за замовчуванням передається за допомогою скан-кодів клавіатури. Сигнал натискання і відпускання клавіші передається окремо за допомогою спеціального прапора. [1] [2]
RDP підтримує кілька віртуальних каналів в рамках одного з'єднання, які можуть використовуватися для забезпечення додаткового функціоналу:
- використання принтера або послідовного порту
- перенаправлення файлової системи
- підтримка роботи з буфером обміну
- використання аудіо- підсистеми
Характеристики віртуальних каналів узгоджуються на етапі встановлення з'єднання.
Забезпечення безпеки при використанні RDP
Специфікація протоколу RDP передбачає використання одного з двох підходів до забезпечення безпеки:
- Standard RDP Security (вбудована підсистема безпеки)
- Enhanced RDP Security (зовнішня підсистема безпеки)
При цьому підході аутентифікація, шифрування і забезпечення цілісності реалізується засобами, закладеними в RDP- протокол. [1]
аутентифікація
Аутентифікація сервера виконується наступним чином:
- При старті системи генерується пара RSA- ключів
- Створюється сертифікат (Proprietary Certificate) відкритого ключа
- Сертифікат підписується RSA- ключем, зашитим в операційну систему (будь-RDP-клієнт містить відкритий ключ даного вбудованого RSA- ключа). [12]
- Клієнт підключається до сервера терміналів і отримує Proprietary Certificate
- Клієнт перевіряє сертифікат і отримує відкритий ключ сервера (даний ключ використовується в подальшому для узгодження параметрів шифрування)
Аутентифікація клієнта проводиться при введенні імені користувача та пароля.
шифрування
В якості алгоритму шифрування обраний потоковий шифр 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]
В даному підході використовуються зовнішні модулі забезпечення безпеки:
Протокол 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]
При використанні 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]
Рішення для серверів додатків активно просуваються компанією 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 - дозволяє організовувати підключення користувачів до серверних платформ, які використовують балансування мережевого навантаження.
- Специфікація Microsoft на основні функції RDP
http://msdn.microsoft.com/en-us/library/cc240445(PROT.10).aspx - Специфікація Microsoft на графічні розширення RDP
http://msdn.microsoft.com/en-us/library/cc241537(PROT.10).aspx - Сторінка вікіпедії, присвячена Citrix Systems
http://en.wikipedia.org/wiki/Citrix_Systems - Питання по установці клієнтських ліцензій
http://support.microsoft.com/kb/822134/ru - Принцип роботи сервера терміналів
http://technet.microsoft.com/en-us/library/cc755399.aspx - Інструкції з ліцензування Terminal Services
http://technet.microsoft.com/ru-ru/library/cc787247.aspx - Компоненти, введені в Terminal Services під управлінням Windows 2008 Server
http://technet.microsoft.com/en-us/library/cc733093.aspx - Опис процесу отримання клієнтських ліцензій (частина 1)
http://www.msterminalservices.org/articles/Terminal-Services-CAL-Allocation-Process-Part1.html - Опис процесу отримання клієнтських ліцензій (частина 2)
http://www.msterminalservices.org/articles/Terminal-Services-CAL-Allocation-Process-Part2.html - Повне керівництво по термінальних служб Windows Server 2003
http://citrix.pp.ru/ts2003/index.html - Аналіз функціональності, виконаний компанією Citrix Systems
http://www.citrix.com/%2Fsite%2Fresources%2Fdynamic%2Fsalesdocs%2FCitrix-XenApp5-Terminal-Services-2003-2008-Feature-Analysis.pdf - Дослідження на тему RDP- ключів
http://www.oxid.it/downloads/rdp-gbu.pdf - Налаштування SSL в Terminal Services
http://technet.microsoft.com/en-us/library/cc782610.aspxt - Специфікація протоколу CredSSP
http://download.microsoft.com/download/9/5/E/95EF66AF-9026-4BB0-A41D-A4F81802D92C/%5BMS-CSSP%5D.pdf - Стандарт FIPS 140-1
http://csrc.nist.gov/publications/fips/fips1401.htm - Специфікація TLS 1.0
http://www.ietf.org/rfc/rfc2246.txt
Про автора:
Сергій Рубльов закінчив МГТУ ім. Баумана. Експерт в області криптографії та протоколів захищеного обміну даними. У компанії Positive Technologies спеціалізується на аніліз вразливостей в мережевих службах і розробці розширень до сканерів XSpider і MaxPatrol 8.