RDS Shadow - тіньовий підключення до RDP сесій користувачів в Windows Server 2016/2012 R2

У Windows 2012 R2 і Windows 8.1 Microsoft повернула функціонал Remote Desktop Shadowing (Тіньового підключення). Нагадаємо, що режим Shadow (тіньовий сеанс) - може використовувати адміністратором для перегляду і управління існуючої RDP сесією будь-якого користувача. Цей режим роботи підтримується практично з перших версій термінального сервера Microsoft і несподівано був прибраний в Windows Server 2012 (пов'язано з перенесенням стека rdp з режиму ядра в призначений для користувача режим). Функціонал RDS Shadow працює і в наступних версіях ОС: Windows Server 2016 / Windows 10.

зміст:

  • Використання Remote Desktop Shadow з графічного GUI
  • Тіньовий підключення RDS Shadow з PowerShell
  • Як дозволити звичайному користувачам використовувати тіньовий підключення

Крім того, у режиму тіньового підключення RDS Shadow і RDP клієнта з'явився ряд нових цікавих можливостей. Повний список параметрів RDPкліента mstsc.exe, що визначають можливість віддаленого тіньового підключення до сесії кінцевого користувача:

Mstsc.exe [/ Shadow: sessionID [/ v: Servername] [/ control] [/ noConsentPrompt]]

/ Shadow: ID - підключиться до RDP сесії з зазначеним ID.

/ V: servername - імяRDP / RDS термінального сервера (якщо не задано, використовується поточний).

/ control - можливість взаємодії з сеансом користувача (якщо не вказано, використовується режим перегляду сесії користувача).

/ noConsentPrompt - не запитувала у користувача підтвердження на підключення до сесії.

/ prompt -використовується для підключення під іншими обліковими даними. Запитується ім'я і пароль користувача для підключення до віддаленого комп'ютера.

Обмеження тіньових сеансів RDS в Windows 2012 R2

  • Підключатися до чужих сесій може тільки адміністратор сервера. Делегувати ці права звичайним користувачем можна
  • RDS Shadow не працюватиме в мережах на базі робочих груп

Використання Remote Desktop Shadow з графічного GUI

Підключитися до сесії користувача можна за допомогою утиліти mstsc.exe або безпосередньо з консолі Server Manager. Для цього в консолі Server Manager відкрийте колекцію QuickSessionCollection

Натиснувши на сесії цікавить користувача, виберіть у контекстному меню Shadow (Тіньова копія).

З'явиться вікно параметрів тіньового підключення. Можливий перегляд (View) І управління (Control) Сесією. Крім того, можна включити опцію Prompt for user consent (Запитувати згоду користувача на підключення до сесії).

Якщо Ви вибрали "Запитувати згоду користувача", в сесії у користувача з'явиться запит:

Запит на віддалене спостереження

Winitpro \ administrator запитує віддалений перегляд вашого сеансу. Ви приймаєте цей запрос.Winitpro \ administrator is requesting to view your session remotely. Do you accept the request?

Якщо користувач підтвердить, підключення, в режимі перегляду адміністратор побачить його робочий стіл, але не зможе взаємодіяти з ним.

Порада. Для відключення від сесії користувача і виходу з shadow-режиму потрібно натиснути ALT+* на робочій станції або Ctrl+* на термінальному сервері (якщо не задані альтернативні комбінації).

Якщо ж користувач відхилить підключення, з'явиться вікно:

Shadow Error: The operator or administrator has refused the request


Якщо спробувати підключитися до сесії користувача без запиту підтвердження, з'явиться помилка, що повідомляє, що таке це заборонено груповою політикою:

Shadow Error: The Group Policy setting is configured to require the user's consent. Verify the configuration of the policy settings.

Параметри віддаленого управліннями RDS сесіями користувача налаштовуються політикою Set rules for remote control of Remote Desktop Services user sessions (Встановити правила віддаленого управління для призначених для користувача сеансів служб віддалених робочих столів), яка знаходиться в розділі Policies -> Administrative Templates -> Windows components -> Remote Desktop Services -> Remote Session Host -> Connections (Адміністративні шаблони -> Компоненти Windows -> Служби віддалених робочих столів - Вузол сеансів віддалених робочих столів -> Підключення) в користувальницької і "комп'ютерної" секціях GPO. Даною політиці відповідає dword параметр реєстру Shadow в гілці HKLM \ SOFTWARE \ Policies \ Microsoft \ Windows NT \ Terminal Services.

Цією політикою можна налаштувати такі варіанти тіньового підключення через тіньовий підключення RD Shadow ::

  • No remote contol allowed - віддалене управління не дозволено (значення ключа реєстру Shadow = 0);
  • Full Control with users's permission - повний контроль з дозволу користувача (1);
  • Full Control without users's permission - повний контроль без дозволу користувача (2);
  • View Session with users's permission - спостереження за сеансом з дозволом користувача (3);
  • View Session without users's permission - спостереження за сеансом без дозволу користувача (4).

Тіньовий підключення RDS Shadow з PowerShell

Скористатися функціоналом тіньового підключення до сесії користувача через тіньовий підключення Remote Desktop Services можна і з Powershell.

В першу чергу покажемо, як отримати список сесій на термінальному сервері (сесії користувачів будуть згруповані в групи в залежності від їх статусу):

Get-RDUserSession | ft Username, UnifiedSessionId, SessionState, HostServer, ApplicationType -GroupBy Sessionstate

На даному сервері ми виявили три активних термінальних сесії. Підключимося до сесії користувача з ID сесії 3:
Mstsc / shadow: 3 / control
Також для отримання списку всіх сесії на сервері можна виконати команду

quser

або

qwinsta

На екрані з'явиться список RDP сесій, їх ID і статус: активна сесіія (Active) або відключена (Disconnected).

Для отримання списку сесій на віддаленому сервері виконайте команду:

query session / server: servername

Для більш зручного тіньового підключення до сесій можна використовувати наступний скрипт. Скрипт запропонує ввести ім'я віддаленого комп'ютера і виведе список всіх сеансів і запропонує вказати сеанс, до якого потрібно підключитися:

shadow.bat

@echo off
set / P rcomp = "Enter name or IP of a Remote PC:"
query session / server:% rcomp%
set / P rid = "Enter RDP user ID:"
start mstsc / shadow:% rid% / v:% rcomp% / control

Можна помістити даний файл в каталог% Windir% \ System32, в результаті для тіньового підключення досить виконати команду shadow.

Для підключення до консольної сесії можна використовувати такий скрипт:

@echo off
set / P rcomp = "Enter name or IP of a Remote PC:"
for / f "tokens = 3 delims =" %% G in ( 'query session console / server:% rcomp%') do set rid = %% G
start mstsc / shadow:% rid% / v:% rcomp% / control

Ви можете використовувати тіньовий підключення до робочих столів користувачів на комп'ютерах з Windows 10 і 8.1.

Як дозволити звичайному користувачам використовувати тіньовий підключення

У розглянутих вище прикладах для використання тіньового підключення до термінальних сесій необхідні права локального адміністратора на RDS сервері. Однак можна дозволити використовувати тіньове (shadow) підключення для підключення до сесій користувачів і простим користувачам (не даючи їм прав локального адміністратора на сервері).

Наприклад, ви хочете дозволити членам групи AllowRDSShadow використовувати тіньовий підключення до сесій користувачів, виконайте команду:

wmic / namespace: \\ root \ CIMV2 \ TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName = 'RDP-Tcp') CALL AddAccount 'corp \ AllowRDSShadow', 2

У січні 2018 роки після установки оновлення KB4056898 (патч Windows проти Meltdown і Spectre) користувачі зіткнулися, що в Windows Server 2012 R2 перестав працювати тіньової доступ. При спробі виконати тіньовий підключення до чужої сесії з'являється повідомлення "Невизначена помилка" (в балках присутній помилка STATUS_BAD_IMPERSONATION_LEVEL). Аналогічна проблема виникала і на RDS фермі на базі Windows Server 2016.

Для вирішення проблеми потрібно встановити оновлення окремих програмного забезпечення:

  • для Windows Server 2016 - KB4057142 (Від 17 січня 2018)
  • для Windows Server 2012 R2 - KB4057401 (Від 17 січня 2018)