Теневое shadow подключение к RDP/RDS сеансам позволяет администраторам подключиться к сессии любого пользователя для просмотра рабочего стола пользователя и взаимодействия с ним. Режим Remote Desktop Shadowing (теневого подключения) работает во всех современных версиях Windows, начиная с Windows 2012 R2 и Windows 8.1 (кроме версии Windows Server 2012, в которой стек rdp перенесен из режима ядра в пользовательский режим). В этой статье мы рассмотрим, как настроить и использовать RDS Shadowing для подключения к RDP сессиям пользователей в Windows Server 2016 и Windows 10
Содержание:
- Использование Remote Desktop Shadow из графического GUI
- Групповые политики управления теневыми подключениями к RDS сессиям в Windows
- Теневое подключение RDS Shadow из PowerShell
- Как разрешить обычном пользователям использовать теневое подключение?
В Windows Server 2016/Windows 10 в стандартном RDP клиенте (mstsc.exe) есть несколько специальных параметров, которые можно использовать для удаленного теневого (RDS Shadow) подключения к RDP сессии любого пользователя:
Mstsc.exe [/shadow:sessionID [/v:Servername] [/control] [/noConsentPrompt] [/prompt]]
- /shadow:sessionID – подключиться к RDP сессии пользователя по ID;
- /v:servername – можно указать имя удаленного хоста (RDP/RDS терминального сервера). Если имя сервера не указано, выполняется подключение к локальным сеансам на текущем хосте;
- /control – включает возможность взаимодействия с сеансом (рабочим столом) пользователя. Администратор может управлять мышкой пользователя, вводить данные с клавиатуры. Если эта опция не указана, используется режим просмотра сессии пользователя;
- /noConsentPrompt – опция позволяет администратору принудительно подключиться к любой сессии, не запрашивая у пользователя подтверждение на подключение;
- /prompt – позволяет использовать для подключения другую учетную запись, отличную от текущей. Запрашивается имя и пароль пользователя для подключения к сеансу.
Теневые сеансы можно использовать для подключения к сессиям пользователей на компьютерах и серверах как в домене Active Directory, так и в рабочей группе. Кроме того, не обязательно обладать правами администратора на RDS хосте, на котором работает пользователь. Администраторы могут делегировать полномочия RDS Shadowing любым, даже не-административных учетным записям (об этом ниже).
Использование Remote Desktop Shadow из графического GUI
Подключиться к сессии пользователя можно с помощью утилиты mstsc.exe или графической консоли Server Manager. Для этого в консоли Server Manager на RDS сервере перейдите в раздел Remote Desktop Services -> выберите свою коллекцию, например QuickSessionCollection.
В списке справа будет перечислен список пользователей у которых имеются сессии на данном RDS сервере. Щелкните правой кнопкой по сессии нужно пользователя, выберите в контекстном меню Shadow (Теневая копия).
Вы можете подключиться только к активной сессии пользователя. Если сессия находится в состоянии Disconnected (отключена по таймауту), подключиться к такой сессии нельзя:
Shadow Error - The specified session is not connected.
Появится окно c параметрами теневого подключения. Возможен просмотр (View) и управление (Control) сессией. Кроме того, можно включить опцию Prompt for user consent (Запрашивать согласие пользователя на подключение к сессии).
Если выбрана опция «Запрашивать согласие пользователя», в сессии у пользователя появится запрос:
Запрос на удаленное наблюдение/ Remote Monitoring Request Winitproadministrator запрашивает удаленный просмотр вашего сеанса. Вы принимаете этот запрос?
Winitproadministrator is requesting to view your session remotely. Do you accept the request?
Если пользователь подтвердит подключение, то администратор увидит его рабочий стол в режиме просмотра, но не сможет взаимодействовать с ним.
Совет. Для отключения от сессии пользователя и выхода из shadow-режима, нужно нажать ALT+* на рабочей станции или Ctrl+* на RDS сервере (если не заданы альтернативные комбинации).
Если пользователь отклонил административное Shadow RDS подключение, появится окно:
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 Shadow подключений к пользователям, используйте в качестве фильтра следующие события из журнала Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational:
- Event ID 20508: Shadow View Permission Granted
- Event ID 20503: Shadow View Session Started
- Event ID 20504: Shadow View Session Stopped
Групповые политики управления теневыми подключениями к RDS сессиям в Windows
Параметры удаленного управлениями 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 в ветке HKLMSOFTWAREPoliciesMicrosoftWindows NTTerminal Services (значения этого параметра, соответствующие параметрам политики указаны в скобках).
Этой политикой можно настроить следующие варианты теневого подключения RD Shadow:
- No remote control 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
).
Вы можете настроить правила удаленного подключения в домене из консоли управления GPO
gpmc.msc
с помощью рассмотренного параметра политики, либо групповой политикой, вносящей изменения напрямую в реестр системы (последний вариант позволяет более тонко нацелить политику на компьютеры с помощью Group Policy Item Level Targeting).
Теневое подключение RDS Shadow из PowerShell
Воспользоваться функционалом теневого подключения к сессии пользователя через теневое подключение Remote Desktop Services можно и из Powershell.
В первую очередь нужно получить список пользовательских сессий на терминальном RDS сервере (сессии пользователей будут сгруппированы в группы в зависимости от их статуса):
Get-RDUserSession | ft Username, UnifiedSessionId, SessionState, HostServer, ApplicationType -GroupBy Sessionstate
На данном сервере мы обнаружили три активных RDP сессии пользователей. Чтобы подключиться к сессии пользователя с ID сессии 3, выполните команду:
Mstsc /shadow:3 /control /noConsentPrompt
Также для получения списка всех RDP сессии на сервере (или десктопной редакции Windows 10 к которой разрешены множественные RDP подключения) можно использовать команду:
quser
Или
qwinsta
На экране отобразится список RDP сессий, их ID и статус: активная сессия (Active) или отключенная (Disconnected).
Для получения списка сессий на удалённом сервере выполните команду:
query session /server:servername
Чтобы подключиться к сессии пользователя на удаленном сервере, используйте команду:
Mstsc /v:rdsh2:3389 /shadow:3 /control
Для более удобного теневого подключения к RDP сессиям пользователей можно использовать следующий скрипт. Скрипт предложит ввести имя удаленного компьютера и выведет список всех пользователей с активными RDP сеансами. Вам нужно будет указать ID сеанса, к которому нужно подключится через Shadow сессию:
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
Также для теневого подключения можно использовать следующий PowerShell скрипт с простым графическим интерфейсом (rdp_shadow_connection.ps1):
Add-Type -assembly System.Windows.Forms
$Header = "SESSIONNAME", "USERNAME", "ID", "STATUS"
$dlgForm = New-Object System.Windows.Forms.Form
$dlgForm.Text ='Session Connect'
$dlgForm.Width = 400
$dlgForm.AutoSize = $true
$dlgBttn = New-Object System.Windows.Forms.Button
$dlgBttn.Text = 'Control'
$dlgBttn.Location = New-Object System.Drawing.Point(15,10)
$dlgForm.Controls.Add($dlgBttn)
$dlgList = New-Object System.Windows.Forms.ListView
$dlgList.Location = New-Object System.Drawing.Point(0,50)
$dlgList.Width = $dlgForm.ClientRectangle.Width
$dlgList.Height = $dlgForm.ClientRectangle.Height
$dlgList.Anchor = "Top, Left, Right, Bottom"
$dlgList.MultiSelect = $False
$dlgList.View = 'Details'
$dlgList.FullRowSelect = 1;
$dlgList.GridLines = 1
$dlgList.Scrollable = 1
$dlgForm.Controls.add($dlgList)
# Add columns to the ListView
foreach ($column in $Header){
$dlgList.Columns.Add($column) | Out-Null
}
$(qwinsta.exe | findstr "Active") -replace "^[s>]" , "" -replace "s+" , "," | ConvertFrom-Csv -Header $Header | ForEach-Object {
$dlgListItem = New-Object System.Windows.Forms.ListViewItem($_.SESSIONNAME)
$dlgListItem.Subitems.Add($_.USERNAME) | Out-Null
$dlgListItem.Subitems.Add($_.ID) | Out-Null
$dlgListItem.Subitems.Add($_.STATUS) | Out-Null
$dlgList.Items.Add($dlgListItem) | Out-Null
}
$dlgBttn.Add_Click(
{
$SelectedItem = $dlgList.SelectedItems[0]
if ($SelectedItem -eq $null){
[System.Windows.Forms.MessageBox]::Show("Выберите сессию для подключения")
}else{
$session_id = $SelectedItem.subitems[2].text
$(mstsc /shadow:$session_id /control)
#[System.Windows.Forms.MessageBox]::Show($session_id)
}
}
)
$dlgForm.ShowDialog()
Данный скрипт отобразить графическую форму со списком активных RDP сеансов на локальном сервере. Вам останется только выбрать учетную запись пользователя и нажать Connect.
Вы можете использовать теневое подключение к пользователю не только в Windows Server с ролью Remote Desktop Services, но и для подключения к рабочим столам пользователей на компьютерах с Windows 10 .
Как разрешить обычном пользователям использовать теневое подключение?
В рассмотренных выше примерах для использования теневого подключения к RDP сессиям пользователей необходимы права локального администратора на RDS сервере. Однако вы можете разрешить использовать теневое (shadow) подключение и для непривилегированных пользователей (не предоставляя им прав локального администратора на компьютере/сервере).
К примеру, вы хотите разрешить членам доменной группы AllowRDSShadow использовать теневое подключение к RDP сессиям. Выполните команду в cmd.exe с правами администратора:
wmic /namespace:\rootCIMV2TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName='RDP-Tcp') CALL AddAccount 'corpAllowRDSShadow',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)
Обновлено 15.03.2022
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов по системному администрированию Pyatilistnik.org. В прошлый раз мы с вами разобрали установку Hyper-V в Windows 11. Сегодня я хочу с вами разобрать тему удобной поддержки пользователей встроенными средствами Windows. Речь пойдет, о теневом подключении RDP или Remote Desktop Shadowing. Мы рассмотрим, как она реализована, как предоставляются права и многое другое. Статья получиться большой, но поверьте оно того стоит. Благодаря этому вы сможете сэкономить бюджеты компании, отказавшись от стороннего ПО.
💻 Что такое теневой сеанс Remote Desktop Shadowing?
Все мы прекрасно помним 2020 год, когда массово вводились ограничения и все пользователи переходили на дистанционное положение. Это заставило все компании организовать для сотрудников рабочее окружение, и самое главное это отслеживание и предоставление удаленной помощи, при возникших проблемах. Для удаленной помощи используется много различного программного обеспечения, например teamviewer, VNC, Dameware и многое другое, большая проблема в том, что все они платные для коммерческого использования. Не все компании готовы платить за это деньги, но в Windows есть и встроенная возможность, о которой многие просто не знают.
Режим Shadow (теневой сеанс RDP/RDS) — Это встроенное средство, позволяющее системным администраторам производить подключение в RDP сессию любого пользователя, видя его экран, имея возможность производить любые манипуляции курсором и сеансом, одним словом полное взаимодействие. Remote Desktop Shadowing идет в составе начиная с Windows 8.1, Windows Server 2012 R2 и выше.
Теневое копирование служб удаленных рабочих столов имеет как графический интерфейс, так и утилиту командной строки. Есть две версии функции. Так как устаревшая версия Remote Desktop Services Shadowing несовместима с последней версией утилиты, то я не буду подробно описывать предыдущую версию, а лишь упомяну несколько слов в качестве исторической справки. В более ранних версиях Windows файл shadow.exe позволял пользователю подключаться к удаленному узлу с помощью метода теневого копирования служб удаленных рабочих столов. Короче говоря, это предшественник утилиты mstsc и ее параметра /shadow. Он был представлен в Windows Server 2003 и доступен во многих версиях Windows.
Кроме того, есть два приложения с графическим интерфейсом, и они делают одно и то же: управление службами терминалов (TSAdmin), которое присутствует с Windows Server 2003, и диспетчер служб удаленных рабочих столов (RDSM), который является частью инструментов удаленного администрирования сервера (RSAT) и заменяет TSAdmin в Windows Server 2012.
Ключевое различие между версиями RDS Shadowing заключается в том, что в устаревшей версии вы должны сначала установить соединение RDP, чтобы получить сеанс на удаленном хосте, прежде чем вы сможете затенить чей-либо еще сеанс на этом хосте. В последней версии вы можете затенить сеанс пользователя на удаленном хосте с консоли вашего собственного хоста. В этой статье мы рассмотрим, как настроить и использовать RDS Shadowing для подключения к RDP сессиям пользователей в Windows Server 2022 и Windows 11.
⚙️ Какие порты использует теневое копирование служб удаленных рабочих столов
Функция теневого копирования служб удаленных рабочих столов не использует порт 3389/TCP (RDP), вместо этого он использует порт 445/TCP (SMB) и эфемерные порты, также известные как динамический диапазон портов (RPC). Так же на удаленном компьютере, куда вы будите производить подключения должны быть добавлены правила:
- Первое правило называется «File and Printer Sharing (SMB-In)», которое позволяет подключаться к порту 445/TCP;
- Второй есть «Remote Desktop — Shadow (TCP-In)». Это позволяет %SystemRoot%system32RdpSa.exe двоичному файлу обрабатывать входящие соединения на любом локальном TCP-порту. Динамический диапазон портов в Windows обычно включает TCP-порты с 49152 по 65535.
Какой уровень прав необходим для использования Remote Desktop Services Shadowing
Для того, чтобы вы могли производить теневое подключение к пользователям RDS фермы или отдельным серверам, вам нужны права администратора на конечных серверах, но и это можно обойти, произведя точечное делегирование прав на функцию shadow, не имея при этом административного доступа на конечных серверах. Как это организовать я покажу, немного ниже.
⚒ Настройка групповой политики управления теневыми подключениями к RDS сессиям в Windows
Перед тем, как мы с вами разберем практические методы подключения Remote Desktop Shadow, нам нужно настроить групповую политику, которая будет определять, как оператор, кто будет помогать конечному пользователю, будет с ним взаимодействовать. У системного администратора есть возможность оставить пользователю одобрение подключения или же можно сделать без уведомления, существует пять вариантов политики.
- No remote control allowed — удаленное управление не разрешено (значение параметра реестра 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).
Данный ключ реестра можно найти в разделе HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindows NTTerminal Services под названием «Shadow«
Найти данную политику можно по пути:
Конфигурация Компьютера — Политики — Административные шаблоны — Компоненты Windows — Службы удаленных рабочих столов — Узел сеансов удаленных рабочих столов — Подключения (Policies — Administrative Templates — Windows components — Remote Desktop Services — Remote Session Host — Connections)
Она будет иметь название «Установить правила удаленного управления для пользовательских сеансов служб удаленных рабочих столов (Set rules for remote control of Remote Desktop Services user sessions)«
Чтобы получить текущее значение ключа Shadow, вам необходимо на конечном компьютере открыть командную строку и ввести:
reg query «HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindows NTTerminal Services» /v Shadow
Его также можно установить вручную с помощью командной строки, введя следующую команду:
reg add «HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindows NTTerminal Services» /v Shadow /t REG_DWORD /d 4
Чтобы удалить тип теневого ключа:
reg delete «HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindows NTTerminal Services» /v Shadow /f
🌐 Подключение Remote Desktop Shadow из графического интерфейса
Данный метод является наверное самым удобным, так как позволяет визуально все видеть, контролировать. Все, что вам нужно это собранная оснастка по управлению RDS фермой в диспетчере серверов, как это делать смотрите по ссылке слева. В качестве тестового пользователя я буду использовать Барбоскина Геннадия Викторовичу (Barboskin.g). Для начала давайте его найдем, для этого в оснастке выберите нужную коллекцию, в области «Подключения» произведите поиск вашего пользователя. После его нахождения кликните по нему правым кликом, в контекстном меню вы увидите пункт «Теневая копия (Shadow)«.
У вас появится дополнительное окно с параметрами теневой копии:
- Удаленный сеанс — Просмотреть/Управление. Тут либо вы просто наблюдатель, все действия делает сам пользователь или же полный контроль.
- Запрашивать согласие пользователя
У пользователя на удаленном сервере появится окно «Запрос на удаленное наблюдение. Пользователь запрашивает удаленный просмотр вашего сеанса. Вы принимаете этот запрос? (User is requesting to view your session remotely. Do you accept the request?) «, тут он может подтвердить или отказаться.
Хочу напомнить, что вы можете управлять данным окном, будет оно требоваться или нет, через групповые политики.
Если у вас явным образом не задано отсутствие данного окна, то вы получите ошибку, если захотите подключиться без уведомления.
Согласно настройкам групповой политики требуется согласие пользователя. Проверьте настройки групповой политики (The Group Policy setting is configured to require the user’s consent)
Если конечный пользователь подтвердил запрос на удаленное наблюдение, то у вас должно открыться новое RDP окно, где будет отображена сессия удаленного пользователя и с ней можно взаимодействовать.
Если пользователь закроет окно RDP подключения, то он перейдет в статус «Отключен (Disconnected)«, то вас выкинет из сессии теневого копирования. Вы увидите:
Сеанс с теневым доступом был отключен
Подключиться к сеансу в статусе «Отключен (Disconnected)» не получиться, опция «Теневая копия (Shadow)» просто не будет присутствовать в списке
Чтобы завершить сессию пользователя и выйти из shadow-режима, нужно нажать сочетание клавиш ALT+* на рабочей станции или Ctrl+* на RDS сервере (Так же можно переопределить данные комбинации).
Второй вариант, которым я могу пользоваться при теневом копировании к пользователю RDP, это использование бесплатного ПО по работе с RDS. Оно называется Terminal Services Manager, о нем я вам делал подробный обзор. Найдите в списке пользователей нужного вам, кликните по нему правым кликом и выберите пункт «Shadow«.
У вас так же появится окно, где вы должны запросить доступ с нужным уровнем, а далее все как описано выше.
🔍 Логирование сессий теневого копирования
Если у вас появится желание отслеживать данные, о подключениях с использованием теневого копирования, то вам необходимо на сервере куда производилось затемнение сеанса перейти в журнал:
Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational
Вот такая будет последовательность.
- Событие ID 20508
Событие ID 20508: Предоставлено разрешение на теневой просмотр. Пользователь barboskin.g (идентификатор сеанса: 440) предоставил разрешение пользователю Сёмину Ивану
- Событие ID 20503
Событие ID 20503: Запущен теневой просмотр сеанса. Просмотр пользователем (Иван Сёмин) на компьютере c-10-.root.pyatilistnik.org сеанса пользователя ROOTbarboskin.g (идентификатор сеанса: 440)
- Событие ID 20504
Событие ID 20504 : Остановлен теневой просмотр сеанса. Просмотр пользователем (Семин Иван) на компьютере c-10.root.pyatilistnik.org сеанса пользователя ROOTbarboskin.g (идентификатор сеанса: 440)
- Событие ID 20513
Событие ID 20513: Сбой теневого доступа к сеансу. Пользователю (Иван Сёмин) не удалось получить теневой доступ к сеансу пользователя Rootbarboskin.g (идентификатор сеанса: 440) из-за настроек групповой политики.
- Событие ID 20510
Событие ID 20510: Предоставлено разрешение на теневое управление. Пользователь ROOTbarboskin.g (идентификатор сеанса: 440) предоставил разрешение пользователю (Иван Сёмин)
Как использовать теневое подключение через PowerShell и командную строку
Напоминаю, что в качестве клиентской ОС у меня установлена Windows 11, а подключаться я буду к сессия пользователя работающего за Windows Server 2022. Для того, чтобы мы могли из PowerShell или командной строки использовать теневое копирование, мы должны вызвать утилиту mstsc.
mstsc — это по сити встроенный RDP клиент в операционной системе Windows. Запустите оболочку PowerShell и введите:
В результате вы получите полную справку по данной утилите со всеми ключами. Тут нас будут интересовать из всего перечня 4 ключа:
- /prompt — По сути это ключ для запуска процедуры от другого пользователя. Например вы локально сидите под обычной учетной записью, а команду хотите запускать из под административной.
- /shadow:sessionID – подключиться к указанной сессии пользователя по ID;
- /control – Дает вам возможность полного управления мышкой и клавиатурой при теневой сессии.
- noConsentPrompt — Разрешает удаленное управления без согласования пользователем
- /v:servername – можно указать имя удаленного хоста (RDP/RDS терминального сервера). Если имя сервера не указано, выполняется подключение к локальным сеансам на текущем хосте;
Перед использованием RDS Shadowing мне нужно выяснить SessionID клиента к которому буду подключаться, как это сделать я уже рассказывал. Я для своего обзора буду использовать камандлет Get-TSSession.
Get-TSSession -ComputerName Имя сервера
Нужный мне SessionID 517.
Теперь подключаемся к сессии пользователя на удаленном сервере, для этого конструкция будет такой:
mstsc /v:term /shadow:517 /control /prompt
Кстати если будет писать, что не правильное имя компьютера, то уберите в команде номер порта
Если вы запускаете с запросом учетных данных другого пользователя, то появится всплывающее окно с вводом логина и пароля.
У удаленного пользователя работающего по RDP появится всплывающее окно, где он должен подтвердить ваш запрос:
Пользователь запрашивает удаленное управление вашим сеансом. Вы принимаете этот запрос?
Удобный Bat файл для использования Remote Desktop Services Shadowing в командной строке
Создайте из текстового файла batник, поменяв расширение. И добавьте вот такое содержимое, теперь при его запуске будет выводиться список сеансов и удобный запрос ID.
@echo off
mode con:cols=100 lines=30
query session
echo
set /p usersession= Enter the session ID:
mstsc /shadow:%usersession% /control /noconsentprompt
Как дать права на теневые сеансы не администраторам
Как я указывал выше, теневое копирование можно использовать по умолчанию, только администраторам конечного сервера, НО если у вас есть, например техническая поддержка, которая помогает пользователям удаленного рабочего стола устранять через теневые сеансы их проблемы, и вы не хотите их делать администраторами на серверах, то вы можете делегировать им права, только на данный функционал.
И так, режим shadow для непривилегированного пользователя в Windows Server организовывается через PowerShell. Вам необходимо имя группы, для которой будут делегированы права и выполнить команду на конечном сервере. Но для начала давайте посмотрим у кого уже есть такие права. Для этого в оболочке PowerShell выполните:
Get-WmiObject Win32_TSAccount -Namespace rootCIMV2TerminalServices -Filter «TerminalName=’RDP-Tcp'»
Для cmd:
Обратите тут на поле _GENUS — это как раз разрешение. Данная команда вам будет полезна, когда вы добавите группу и проверите, появилась ли она тут. Цифра 2 в конце определяет тип доступа:
- 0 = WINSTATION_GUEST_ACCESS
- 1 = WINSTATION_USER_ACCESS
- 2 = WINSTATION_ALL_ACCESS
Далее я дам права для группы ROOTRDP-SHADOW-SESSION, чтобы она могла использовать Remote Desktop Services Shadowing.
wmic /namespace:\rootCIMV2TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName=»RDP-Tcp») CALL AddAccount «ROOTRDP-SHADOW-SESSION«,2
Не забываем, что вам потребуется произвести перезагрузку сервера, чтобы все вступило в силу
Проверим, что они появились
Чтобы удалить права, выполните:
$Group = @(gwmi —Namespace RootCIMv2TerminalServices —query «select * from Win32_TSAccount where TerminalName=»RDP-TCP» AND AccountName=»ROOTRDP-SHADOW-SESSION«)
$Group.Delete()
Массовая настройка теневого подключения для не администраторов
Если у вас, как в моей компании RDS ферма состоит из 50 и более RDSH хостов, то чтобы вам не ходить по каждому из них, нужно воспользоваться вот таким моим скриптом PowerShell.
function Date {Get-Date -Format «yyyy.MM.dd HH:mm:ss»}
# Тут подгружаем файл со списком серверов
$comps_file = «$PSScriptRootservers.txt»
foreach ($server in (Get-Content $comps_file))
{
«$(Date) Trying to process server $server»
# wmic /namespace:\rootCIMV2TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName =»RDP-Tcp») CALL AddAccount ,2
$status = $null
$rds = Get-WmiObject -Namespace root/cimv2/terminalservices -Class Win32_TSPermissionsSetting -Filter «TerminalName = ‘RDP-Tcp'» -ComputerName $server
$status = $rds.AddAccount(«ROOTRDP-SHADOW-SESSION«,2)
if ($status.ReturnValue -eq 0)
{
«$(Date) All good»
}
else
{
«$(Date) Something went wrong»
}
}
Устранение непредвиденной ошибки
В Windows Server 2012R2-2016 вы можете получить ошибку «Неопознанная ошибка или Произошла внутренняя ошибка» при попытке использования функционала shadow. Тут все дело в том, что у вас не установлены обновления от 2018 года.
в логах вы можете обнаружить события STATUS_BAD_IMPERSONATION_LEVEL
- Windows Server 2016 — KB4057142 (от 17 января 2018)
- Windows Server 2012 R2 — KB4057401 (от 17 января 2018)
Shadow session mode allows RDS administrators to view and interact with the user’s desktop. Remote Desktop Shadowing mode works on all modern versions of Windows starting from Windows Server 2012 R2 and Windows 8.1 (except for Windows Server 2012, due to the transfer of the RDP stack from kernel to user mode). In this article, we’ll look at how to configure and use RDS Shadowing to connect and manage active RDP user sessions on Windows Server 2016 and Windows 10.
Contents:
- Shadow Connection Options in the Windows RDP Client (mstsc.exe)
- Using Remote Desktop Shadow from the Windows GUI
- Configuring RDS Shadow Rules on Windows Using GPO
- Shadowing RDP Session with PowerShell
- How-to Allow Non-admin Users to Shadow RDS Sessions?
Shadow Connection Options in the Windows RDP Client (mstsc.exe)
On Windows Server 2016/Windows 10, the built-in RDP client (mstsc.exe
) has several special options that can be used to remotely shadow connect to an active RDP session of any user:
Mstsc.exe [/shadow:sessionID [/v:Servername] [/control] [/noConsentPrompt] [/prompt]]
- /shadow:ID – connect to the user’s RDP session with the specified ID;
- /v:servername – you can specify the hostname or IP address of the remote RDP/RDS host. If not set, connections are made to local user sessions on the current host;
- /control – allows to interact with the user session (desktop). The administrator can control the user’s mouse, input data from the keyboard. If this parameter is not set, the user’s session view mode is used;
- /noConsentPrompt – the option allows the administrator to force the connection to any session without asking the user to confirm the connection;
- /prompt – allows to connect with other credentials. The user name and password are requested to connect to the remote computer.
Shadow sessions can be used to connect to user sessions on computers and servers in both an Active Directory domain and a workgroup. In addition, it is not necessary to have administrator privileges on the RDS host on this the user’s RDP session is running . Administrators can delegate RDS Shadowing permissions to any user account, even for non-admins (more on this below).
Using Remote Desktop Shadow from the Windows GUI
You can connect to a user session using mstsc.exe
or directly from Server Manager graphical console. To do it, open the Server Manager console on the RDS server, go to the Remote Desktop Services section -> select your collection, for example QuickSessionCollection
.
The list on the right will contain a list of users who have sessions on this RDS server. Right-click on the user session you want, select Shadow from the drop-down menu.
You can only connect to an active user session. If the session is in a disconnected state (due to the RDS session limit/timeout settings), you cannot connect to such a session:
Shadow Error - The specified session is not connected.
A window with Shadow connection parameters will appear. You can either View or Control a user’s RDP session. You can also check Prompt for user consent option.
If this option is checked, the following request appears in the user’s RDP session:
Remote Monitoring Request woshubadministrator is requesting to view your session remotely. Do you accept the request?
If the user confirms the connection, the administrator will see his desktop in View mode, but won’t be able to interact with it.
Tip. To disconnect from a user session and exit the Shadow mode, press ALT+*
on the workstation or Ctrl+*
on the RDS server (if no alternative combinations are not set).
If a user rejects the administrative Shadow RDS connection, the following message appears:
Shadow Error: The operator or administrator has refused the request.
If you attempt to connect to a user’s session without prompting for confirmation, you receive an error message:
Shadow Error: The Group Policy setting is configured to require the user’s consent. Verify the configuration of the policy settings.
If you need to audit RDS shadow connection events for user sessions, use the following filtered events from the Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational log:
- Event ID 20508: Shadow View Permission Granted;
- Event ID 20503: Shadow View Session Started;
- Event ID 20504: Shadow View Session Stopped.
Configuring RDS Shadow Rules on Windows Using GPO
The settings for remote connections to RDS user sessions are configured using the Group Policy parameter Set rules for remote control of Remote Desktop Services user sessions, which is located under the User and Computer sections of the GPO: Policies -> Administrative Templates -> Windows components -> Remote Desktop Services -> Remote Session Host -> Connections. This policy corresponds to the DWORD Shadow parameter under the registry key HKLMSOFTWAREPoliciesMicrosoftWindows NTTerminal Services
(the values of this parameter corresponding to the policy settings are specified in brackets).
This policy can be used to configure the following RD Shadow connection options:
- No remote control allowed (corresponds to the value of the registry parameter
Shadow = 0
); - Full Control with user’s permission (
1
); - Full Control without user’s permission (
2
); - View Session with user’s permission (
3
); - View Session without user’s permission (
4
).
To set the parameter of this policy directly through the registry, you can use the command:
reg add "HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindows NTTerminal Services" /v Shadow /t REG_DWORD /d 4
You can configure rules for remote shadow connections in the AD domain from the gpmc.msc
console using the policy parameter described above, or by using Group Policy Preferences, which directly modify the registry parameter (the latter option allows you to more accurately target the policy to specific computers using the Group Policy Item Level Targeting).
Shadowing RDP Session with PowerShell
You can also use the Remote Desktop Services Shadow features to connect to a user’s session from PowerShell. First of all, you need to get a list of sessions on the RDS host (user sessions will be grouped according to their state):
Get-RDUserSession | ft Username, UnifiedSessionId, SessionState, HostServer, ApplicationType -GroupBy Sessionstate
There are three active RDP user sessions on this server. Let’s connect to the user session with the session ID 3:
Mstsc /shadow:3 /control
Also, to get a list of all RDP sessions on the server (or on the Windows 10 desktop to which multiple RDP connections are allowed), you can use the command:
quser
or
qwinsta
The screen will display a list of RDP user sessions, their IDs and states: Active
or Disconnected
.
To show the list of sessions on a remote server, run the following command:
query session /server:servername
To connect to a user session on a remote server, use the command:
mstsc /v:rdsh2:3389 /shadow:3 /control
The dynamic port range (RPC) 49152 to 65535 is used to establish a remote shadow connection session instead of the default TCP/3389 RDP port.
For more convenient shadow connection to RDP user sessions, you can use the following batch script. It prompts you to enter the name of the remote RDS server, displays a list of all sessions and prompts you to specify the session (ID) to which you want to connect to:
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
You can save this bat file in the %Windir%System32
directory. As a result, you just need to run the shadow command to start the shadow connection.
To connect to the console session, you can use this script:
shadow_console.bat
@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
You can also use the following PowerShell script with a simple GUI (shadow_user_rdp_session.ps1) for shadow connection:
Add-Type -assembly System.Windows.Forms
$Header = "SESSIONNAME", "USERNAME", "ID", "STATUS"
$gForm = New-Object System.Windows.Forms.Form
$gForm.Text ='Shadow Session Connect'
$gForm.Width = 400
$gForm.AutoSize = $true
$dBttn = New-Object System.Windows.Forms.Button
$dBttn.Text = 'Control'
$dBttn.Location = New-Object System.Drawing.Point(15,10)
$gForm.Controls.Add($dBttn)
$dList = New-Object System.Windows.Forms.ListView
$dList.Location = New-Object System.Drawing.Point(0,50)
$dList.Width = $gForm.ClientRectangle.Width
$dList.Height = $gForm.ClientRectangle.Height
$dList.Anchor = "Top, Left, Right, Bottom"
$dList.MultiSelect = $False
$dList.View = 'Details'
$dList.FullRowSelect = 1;
$dList.GridLines = 1
$dList.Scrollable = 1
$gForm.Controls.add($dList)
foreach ($column in $Header){
$dList.Columns.Add($column) | Out-Null
}
$(qwinsta.exe | findstr "Active") -replace "^[s>]" , "" -replace "s+" , "," | ConvertFrom-Csv -Header $Header | ForEach-Object {
$dListItem = New-Object System.Windows.Forms.ListViewItem($_.SESSIONNAME)
$dListItem.Subitems.Add($_.USERNAME) | Out-Null
$dListItem.Subitems.Add($_.ID) | Out-Null
$dListItem.Subitems.Add($_.STATUS) | Out-Null
$dList.Items.Add($dListItem) | Out-Null
}
$dBttn.Add_Click(
{
$SelectedItem = $dList.SelectedItems[0]
if ($SelectedItem -eq $null){
[System.Windows.Forms.MessageBox]::Show("Select a user session to connect ")
}else{
$session_id = $SelectedItem.subitems[2].text
$(mstsc /shadow:$session_id /control)
#[System.Windows.Forms.MessageBox]::Show($session_id)
}
}
)
$gForm.ShowDialog()
This script displays a simple graphical form with a list of active RDP sessions on the local host. You just need to select a user account and click the Connect button.
You can use the shadow user connection not only on Windows Server with the Remote Desktop Services role, but also to connect to users’ desktops running Windows 10 (Using Remote Desktop Session Shadowing Mode in Windows 10).
How-to Allow Non-admin Users to Shadow RDS Sessions?
In the examples above, using the shadow connection to RDS user sessions requires local administrator privileges on the RDS server. However, you can allow a non-admin user to shadow RDP sessions without granting local admin permissions on the computer/server.
For instance, you want to allow members of the AllowRDSShadow group to use a shadow connection to RDP user sessions. Open the elevated command prompt (cmd.exe) and run the command:
wmic /namespace:\rootCIMV2TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName=”RDP-Tcp”) CALL AddAccount “woshubAllowRDSShadow”,2
Главная » Видео » Как подключиться в режиме теневой копии WIndows Server 2012/2016 если поднят Active Directory
Удаленное управление сеансом пользователя windows server. Удаленное управление пользовательским сеансом Windows — используем стандартные средства. Как разрешить обычном пользователям использовать теневое подключение
Кроме того, у режима RD Shadow и rdp клиента появился ряд новых интересных возможностей. Полный список опций rdp клиента mstsc.exe, определяющих возможность удаленного подключения к сессии конечного пользователя:
/shadow:ID — подключится к терминальной сессии с указанным ID
/v:servername — имя терминального сервера (если не задано, используется текущий)
/control — возможность взаимодействия с сеансом пользователя (если не указано, используется режим просмотра сессии пользователя).
/noConsentPrompt — не запрашивать у пользователя подтверждение на подключение к сессии
Ограничения теневых сеансов RDS в Windows 2012 R2
- Подключаться к чужим сессиям может только администратор сервера. Делегировать эти права обычным пользователем нельзя
- RDS Shadow не будет работать в сетях на базе рабочих групп
Установка служб RDP
(установка служб удаленных рабочих столов)
В «Диспетчере серверов» выберите «Управление» и «Добавить роли и компоненты«:
На первым шаге «Мастера добавления ролей и компонентов» и нажимаем «Далее«:
На втором шаге выбираем «Установка служб удалённых рабочих столов«:
В следующем шаге мастер попросит Вас выбрать тип развертывания. Выберите «Стандартное развертывание» и нажимаем «Далее«:
Выберите сценарий «Развертывание рабочих столов на основе сеансов» и “Далее”:
Нажмите «Далее«:
Здесь нужно выбрать сервер «Посредник подключений к удалённому рабочему столу«, выбираем сервер в «Пуле серверов» и нажимаем «Далее«.
На этом этапе выберите сервер из списка «Пул серверов» и нажмите «Далее«:
Укажите сервер «Узла сеансов удалённых рабочих столов» выбрав сервер из списка “Пул серверов” и нажмите “Далее”:
Поставте галочки напротив пункта “Автоматически перезапускать конечный сервер, если это потребуется” и нажмите «Развернуть«:
Дождитесь установки выбраных ролей, после чего компьютер будет перезагружен.
После перезагрузки автоматически запустится «Мастер добавления ролей и компонентов«, который настроит установленные службы.
Дождитесь окончания настройки и нажмите “Закрыть”:
На этом установка «Службы удалённых рабочих столов» окончена.
⚙️ Какие порты использует теневое копирование служб удаленных рабочих столов
Функция теневого копирования служб удаленных рабочих столов не использует порт 3389/TCP (RDP), вместо этого он использует порт 445/TCP (SMB) и эфемерные порты, также известные как динамический диапазон портов (RPC). Так же на удаленном компьютере, куда вы будите производить подключения должны быть добавлены правила:
- Первое правило называется «File and Printer Sharing (SMB-In)», которое позволяет подключаться к порту 445/TCP;
- Второй есть «Remote Desktop — Shadow (TCP-In)». Это позволяет %SystemRoot%system32RdpSa.exe двоичному файлу обрабатывать входящие соединения на любом локальном TCP-порту. Динамический диапазон портов в Windows обычно включает TCP-порты с 49152 по 65535.
Abusing the Shadow Registry Key and the NoConsentPrompt Parameter
I haven’t mentioned the Shadow registry key yet, because it doesn’t exist by default.
The Shadow key doesn’t exist by default
In this case the behavior is the same as when the key value is set to 1 (described below). In other words, a shadowee must explicitly give permission to allow their session to be shadowed.
To be able to shadow it without permission, you must intentionally override this with a group policy, for example, using GUI application called Local Group Policy Editor ( gpedit.msc ) set the Set rules for remote control of Remote Desktop Services user sessions policy value to allow session shadowing without user permission. It is located at Local Computer Policy → Computer Configuration → Administrative Templates → Windows Components → Remote Desktop Services → Remote Desktop Session Host → Connections.
The policy setting window of the Local Group Policy Editor management console
It can also be set manually with a command line interpreter by issuing the following command:
where the value of the /d parameter is one of the following:
- 0 – No remote control allowed;
- 1 – Full Control with user’s permission;
- 2 – Full Control without user’s permission;
- 3 – View Session with user’s permission;
- 4 – View Session without user’s permission.
Selecting the Not Configured value or the Disabled value deletes the Shadow registry key.
Full Control also allows to connect in the View Session mode, but to avoid a situation with the mistakenly specified /control parameter it is safer to set the Shadow value to 4.
Note: to get the current value of the Shadow key issue the following:
to remove the Shadow key type
Defining the Shadow parameter on the remote host, it is possible to shadow a session without a user’s consent as follows:
- /v parameter lets specify the value that is an IP address or a hostname of a remote host;
- /shadow parameter is used to specify the value that is a shadowee’s session ID;
- /noconsentprompt parameter allows to bypass a shadowee’s permission and shadow their session without their consent;
- /prompt parameter is used to specify a user’s credentials to connect to a remote host.
Another way to specify user’s credentials without having to constantly type them in the pop-up window is to use the runas command as follows:
and in the new command line interpetator window run the mstsc utility
The same works for qwinsta and quser .
Sometimes you can face the following general error:
which can mean anything, but in some cases it may mean that
- the user in whose context the current command is issued doesn’t exist on a remote host;
- the specified user credentials are incorrect;
- you are trying to shadow a session to which you don’t have permissions.
This behavior is pretty much the same for qwinsta :
In a workgroup environment you can use any of the local accounts if this account is also present on a remote host.
Moreover, if you are trying to shadow a session (or list sessions using qwinsta or quser ) with an unprivileged user account on a remote host, then you are able to connect only to the session (to list only information about a session) related to this user.
You will get the same behavior if you’re using a non-RID 500 administrator account, but UAC remote restrictions are enabled on the remote host, more precisely it means that the LocalAccountTokenFilterPolicy registry key is set to 0 or the key doesn’t exist (by default).
In the first screenshot UAC remote restrictions are enabled and in the second one they are disabled
The qwinsta command output while UAC remote restrictions are enabled The qwinsta command output while UAC remote restrictions are disabled
This is a well-known security mechanism that strips out the administrator access token when a user is connected remotely. More details are at https://docs.microsoft.com/en-us/troubleshoot/windows-server/windows-security/user-account-control-and-remote-restriction.
To disable it change the value to 1 with the following command:
Note: to get the current value of the LocalAccountTokenFilterPolicy key, issue the following:
to remove the LocalAccountTokenFilterPolicy key type
It’s important that if you are lucky and the built-in RID 500 administrator account is enabled (by default it is disabled) on the remote host you are able to shadow a session using it since the LocalAccountTokenFilterPolicy key doesn’t affect it. There is another FilterAdministratorToken registry key that might restrict this account if it is set to 1, but by default it is set to 0.
So, in a workgroup (as well as in a domain) environment a local administrator is the only local user that can access other local user’s sessions (if the LocalAccountTokenFilterPolicy and the FilterAdministratorToken registry keys are set to the appropriate values).
In a domain environment any domain administrator is able to shadow sessions of both local and domain users.
I don’t know when it might be useful, but it is possible to enumerate the existence of a session using mstsc itself by simply incrementing the value
If there is no such session, then the following error occurs:
The session you’re trying to connect to doesn’t exist
Alternatively, if a session exists, but nobody is connected to it or you have no necessary permissions you get one of the following errors:
The session exists, but nobody is connected to it Not enough permissions to shadow a session
Otherwise, you are granted permissions and a viewer’s window is opened
A successfully established shadowing connection
Теневое подключение RDS Shadow из PowerShell
Воспользоваться функционалом теневого подключения к сессии пользователя через теневое подключение Remote Desktop Services можно и из Powershell.
В первую очередь покажем, как получить список сессий на терминальном сервере (сессии пользователей будут сгруппированы в группы в зависимости от их статуса):
Get-RDUserSession | ft Username, UnifiedSessionId, SessionState, HostServer, ApplicationType -GroupBy Sessionstate
На данном сервере мы обнаружили три активных терминальных сессии. Подключимся к сессии пользователя с ID сессии 3:
Mstsc /shadow:3 /control
Также для получения списка всех сессии на сервере можно выполнить команду
На экране отобразится список RDP сессий, их ID и статус: активная сесиия (Active) или отключенная (Disconnected).
Для получения списка сессий на удалённом сервере выполните команду:
query session /server:servername
Для более удобного теневого подключения к сессиям можно использовать следующий скрипт. Скрипт предложит ввести имя удаленного компьютера и выведет список всех сеансов и предложит указать сеанс, к которому нужно подключится:
query session /server:%rcomp%
set /P rid=»Enter RDP user ID: «
Можно поместить данный файл в каталог %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
Использование Remote Desktop Shadow из графического GUI
Подключиться к сессии пользователя можно с помощью утилиты mstsc.exe или непосредственно из консоли Server Manager. Для этого в консоли Server Manager откройте коллекцию QuickSessionCollection
Щелкнув по сессии интересующего пользователя, выберите в контекстном меню Shadow (Теневая копия).
Появится окно параметров теневого подключения. Возможен просмотр (View) и управление (Control) сессией. Кроме того, можно включить опцию Prompt for user consent (Запрашивать согласие пользователя на подключение к сессии).
Если выбрана опция «Запрашивать согласие пользователя», в сессии у пользователя появится запрос:Запрос на удаленное наблюдение
Winitproadministrator запрашивает удаленный просмотр вашего сеанса. Вы принимаете этот запрос.Winitproadministrator 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 в ветке HKLMSOFTWAREPoliciesMicrosoftWindows NTTerminal 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 сессиям в Windows
Параметры для удаленного управления сеансами RDS пользователя настраиваются с помощью отдельного параметра групповой политики «Установить правила для управления сеансом пользователя служб удаленных рабочих столов». Этот параметр находится в разделе «Политики» -> «Административные шаблоны» -> «Компоненты Windows» -> «Службы удаленных рабочих столов» -> «Узел удаленного сеанса» -> «Подключения» в разделах «Пользователь» и «Компьютер» объекта групповой политики. Эта политика соответствует параметру DWORD теневого реестра в ветке HKLM SOFTWARE Policies Microsoft Windows NT Terminal Services (в скобках указаны значения этого параметра, соответствующие параметрам политики).
С помощью этой политики вы можете настроить следующие параметры подключения к теневому удаленному рабочему столу:
-
Дистанционное управление запрещено – дистанционное управление запрещено (значение регистрового параметра
После изменения настроек не забудьте обновить настройки групповой политики на хосте RDP / RDS.
вы можете настроить правила для удаленного подключения в домене из консоли
, используя рассматриваемый параметр политики, или групповую политику, которая вносит изменения непосредственно в реестр (последний вариант позволяет более точно настроить таргетинг политики на компьютеры с помощью Group Таргетинг на уровень элемента политики).
Эксплуатация
Теперь я покажу, как выглядит сама эксплуатация.
Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Начиная с Windows 2012 R2, у системного администратора появилась возможность подключаться к rdp-сессиям любых пользователей. Это позволяет увидеть рабочий стол пользователя и управлять клавиатурой/мышкой.
Нужно это для дебага проблем или обучения пользователя.
Дальнейшая работа будет через системную консоль Windows – cmd.exe, которая запущена от имени Администратора.
Как подключиться к rdp-сессии пользователя?
Чтобы вызвать стандартную утилиту «Подключение к удаленному рабочему столу» из консоли, используем mstsc. У нее есть ряд параметров запуска, которые мы и будем использовать для подключения к сессии пользователя.
Основная команда для подключения к rdp-сеансу пользователя:
mstsc /shadow:3 /control /noConsentPrompt
Где параметры:
- /shadow:3 – теневое подключение к сессии с номером 3.;
- /control – разрешить управление;
- /noConsentPrompt – невидимое подключение для пользователя. Если требуется уведомить пользователя, то команду не используем.
После выполнения команды откроется окно удаленного рабочего стола RDP пользователя.
Чтобы узнать id-сессии выполняем команду quser:
quser
ПОЛЬЗОВАТЕЛЬ СЕАНС ID СТАТУС БЕЗДЕЙСТВ. ВРЕМЯ ВХОДА
>admin rdp-tcp#21 2 Активно . 18.11.2021 09:16
u104 rdp-tcp#125 3 Активно 3 18.11.2021 09:16
u105 4 Диск 45 18.11.2021 09:18
u113 6 Диск 41 18.11.2021 09:19
Как настроить сервер для теневых подключений
Чтобы это все работало, необходимо в gpedit.msc включить полный доступ. Для этого запускаем «Редактор локальной групповой политики» командой:
gpedit.msc
Переходим в раздел:
- Конфигурация компьютера
- Административные шаблоны
- Компоненты Windows
- Службы удаленных рабочих столов
- Узел сеансов удаленных рабочих столов
- Подключения
- Узел сеансов удаленных рабочих столов
- Службы удаленных рабочих столов
- Компоненты Windows
- Административные шаблоны
Можно выбрать:
- удаленное управление не разрешено;
- полный контроль сессии с разрешения пользователя;
- полный контроль без разрешения пользователя;
- наблюдение за сеансом с разрешением пользователя;
- наблюдение за сеансом без разрешения пользователя.
Выбираем №3 и перезагружаем сервер.
Теги: сервер Windows
и rdp
Комментарии
При администрировании сервера терминалов, особенно, когда на нем работают удаленные сотрудники в специализированных программах или даже просто в 1С, возникает необходимость подключиться к сессии пользователя для различных работ (обслуживание и диагностика ПО, консультация/обучение и т.п.).
Данная технология полноценно работает в Windows Server 2012 R2 и называется — Теневая копия. Если у вас установлена и используется для сервера удаленных рабочих столов MS Windows Server 2012, то знайте — данная опция не реализована в данной версии ОС. Тем не мене в обоих случаях (2012 и 2012 R2) есть прекрасная возможность использовать дополнительное средство удаленного администрирования и поддержки пользователей — «Удаленный помощник«. Устанавливается стандартным способом (через Диспетчер управления серверами-Добавить роли и компоненты):
После установки «Удаленный Помощник» необходимо выполнить следующие настройки групповых политик на настраиваемом сервере:
- Конфигурация компьютераАдминистративные шаблоныСлужбы удаленных рабочих столовУзел сеансов удаленных рабочих столовПодключенияРазрешить пользователям удаленное подключение с использованием служб удаленных рабочих столов — включить
- Конфигурация компьютераАдминистративные шаблоныСлужбы удаленных рабочих столовУзел сеансов удаленных рабочих столовПодключенияУстановить правила удаленного управления для пользовательских сеансов удаленных рабочих столов — выбрать нужны вариант
- Конфигурация компьютераАдминистративные шаблоныСистемаУдаленный помощникНастроить предупреждающие сообщения
- Конфигурация компьютераАдминистративные шаблоныСистемаУдаленный помощникНастроить запрашиваемую удаленную помощь
- Конфигурация компьютераАдминистративные шаблоныСистемаУдаленный помощникНастроить предлагаемую удаленную помощь
Настройка Удаленного помощника на сервер MS Windows Server 2012 / 2012 R2 завершена.
Режим работы Remote Desktop Shadowing (теневого подключения) поддерживался практически с первых версий терминального сервера Microsoft и неожиданно был убран в Windows Server 2012 (связано с переносом стека rdp из режима ядра в пользовательский режим). Но, в Windows Server 2012 R2 Microsoft вернула этот функционал. Напомним, что режим Shadow (теневой сеанс) – может использовать администратором для просмотра и управления существующей RDP сессией любого пользователя.
Использование Remote Desktop Shadow из графического GUI
Подключиться к сессии пользователя можно с помощью утилиты mstsc.exe (Пуск → Выполнить…) или непосредственно из консоли Server Manager. Для этого в консоли Server Manager откройте коллекцию QuickSessionCollection. Щелкнув по сессии интересующего пользователя, выберите в контекстном меню Shadow (Теневая копия).
Появится окно параметров теневого подключения. Возможен просмотр (View) и управление (Control) сессией. Кроме того, можно включить опцию Prompt for user consent (Запрашивать согласие пользователя на подключение к сессии).
Если выбрана опция «Запрашивать согласие пользователя», в сессии у пользователя появится запрос:
Если пользователь подтвердит, подключение, в режиме просмотра администратор увидит его рабочий стол, но не сможет взаимодействовать с ним.
Совет. Для отключения от сессии пользователя и выхода из shadow-режима нужно нажать ALT+* на рабочей станции или Ctrl+* на терминальном сервере (если не заданы альтернативные комбинации).
Если же пользователь отклонит подключение, появится окно:
Если попытаться подключиться к сессии пользователя без запроса подтверждения, появится ошибка, сообщающая, что такое это запрещено групповой политикой:
Запустить редактора локальной групповой политики можно с помощью утилиты gpedit.msc (Пуск → Выполнить…).
Параметры удаленного управлениями 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 в ветке HKLMSOFTWAREPoliciesMicrosoftWindows NTTerminal 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) подключение для подключения к сессиям пользователей и простым пользователям (не давая им прав локального администратора на сервере).
К примеру, вы хотите разрешить членам группы AllowRDSShadow использовать теневое подключение к сессиям пользователей, выполните команду:
wmic /namespace:\rootCIMV2TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName=’RDP-Tcp’) CALL AddAccount ‘corpAllowRDSShadow’,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)
По материалам winitpro.ru и remontka.pro
Overview
The shadow feature returns with Windows Server 2012 R2. Shadow allows server administrators to either view or take control of RDP sessions. It can be very helpful in a variety of scenarios such as IT administrators assisting users.
New in Server 2012 R2 is Server Manager Integration. From a Server Manager RDS Collection simply select the session you wish to shadow, right-click and select Sshadow. You will be prompted to either view or take control of the session.
Command line invocation is still supported, but now it is integrated within the Remote Desktop Client. This allows you to shadow a session without first TS’ing into the server. From an elevated command prompt on the server, run QWINSTA to get a list of
the sessions available to be shadowed. Then run mstsc /shadow:<SessionIDToShadow> to shadow a session along with optional parameters such as /control or /noConsentPrompt.
Controlled by Group Policy
By default, an administrator has full control with user’s permission. If set to user’s permission, when an administrator attempts to shadow a session, the user will be notified and they must give their consent to allow the session to be shadowed.
Use gpedit.msc to manager Shadow group policy settings. Shadow Group Policy can be set either at the computer or user level and is located under Administrative TemplatesWindows ComponentsRemote Desktop ServersRemote Desktop Session HostConnectionsSet
rules for remote control of Remote Desktop Services user sessions.
Five different levels of control are available:
No remote control allowed
Full control with user’s permission
Full control without user’s permission
View Session with user’s permission
View Session without user’s permission
New in Server 2012 R2Integration with Server Manager
Integration with Remote Desktop Client
Shadowing of virtual machine-based desktops
Improved auditing in the event logs
Multimon and smart sizing support
The following table shows which Microsoft RD clients can be used by an administrator to ‘shadow’ a session or VM:
Host (that the admin wants to shadow) |
|||
Clients (that the admin is using) |
Windows 7 SP1 (guest) |
Windows 8.1 (guest) |
WS 2012 R2 RDSH |
Servermanager |
No |
Yes |
Yes |
Windows 8.1 mstsc |
No |
Yes |
Yes |
Windows 7.1 w/ 8IP update |
No |
Yes |
Yes |
Windows Store RD client |
No |
No |
No |
iOS |
No |
No |
No |
MacOS |
No |
No |
No |
Android |
No |
No |
No |
See Also
An external article showing ‘how to’ use the Shadow feature in Windows Server 2012 R2 is
here.
A short video demonstrating Shadow in Server 2012 R2 is available
here.