Налаштувати віддалений доступ до комп'ютера по rdp. Захищаємо і оптимізуємо RDP

Даний протокол, широко застосовуваний в сучасних обчислювальних мережах, знає будь-який системний адміністратор. Використовуючи його, можна підключиться до віддаленої машині, що працює під управлінням операційної системи лінійки Microsoft. Вам буде доступний робочий стіл, файлова система і тд. Таким чином, можна буде здійснювати основну масу налаштувань і профілактичних заходів, без необхідності фізичної присутності за екраном віддаленого ПК.

Саме тому протокол RDP є одним з основних складових в арсеналі технічних фахівців. Не відходячи від свого робочого місця, можна управляти всіма доступними комп'ютерами мережі, усувати неполадки.

Історія появи

Протокол віддаленого робочого стола, а саме так розшифровується абревіатура RDP, з'явився в далекому 1998 році. Цей пропріетарний протокол прикладного рівня, в той час входив до складу ОС Windows NT 4.0 Terminal Server, і дозволяв реалізувати ідею віддаленого функціонування клієнт-серверних додатків. Як ви розумієте, не завжди є можливість забезпечити всі робочі місця потужними комп'ютерами, а вже в ті далекі роки продуктивність залишала бажати кращого.

Рішенням цієї проблеми виступає наступна конструкція: потужний сервер (або кластер серверів) здійснює основну масу операцій обчислень, а малопотужні клієнтські комп'ютери / програма взаємодіє з нього, використовуючи протокол RDP, здійснюють свої завдання. Таким чином, на кінцевих користувальницьких вузлах з'явилася можливість працювати зі складними додатками і програмами, навіть при наявності обмежених ресурсів - адже основне навантаження лягало на сервер, а клієнтський ПК отримував тільки основний результат операції на моніторі.

Опис протоколу RDP

  • За замовчуванням, для підключення використовується порт TCP 3389
  • Як уже згадано вище, при підключенні надається можливість працювати з файлами на віддаленому машині
  • Для забезпечення безпеки реалізовано шифрування і 56 і 128 бітовим ключами
  • Також для функцій безпеки, використовується можливості протоколів TLS
  • Загальний буфер обміну - ви можете копіювати дані і віддаленої машини, і вставляти їх на локальний ПК.
  • Реалізована можливість підключення локальних ресурсів до віддаленого ПК.
  • Протокол RDP надає доступ до портів локального комп'ютера (послідовні і паралельні)

Принцип роботи

Протоколу RDP бере за основу функції стека протоколів TCP. Насамперед, встановлюється з'єднання між клієнтом і сервером на транспортному рівні. Потім відбувається ініціація сесії RDP - на цьому етапі узгоджуються основні параметри: шифрування, підключені пристрої, налаштування графіки і тд.

Після того, як все налаштовано, сесія RDP повністю готова до роботи. На клієнтський ПК від сервера надходить графічне зображення (результат операцій), які відбуваються в результаті відправки команд з клавіатури або миші.

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

Якщо налаштована система забезпечення безпеки протоколу RDP, аутентифікація відбувається наступним чином:

  1. При ініціалізації підключення формується пара RSA ключів
  2. Далі створюється спеціальний сертифікат відкритого ключа
  3. Операційна система проводить процес підпису сертифіката RSA ключем
  4. Далі клієнт здійснюємо підключення до сервера, отримує від нього сертифікат, і якщо той проходить перевірку, инициализируется сесія віддаленого управління

як запустити

В операційних системах, таких як Windows XP, Vista, Seven, за замовчуванням включено клієнтське ПЗ Remote Desktop Connection. Для його запуску вам необхідно натиснути клавіші Win + R, набрати mstsc і натиснути Enter.

Протокол RDP - зручне, ефективне і практичний засіб для віддаленого доступу як для цілей адміністрування, так і для повсякденної роботи.


З огляду на, що його реалізації є практично скрізь (різні платформи і ОС), і їх багато, потрібно добре уявляти його можливості.

По крайней мере, це буде потрібно по ряду причин:

  • Найчастіше замість RDP використовується інше рішення (VNC, Citrix ICA) з простої причини - передбачається, що "вбудований RDP мінімальний і нічого не вміє".
  • У багатьох рішеннях, пов'язаних з модними зараз хмарними технологіями (переклад офісів на "тонкі клієнти", та й просто організація термінальних серверів), існує думка що "RDP поганий тому що вбудований".
  • Є стандартний міф про те, що "RDP можна без VPN назовні виставляти, ломанутся" (міф має під собою обґрунтування, але вже давно не актуальний).
  • Ну, якщо вже про міфи заговорили - існує думка, що "Перейшовши з RDP на Citrix трафік в пару раз падає". Адже цітрікс - це дорого, отже як мінімум на 157% крутіше.

Всі ці міфи - нісенітниця і суміш застарілих "слушних порад", актуальних за часів NT 4.0, а так само відвертих вигадок, які не мають ніяких причин для існування. Так як IT - це точна наука, треба розібратися. Добре настроєний протокол RDP нових версій, з урахуванням всіх нових функціональних можливостей, є досить хорошим і надійним інструментом для організації віддаленого доступу.

Тому ми займемося:

  • Короткою згадкою про версії RDP
  • Налаштуванням режиму захисту RDP-сесії
  • Налаштуванням шифрування для RDP
  • Прив'язкою до конкретного адаптера і порту
    • Міняємо стандартний порт на потрібний
    • Робимо роздільні настройки RDP для декількох мережевих адаптерів
  • включенням NLA
    • NLA і Windows XP
    • Як включити CredSSP в XP
  • Вибором правильної сертифіката для RDP
  • Блокуванням підключень по RDP облікових записів з порожнім паролем
  • Оптимізацією швидкості RDP
  • Оптимізацією стиснення RDP
    • налаштовуємо загальне стиснення RDP
    • Налаштовуємо стиснення аудиопотока RDP
  • Оптимізацією співвідношення потоків даних RDP
  • Включенням Require secure RPC communication для RDP

Приступимо.

Версії протоколу RDP

Протокол має досить тривалу історію, починаючи з NT 4.0. Історичні деталі ми залишимо осторонь з простої причини - на даний момент має сенс говорити тільки про версію RDP 7.0, яка є в Windows Vista SP1 / Windows Server 2008 і безкоштовно добавляема в Windows XP установкою SP3 і оновленого клієнта RDP (знаходиться за посиланням на KB 969084). Я припускаю, що у Вас як мінімум Windows XP, і що Ви поставили / можете поставити останній Service Pack і не витрачаю Ваш час на обговорення переваг RDP в Windows 2000 SP2 перед NT 4.0 SP5.

Налаштування режиму захисту RDP-сесії

В принципі, це найпростіша частина завдання. Суть в наступному. У різних версіях RDP застосовується два основних механізми захисту сесії - вбудований в RDP і "загортання" сесії в TLS. Вбудований є недостатньо безпечним, і рекомендація "RDP можна назовні тільки в VPN" - про нього. Тому завжди включайте підтримку TLS. Це той мінімум, з якого Ви повинні почати. Обмеженнями будуть хіба що версія сервера не нижче Windows Server 2003 SP1 і клієнт RDP 5.2 і вище, але, думається, це в кінці 2011 року цілком можна вирішити.

Як включити RDP over TLS

Варіантів, як завжди, кілька. Перший - включення через групову політику. Для цього треба зайти в цільовий об'єкт групової політики (ну або локально на своїй домашній робочої станції запустити gpedit.msc) і там послідовно вибрати "Computer Configuration" -\u003e "Administrative Templates" -\u003e "Windows Components" -\u003e "Remote Desktop Session Host "-\u003e" Security "і там включити параметр Require use of specific security layer for remote connections, вибравши в ньому SSL (TLS 1.0) only. Можна вибрати і більш м'який Negotiate, але я б не рекомендував, тому що на даний момент це банально нижче прийнятного рівня безпеки. Як людина, що створював private cloud'и з досить високим рівнем безпеки, я можу сказати, що сенс виносити особливо цінні дані в датацентр під Лондоном і ходити туди дефолтних RDP - нульовий і є пошуком неприємностей.

Можна і простіше - відкрийте оснащення Remote Desktop Session Host Configuration (знайдете в mmc або готову в меню Administrative Tools -\u003e Remote Desktop Connections), виберіть зі списку Connections потрібне підключення (Зазвичай воно одне і називається RDP-Tcp), і відкрийте Properties, після - вкладку General і там вибрати потрібний Security Layer.

Для роботи TLS необхідний цифровий сертифікат (як мінімум - з боку сервера). Зазвичай він вже є (генерітся автоматично), переконайтеся в його наявності, про те, як зробити його гарним, поговоримо після. Поки треба, щоб він просто був, інакше підключитися не вийде.

Налаштовуємо шифрування для RDP

Для конфігурації буде доступно 4 варіанти шифрування. Розглянемо кожен з них.

Режим RDP Low Encryption

Самий "ніякої" режим. Спадщина страшних часів і версій RDP 5.x. Може узгодити шифрування на базі 56ті битового DES або 40ка битового RC2, що на поточний момент є несерйозним. Чи не потрібен і небезпечний. Наприклад, якщо включити його, то не увімкнеться TLS, тому що TLS вже відмовиться узгоджувати такі слабкі шифри, які пропонує цей варіант.

Режим RDP Client Compatible Encryption

Другий "ніякої" режим. Спадщина страшних часів і версій RDP 5.x. Спробує до 128 біт RC4, але відразу погодиться на DES / RC2. Чи не потрібен і небезпечний. Теж не сумісний з TLS.

Режим RDP High Encryption

Мінімально допустимий режим. Потребують хоча б 128мі бітовий RC4. Працює з усіма серверами, починаючи з Windows 2000 Server w / HEP.

Режим RDP FIPS140-1 Encryption

Те що потрібно. Підтримуватиме сучасні симетричні алгоритми і в явному вигляді не буде підтримувати RC2, RC4, одиночний DES, а також буде змушувати використовувати для обчислення цілісності (Message Authentication Code - MAC) алгоритм SHA-1, а не MD5. Включайте цей варіант завжди, знайти сервер, який не вміє 3DES, AES або SHA-1 практично нереально.

Де робиться ця настройка? Відкрийте оснастку Remote Desktop Session Host Configuration (знайдете в mmc або готову в меню Administrative Tools -\u003e Remote Desktop Connections), виберіть зі списку Connections потрібне підключення (зазвичай воно одне і називається RDP-Tcp), і відкрийте Properties, після - вкладку General і там виберіть потрібний Encryption Level.

Прив'язуємо RDP до конкретного адаптера і порту

Для того, щоб сервер працював безпечно і передбачувано (наприклад, не починав приймати підключення з нового, свежедобавленного мережевого адаптера), необхідно в явному вигляді вказати, на яких інтерфейси служба RDP-сервера повинна приймати підключення. Плюс, досить часто буває корисним переключити порт, на якому сервер слухає підключення. Звичайно, можна це зробити і публікуючи сервер з RDP через який-небудь шлюз, але можна і без цього. Такі, здавалося б, базові дії в реальності відчутно знизять відсоток дурнів-скріпткіддісов, які черговий "потужної ТУЛЗ" перевіряють wellknown-порти.

Як прив'язати службу RDP до конкретного мережевого адаптера або зробити кілька RDP з різними настройками для різних адаптерів

Відкрийте оснастку Remote Desktop Session Host Configuration (знайдете в mmc або готову в меню Administrative Tools -\u003e Remote Desktop Connections), виберіть зі списку Connections потрібне підключення (зазвичай воно одне і називається RDP-Tcp), і відкрийте Properties, після - вкладку Network Interfaces . У ній Ви зможете вибрати один конкретний інтерфейс, на якому треба чекати підключення, плюс обмежити кількість паралельних сесій.

Якщо у Вас багато інтерфейсів, і Вам треба, припустимо, щоб можна було підключатися через 2 з 5 доступних, то Вам треба буде прив'язати існуючий за замовчуванням RDP-Tcp до одного адаптера, після зайти в меню Action і там вибрати Create New Connection. Підключення може слухати або на всіх інтерфейсах, або на одному, і в разі, коли треба, щоб воно слухало на N інтерфейси, доведеться створити N підключень.

Відповідно, якщо у Вас є задача "Щоб на одному інтерфейсі RDP слухав на одному порту, а на іншому - на іншому", вона вирішувана так само - осля дефолтний RDP-Tcp від всіх адаптерів і прив'язуєте до конкретного, після - створюєте нове RDP- підключення і теж прив'язуєте до потрібного мережевого інтерфейсу.

Як прив'язати службу RDP до не-дефолтного порту

Порт за замовчуванням - 3389 TCP. До речі, не забудьте дозволити його в пакетному фільтрі. Ну а якщо хочете інший - треба зайти в ключ реєстру

HKEY_LOCAL_MACHINE \\ System \\ CurrentControlSet \\ Control \\ Terminal Server \\ WinStations \\ RDP-Tcp

і поправити в ньому значення PortNumber. Враховуйте, що відстеження конфліктів в плані зайнятості портів - на Вашій совісті, сам він, виявивши, що призначений Вами порт зайнятий, "перестрибнути" нікуди не зможе.

Включаємо NLA - Network Level Authentication

Функція NLA з'являється в NT 6.0, а пізніше додається можливість її часткового використання в попередній версії ОС шляхом установки SP3 для XP.
Суть даної функції досить проста. У версіях RDP до 6.0 при підключенні по RDP клієнту до аутентифікації треба показати вікно входу - тобто спочатку показати, а потім вже він спробує зайти в систему. Це створює просту уразливість - сервер можна перевантажити пачкою запитів "а дай-но мені спробувати нову сесію почати", і він буде змушений на всі запити відповідати створенням сесії і очікуванням входу користувача. Фактично, це можливість DoS. Як з цим можна боротися? Логічно, що треба придумати схему, метою якої буде якомога раніше запросити у клієнта облікові дані. Оптимально - щоб було щось типу як kerberos в домені. Це і було зроблено. NLA вирішує два завдання:

  • Клієнт аутентифицирующей до ініціації термінальній сесії.
  • З'являється можливість передати дані локального клієнтського SSP на сервер, тобто починає працювати Single Sign-On.

Реалізується це через новий провайдер безпеки - CredSSP. Почитати його технічну специфікацію можна, ну, а кажучи простіше, треба завжди включати цю функцію. Звичайно, з огляду на, що для її роботи потрібно, щоб:

  • Клієнтська ОС (та, з якої йде підключення) була Windows XP SP3 і вище.
  • Серверна ОС (та, до якої буде підключення) була Windows Server 2008 і вище.

Примітка: Не дивлячись на те, що ядро \u200b\u200bWindows Server 2003 новіше, ніж в XP (5.2 проти 5.1), для Windows XP є оновлення, що додає підтримку NLA, а для Windows Server 2003 - немає. Тобто, якщо Ви навіть будете підключатися з самої максимально доступної версії - Windows Server 2003 R2 SP2 з усіма патчами, Ви не зможете підключитися до сервера, який вимагає NLA, і бути сервером, що підтримує NLA. На жаль.

Як включається NLA з боку RDP-сервера

Найкраще включити NLA на всіх серверах через групову політику. Для цього треба зайти в цільовий об'єкт групової політики і там послідовно вибрати "Computer Configuration" -\u003e "Administrative Templates" -\u003e "Windows Components" -\u003e "Remote Desktop Session Host" -\u003e "Security" і там включити параметр Require user authentication for remote connections by using Network Layer Authentication.

Можна включити і локально. Це робиться шляхом виклику підміню Properties (стандартне підміню у Computer) і вибору там вкладки Remote, в якій буде вибір з трьох варіантів - забороняти підключення по RDP до даного хосту, дозволяти підключення з будь-якого RDP, вирішувати тільки з NLA. Завжди включайте варіант з NLA, це в першу чергу захищає сервер.

NLA і Windows XP

У разі, якщо у Вас Windows XP, то Ви також можете скористатися цією функцією. Поширене твердження "Для NLA потрібна як мінімум віста, це Microsoft зробив щоб апгрейди" помилково. В Service Pack 3 додається реалізація CredSSP, що дозволяє делегувати клієнтські credentials'и, якими володіє місцевий SSP, на сервер. Тобто, кажучи простіше, це спеціально зроблено, щоб з Windows XP можна було підключатися на системи з NT 6.0+. На саму Windows XP SP3 з цією функцією підключатися не вийде, підтримка NLA буде частковою (тому RDP сервер з підтримкою підключення клієнтів з використанням NLA з Windows XP зробити штатними способами не вийде, Windows XP буде тільки NLA-сумісним клієнтом).

Примітка: NLA з'являється з NT 6.0, і є частиною пачки технологій, званих RDP 6.0. 3й сервіспак для XP приносить не просто RDP 6.0, а можливість установки RDP 7.0, що є досить позитивним (наприклад, в RDP 7.0 є, на відміну від 6.0, EasyPrint, bidirectional audio і деякі інші штуки, які перетворюють RDP-клієнта на Windows XP з усіма накрутками в досить практичну систему). Це до слова про погане Microsoft, який так моторошно всіх змушував апгрейдитися з Windows XP на погану-преплохую висту, що аж в безкоштовному сервіспак для продукту 2001 року вшивається новішу підсистему RDP, ніж та, яка йшла в вісті, що вийшла в 2006.

Включати даний функціонал можна явно, оскільки не дивлячись на те, що Service Pack 3 додає приносить нову dll криптопровайдера, він її не включає.

Як включити CredSSP в XP

Ще раз - дана операція проводиться строго після установки Service Pack 3 на Windows XP і в контексті нашої розмови потрібна для того, щоб було можливо підключення до інших серверів по RDP 6.1 з використанням NLA.

Крок перший - розширюємо перелік Security Packages.
Для цього ми відкриємо ключ реєстру

HKEY_LOCAL_MACHINE \\ SYSTEM \\ CurrentControlSet \\ Control \\ Lsa

і знайдемо в ньому значення Security Packages. Натиснемо праву кнопку і виберемо "Modify» (не Modify Binary Data, а просто Modify). Там буде список виду "назва package на кожному рядку". Нам треба додати туди tspkg. Решта треба залишити. Місце додавання некритично.

Другий крок - підчіплюємо бібліотеку.
Ключ буде іншим:

HKEY_LOCAL_MACHINE \\ SYSTEM \\ CurrentControlSet \\ Control \\ SecurityProviders

У ньому треба буде знайти значення SecurityProviders (зауважте, як і в попередньому випадку, це не subkey, а значення), і модифікувати його за аналогією, тільки додавши credssp.dll. Решта в списку, знову ж таки, чіпати не треба.

Тепер редактор реєстру можна закрити. Після цих операцій систему треба буде обов'язково перезавантажити, тому що криптопровайдери - штука така, яка на ходу точно не підчепити, і це скоріше добре, ніж погано.

Вибираємо правильний сертифікат для RDP

Якщо у Вас є можливість користуватися не-дефолтних сертифікатом для RDP, то краще користуватися саме їм. Це не вплине на безпеку сесії як такої, але вплине на безпеку і зручність підключення. У сертифікаті, який оптимально використовувати, повинні бути наступні момент:

  • Ім'я (в subject або SAN), посимвольний збігається з тим ім'ям, яке вводить клієнт, що підключається до сервера.
  • Нормальне розширення CDP, яке вказує на робочий CRL (бажано хоча б на два - OCSP та статичний).
  • Бажаний розмір ключа - 2048 біт. Можна і більше, але пам'ятайте про обмеження CAPI2 в XP / 2003.
  • Чи не експериментуйте з алгоритмами підпису / хешування, якщо Вам потрібні підключення з боку XP / 2003. Коротко - виберіть SHA-1, цього цілком достатньо.

Трохи докладніше зупинюся на випуск спеціального сертифікату для RDP-сервера.

Спеціальний шаблон сертифікату для RDP-серверів

Ідеально буде, якщо сертифікат для RDP зробити не на основі звичайного шаблону (типу Web Server) і мати в полі Application Policy (яке в сертифікаті буде більш звично називатися Enchanced Key Usage - EKU) стандартні значення Client Authentication і Server Authentication, а додати свій шаблон , в якому буде єдине, спеціальне, що не додається стандартними способами значення застосування - Remote Desktop Authentication. Це значення Application Policy доведеться створити вручну, його OID'ом буде 1.3.6.1.4.1.311.54.1.2, ну а після - вже можна зробити новий шаблон сертифіката, на підставі якого і випустити сертифікат, адресно "заточених" під RDP Server.

Щоб повністю автоматизувати цю операцію, зробіть у нового шаблону передбачувану назву - наприклад, "RDPServerCert" - і зайдіть в об'єкт групової політики, а там відкрийте Computer Configuration -\u003e Policies -\u003e Administrative Templates -\u003e Windows Components -\u003e Remote Desktop Services -\u003e Remote Desktop Session Host -\u003e Security. Виберіть параметр Server Authentication Certificate Template і увімкніть його, а в поле значення введіть назву - ми зробили RDPServerCert. Тепер всі доменні хости, які підпадають під цю політику, будуть в разі включення на них RDP самі йти до Certification Authority, просити, при відсутності собі сертифікат на основі зазначеного шаблону, і допомагає його дефолтних для захисту підключень по RDP. Просто, зручно, ефективно.

Блокуємо підключення по RDP облікових записів з порожнім паролем

Дрібниця, а забувати про неї не потрібно.
Для блокування підключення учёток без паролів до RDP треба зайти в налаштування об'єкту групової політики: Computer Configuration -\u003e Windows Settings -\u003e Security Settings -\u003e Local Policies -\u003e Security Options і встановити "Accounts: Limit local account use of blank passwords to console logon only "в Enabled. Не полінуйтеся перевірити, що це так і є.

Налаштування ACL для підключення по RDP

За замовчуванням для підключення до RDP-сервера необхідно мати явне дозвіл User Access або Guest Access.
Цей дозвіл є у локальних груп Administrators і Remote Desktop Users. Найкраще використовувати для управління доступом до RDP-сервера групу Remote Desktop Users, додаючи в неї потрібні доменні групи, а не окремих користувачів. Модіціфіруйте вміст вкладки Security в налаштуваннях Properties у RDP-Tcp тільки в крайніх випадках, найкраще - додаючи групу "ім'я хоста RDP Blocked", якій явно заборонений доступ по RDP до зазначеного вузла.

Оптимізація швидкості RDP

Оптимізація швидкості RDP - досить велика тема, тому я розділю її на частини. У цій будуть ті способи, які будуть зменшувати навантаження на протокол до стиснення і до оптимізації мережевого рівня.

Кольоровість (бітова глибина)

У RDP 7.0 і вище доступні варіанти 32,16 і 8 біт. Якщо мова йде про роботу, то для неї буде досить 16 біт. Це відчутно знизить навантаження на канал, притому іноді більше, ніж в 2 рази, що дивно, але факт. 8 біт, звичайно, теж можна, але аж надто страшно воно буде виглядати. 16 біт ж цілком прийнятні.

Примітка: У Windows Server 2008 R2 підключення з 8 бітами вже не доступні.

Увімкніть на сервері параметр Limit Maximum Color Depth, або зробіть аналогічну дію в налаштуваннях RDP client.

вимкніть ClearType

Коли у Вас вимкнений ClearType, протокол RDP передається не картинку, а команди по відображенні символів. Коли включений - рендерить картинку з боку сервера, стискає і пересилає клієнту. Це з гарантією в рази менш ефективно, тому відключення ClearType значно прискорить процес роботи і зменшить час відгуку. Самі здивуєтеся, наскільки.

Це можна зробити як на рівні налаштувань клієнта, так і на стороні сервера (параметр Do not allow font smoothing в розділі Remote Session Enviroment в Computer Configuration -\u003e Policies -\u003e Administrative Templates -\u003e Windows Components -\u003e Remote Desktop Services -\u003e Remote Desktop Session Host).

приберіть wallpaper

Параметр Enforce removal of RD Wallpaper в розділі Remote Session Enviroment в Computer Configuration -\u003e Policies -\u003e Administrative Templates -\u003e Windows Components -\u003e Remote Desktop Services -\u003e Remote Desktop Session Host різко поліпшить ситуацію з перемальовуванням екрану термінальної сесії. Користувачі без котиків на робочому столі виживають нормально, перевірено.

Включаємо і налаштовуємо кешування зображень

Якщо на клієнті є досить оперативної пам'яті, То має сенс включити і налаштувати кешування бітмапами. Це дозволить виграти до 20-50% смуги пропускання. Для установки треба буде зайти в ключ

HKEY_CURRENT_USER \\ SOFTWARE \\ Microsoft \\ Terminal Server Client \\

і створити там параметри BitmapPersistCacheSize і BitmapCacheSize, обидва типи DWORD 32.
Параметр BitmapPersistCacheSize позначає розмір в кілобайтах дискового кешу. Значення за замовчуванням - 10. Має сенс збільшити цей параметр хоча б до 1000.
Параметр BitmapCacheSize позначає розмір в кілобайтах кеша в RAM. Значення за замовчуванням - 1500. Має сенс збільшити цей параметр хоча б до 5000. Це буде всього 5 мегабайт на клієнтську сесію, при сучасних масштабах оперативної пам'яті це несуттєво, і навіть якщо приведе до виграшу 10% продуктивності, вже себе окупить. До речі, цей же параметр можна поправити і в.rdp-файлі; якщо зберегти своє RDP-підключення, а після відкрити файл блокнотом, то серед параметрів можна додати щось виду bitmapcachesize: i: 5000, де 5000 - це 5МБ кеша.

Відключаємо Desktop Composition

Desktop Composition привносить всякі "красивості" типу Aero і його друзів і відчутно їсть смугу пропускання. Для роботи це не потрібно і шкідливо. Параметр Allow desktop composition for RDP Sessions в розділі Remote Session Enviroment в Computer Configuration -\u003e Policies -\u003e Administrative Templates -\u003e Windows Components -\u003e Remote Desktop Services -\u003e Remote Desktop Session Host необхідно виставити в параметр Disabled.

Оптимізуємо параметри Desktop Window Manager

Параметри, що знаходяться в розділі Remote Session Enviroment в Computer Configuration -\u003e Policies -\u003e Administrative Templates -\u003e Windows Components -\u003e Desktop Window Manager, будуть управляти "красивим" відображенням плавно виїжджають меню і подібного. Їх три - Do not allow window animations, Do not allow desktop compositions і Do not allow Flip3D invocation. Всі їх треба перемкнути в режим Enabled, тобто по суті - відключити всі ці функції.

Відключаємо редирект невикористовуваних пристроїв

Якщо у Вас не планується підключення певних класів пристроїв (наприклад, COM і LPT-портів), або аудіо, має сенс відключити можливість їх перенаправлення з боку сервера. Щоб клієнти з дефолтними настройками RDP Client не витрачали час підключення на узгодження невикористаного функціоналу. Це робиться там же, де і інші настройки сервера, в Properties у RDP-Tcp, вкладка Client Settings (там же, де ми робили настройки з глибиною кольору), розділ Redirection.

Налаштовуємо загальну логіку оптимізації візуальних даних RDP

Параметр, який має назву Optimize visual experience for RDP sessions, що знаходиться в розділі Remote Session Enviroment в Computer Configuration -\u003e Policies -\u003e Administrative Templates -\u003e Windows Components -\u003e Remote Desktop Services -\u003e Remote Desktop Session Host -\u003e Remote Session Enviroment, буде керувати тим , як RDP буде сприймає візуальні дані - як мультимедійні або як текстові. Це, грубо кажучи, "підказка" алгоритму стиснення, як грамотніше себе вести. Відповідно, для роботи треба буде виставити цей параметр в Text, а якщо хочеться багато красивих flash-банерів, HTML5 і переглядати відеокліпи - краще варіант Rich Multimedia.

Оптимізація стиснення RDP

Стиснення в RDP пройшло довгий шлях розвитку. За RDP 5.2 включно була підсистема стиснення ( "компресор"), що має внутрішню назву "Version 1" - найпростіший і легкий варіант з точки зору завантаження процесора клієнта, але найгірший з точки зору навантаження мережі трафіком. У RDP 6.0 зробили "Version 2", який був незначно, але поліпшений по параметру ефективності стиснення. Нам цікавий "Version 3", який працює тільки при підключенні до серверів Windows Server 2008 і старше. Він стискає краще за всіх, а витрати процесорного часу з урахуванням потужностей сучасних комп'ютерів неіснуючі.

Виграш при включенні V3 може, судячи з тестів, досягати 60% і, в общем-то, і без тестів відчутно помітний на око.

Як включити оптимальне стиснення в RDP

Це - клієнтська настройка. Відкрийте в потрібному об'єкті групової політики Computer Configuration -\u003e Policies -\u003e Administrative Templates -\u003e Windows Components -\u003e Remote Desktop Services -\u003e Remote Desktop Session Host -\u003e Remote Session Enviroment, виберіть там параметр Set compression algoritm for RDP data, увімкніть його та виберіть значення Optimize to use less network bandwidth.

Примітка: У багатьох виникає питання, навіщо в списку є параметр "відключити стиск". Це потрібно в разі, коли Ваші RDP-сесії стискає зовнішній пристрій, оптимізують WAN-підключення, щось виду Cisco WAAS. В інших випадках, звичайно, відключати стиснення сенсу немає.

Налаштування стиснення звукового потоку

RDP 7.0 приносить відмінну можливість регулювати якість стиснення вхідного звукового потоку (тобто звуку, який йде з сервера на клієнта). Це досить корисно - наприклад, якщо йде робота на термінальному сервері, то крім всяких службових звуків виду "прийшло повідомлення в ICQ" інші особливо як не плануються. Немає сенсу передавати з сервера нестислий звук CD-якості, якщо для роботи це не потрібно. Відповідно, потрібно налаштувати рівень стиснення звукового потоку.
Даний параметр буде називатися Limit audio playback quality і перебувати в розділі Device and Resource Redirection в Computer Configuration -\u003e Policies -\u003e Administrative Templates -\u003e Windows Components -\u003e Remote Desktop Services -\u003e Remote Desktop Session Host. Варіантів буде три:

  • High - звук буде йти без стиснення. Взагалі. Тобто, він буде підпадати під загальне стиснення протоколу RDP, але специфічне стиск звуку (з втратою якості) проводитися не буде.
  • Medium - стиснення буде адаптуватися під канал так, щоб не збільшувати затримку при передачі даних.
  • Dynamic - стиснення буде динамічно адаптуватися під канал так, щоб затримка не перевищувала 150ms.

Виберіть підходящий. Як відомо, для офісної роботи краще вибрати Dynamic.

Оптимізація співвідношення потоків даних в RDP

Трафік RDP-сесії не є чимось монолітним. Навпаки, він досить чітко розділений на потоки даних перенаправляється пристроїв (наприклад, копіювання файлу з локального хоста на термінальний сервер), аудиопоток, потік команд примітивів відтворення (RDP намагається передавати команди примітивів відтворення, і передає бітмапи в крайньому випадку), а також потоки пристроїв введення (мишка і клавіатура).

На взаємне співвідношення цих потоків і логіку його (співвідношення) обчислення (такий собі локальний QoS) можна впливати. Для цього треба з боку сервера зайти в ключ реєстру

HKEY_LOCAL_MACHINE \\ SYSTEM \\ CurrentControlSet \\ Services \\ TermDD

і створити там для початку (якщо їх там немає) чотири ключа:

  • FlowControlDisable
  • FlowControlDisplayBandwidth
  • FlowControlChannelBandwidth
  • FlowControlChargePostCompression

Тип у всіх - DWORD 32. Функціонал у ключів буде наступним.
Ключ FlowControlDisable визначатиме, чи використовується приоритезация взагалі. Якщо задати одиницю, то приоритезация буде виключена, якщо нуль - включена. Увімкніть її.
Ключі FlowControlDisplayBandwidth і FlowControlChannelBandwidth визначатимуть взаємне співвідношення двох потоків даних:

  • Потік взаємодії з користувачем (зображення + пристрої введення)
  • Інші дані (блокові пристрої, буфер обміну і все інше)

Самі значення цих ключів не критичні; критично то, як вони співвідносяться. Тобто, якщо Ви зробите FlowControlDisplayBandwidth рівним одиниці, а FlowControlChannelBandwidth - чотирьом, то співвідношення буде 1: 4, і на потік взаємодії з користувачем буде виділятися 20% смуги пропускання, а на решту - 80%. Якщо зробите 15 і 60 - результат буде ідентичним, так як співвідношення те ж саме.
Ключ FlowControlChargePostCompression визначатиме, коли вважається це співвідношення - до стиснення або після. Нуль - це до стиснення, одиниця - після.

Я рекомендую для використання виду "наш віддалений сервак далеко і до нього все по RDP підключаються і в офісі і 1С працюють" ставити співвідношення 1: 1 і вважати його після стиснення. З досвіду це може реально допомогти в ситуації "друк великого документа з термінального сервера на локальний принтер". Але це не догма - пробуйте, головний інструмент - знання, як це вважається і працює - у Вас вже є.

Включаємо Require secure RPC communication для RDP

Даний параметр діє аналогічно налаштувань для Secure RPC, які є в розділі Security групової політики і діють на всю систему, тільки налаштовується простіше. Включивши цей параметр Ви зробите обов'язковим для всіх клієнтських RPC-запитів шифрування (в залежності від налаштувань системи "нижня планка" шифрування буде різною - RC4 / DES або, в разі включення FIPS-140 - 3DES / AES) і використання як мінімум NTLMv2 для аутентифікації віддаленого виклику процедур. Завжди включайте цей параметр. Є міф про те, що він не працює у внедоменной середовищі. Це не так, і посилення захисту RPC нікому не завадить.

Це - серверна настройка. Відкрийте в потрібному об'єкті групової політики Computer Configuration -\u003e Policies -\u003e Administrative Templates -\u003e Windows Components -\u003e Remote Desktop Services -\u003e Remote Desktop Session Host -\u003e Security, виберіть там параметр Require secure RPC communication і увімкніть його.

Протокол віддаленого робочого стола RDP (Remote Desktop Protocol) забезпечує віддалений доступ через мережу до робочого столу комп'ютерів під управлінням операційної системи Windows. Використовується при підключенні тонких клієнтів до термінального сервера Windows із запущеною службою Microsoft Terminal Services. Розроблено компанією Microsoft.

Офіційна підтримка RDP включена в Windows Server 2008, Windows Server 2003, Windows Home Server, Windows XP Professional, Windows XP Media Center, Tablet PC Editions, Windows Vista Ultimate, Enterprise і Business editions. Усе версії Windows XP і Vista включають клієнтське додаток Remote Desktop Connection (RDC).

Ключові можливості протоколу RDP

  • Підтримка шифрування за алгоритмом RC-4 з довжиною ключа 128 або 56 біт
  • Підтримка протоколів TLS (Transport Layer Security)
  • Аутентифікація користувачів за допомогою смарт-карт (на сервері через службу термінальних підключень Microsoft Terminal Services)
  • Підтримка звуку на локальному комп'ютері для додатків термінального сервера
  • File System Redirection - дозволяє працювати з файлами локального комп'ютера на віддаленому термінальному сервері
  • Printer Redirection - дозволяє друкувати на принтері локального комп'ютера з додатків запущених на віддаленому термінальному сервері
  • Port Redirection - відкриває доступ до послідовним і паралельним портам локального комп'ютера для додатків запущених на віддаленому термінальному сервері
  • Спільне використання буфера обміну як на локальному комп'ютері, так і на віддаленому термінальному сервері
  • Глибина кольору дисплея: 24, 16, 15 або 8 біт

Незважаючи на те, що самі пакети проткола RDP передаються по мережі в зашифрованому вигляді, сама термінальна сесія може бути піддана атаці Man In The Middle, так як ні серверна частина, ні клієнтська не виробляють взаємну аутентифікацію переданих і прийнятих пакетів з даними. Тому для побудови повністю захищених рішень необхідно використовувати захист RDP на рівні SSL що з'явилася в Windows Server 2003 Service Pack 1.

Нові можливості з'явилися в шостій версії RDP

  • Remote Applications. Прямий запуск додатків на сервері в виділеної термінальній сесії без відкриття вікна термінальній сесії. Підтримка файлових асоціацій локального комп'ютера - можливість запуску додатків на сервері для відкриття документа на локальному комп'ютері у відповідності з розширенням в імені файлу.
  • Seamless Windows. Емуляція вікна локального комп'ютера з запуском програми на термінальному сервері. Автоматична аутентифікація на сервері з даними облікового запису користувача. Автоматичне завершення відповідної термінальної сесії при виході з.
  • Terminal Server Gateway. Підтримка підключень RDP через сервер-шлюз IIS з використанням протоколу https. Забезпечує захищене підключення до термінального сервера розташованому за ISS в локальній мережі підприємства.
  • Windows Aero Glass. Підтримка Windows Aero Glass включаючи згладжування шрифтів ClearType.
  • Windows Presentation Foundation. Підтримується на будь-яких клієнтів з установленной.NET Framework 3.0.
  • Повністю настроюються термінальні сервіси включаючи підтримку скриптів засобами Windows Management Instrumentation.
  • Поліпшене керування смугою пропускання для клієнтів RDP.
  • Підтримка декількох моніторів. Поділ екрана термінальній сесії на кілька моніторів. Працює тільки з системами Windows Vista.
  • Глибина кольору дисплея: 32, 24, 16, 15 або 8 біт