Если вы используете RemoteApp в Windows 2012 и 2016 без AD, вас ожидает неприятный баг. Пользователи будут иметь возможность подключения в режиме рабочего стола, т.е. полноценный RDP. А вам необходимо только публиковать приложения и ничего более. Но при этом вы не можете исключить пользователей из группы "Пользователи удалённого рабочего стола", поскольку перестанут работать подключения к публикуемым приложениям.
Чтобы разрешить подключения по RDP только Администраторам (тем, кто входит в локальную группу на сервере), можно воспользоваться PowerShell скриптом, который будет проверять, входит ли пользователь в группу администраторов, и отключать от сессии тех, кто не входит в группу.
Делается такое ограничение, через настройку локальных групповых политик. Путём включения политики, которая будет выполнять скрипт проверки при каждом RDP подключении. Прич этом в режиме RemoteApp, приложения будут запускаться.
Приведённый ниже скрипт, необходимо сохранить с расширением файла ps1. Например назовите скрипт kicknoadmin.ps1 и сохраните его в корне диска C:\
$isadmin = 0 <#когда не админ#>
$lsid = "S-1-5-32-544" <#идентификатор группы Администраторы#>
$lgroup = ([Security.Principal.SecurityIdentifier]$lsid).Translate([Security.Principal.NTAccount]).Value.Split("\")[1]
$wla = [ADSI]"WinNT://$env:computername/$lgroup,group"
$wla.Members() | foreach {
$member = ($_.GetType().InvokeMember("AdsPath","GetProperty",$null,$_,$null)).Split("/")[4]
if ($env:username -eq $member) {
$isadmin = 1 <#когда админ#>
}
}
if ($isadmin -eq 0) { <#отключить если не админ#>
logoff
}
elseif ($isadmin -eq 1) {<#разрешить загрузку если админ#>
c:\windows\explorer.exe
}
Далее, необходимо запустить на вашем сервере редактор локальных групповых политик.
Выполните gpedit.msc
Перейдите по пути: Конфигурация пользователя - Административные шаблоны - Компоненты Windows - Службы удалённых рабочих столов.
В разделе «Службы удалённых рабочих столов», найдите политику "Запускать программу при подключении".
Включите политику и в свойствах, у вас станет активным поле "Путь к программе и имя файла".
В эту строчку впишите
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -WindowStyle Hidden -NoExit -FILE C:\kicknoadm.ps1
Где C:\kicknoadm.ps1 - это путь, где у вас расположен файл скрипта "kicknoadm.ps1"
Рабочая папка должна быть C:\
Для проверки, создайте на сервере тестового пользователя, включите его в группу Администраторы. Подключитесь к серверу по RDP. Выполните mstsc, введите те же ip и порт, который используете при подключении RemoteApp, подключитесь, введите логин и пароль от тестового пользователя, затем вы подключитесь к удалённому рабочему столу. Таким образом могут подключаться любые пользователи, которым вы даёте доступ к RemoteApp (этот и есть тот баг, о котором писалось в начале).
Завершите сеанс тестового пользователя, проверьте через диспетчер задач на сервере, что пользователь не просто отключен, а отсутствует в списке активных пользователей. При необходимости нажмите на пользователя правой кнопкой мыши и выберите пункт «Выход».
Исключите тестового пользователя из группы Администраторы.
Выполните mstsc, введите те же ip и порт, который используете при подключении RemoteAPP, подключитесь, введите логин и пароль от тестового пользователя. Если вы выполнили все настройки верно, то после подключения у вас появится окно командной строки, и через несколько секунд сеанс завершится, т.к. пользователь не является Администратором.
Комментариев нет:
Отправить комментарий