Віддалений доступ до WinRM без прав адміністратора

За замовчуванням для віддаленого підключення до комп'ютера за допомогою PowerShell (PowerShell Remoting) потрібні права адміністратора. У цій статті ми покажемо, як за допомогою групи безпеки, груповий політики і зміни дескриптора сесії PoSh, надати права на підключення через PowerShell Remoting (WinRM) для рядових користувачів без прав адміністратора.

При спробі створити сесію PowerShell з вилученим комп'ютером з-під звичайного користувача (Enter-PSSession msk-server1) з'являється помилка доступу:

Enter-PSSession: Connecting to remote server msk-server1 failed with the following error message: Access is denied.

зміст:

  • Віддалений доступ до WinRM і група Remote Management Users
  • Дескриптор безпеки сесії PowerShell
  • Віддалене управління Hyper-V також вимагає прав WinRM

Віддалений доступ до WinRM і група Remote Management Users

Перевіримо стандартні дозволу для сесії PoSh:

(Get-PSSessionConfiguration -Name Microsoft.PowerShell) .Permission

Як ми бачимо, доступ дозволений для наступних вбудованих груп:

  • BUILTIN \ Administrators - AccessAllowed,
  • BUILTIN \ Remote Management Users - AccessAllowed

Таким чином, щоб користувач міг дистанційно підключатися через WinRM, йому досить складатися у вбудованій локальної групі безпеки адміністраторів або Remote Management Users (Група створюється в системі, починаючи з версії PowerShell 4.0, наявного за замовчуванням в Windows 8 / Windows Server 2012 і вище). Дана група також надається доступ до ресурсів WMI через керуючі протоколи (наприклад, WS-Management)

Потрібного користувача можна включити в групу через оснащення управління комп'ютером:

або за допомогою команди:

net localgroup "Remote Management Users" / add aapetrov2

У тому випадку, якщо подібний доступ потрібно надати на безлічі комп'ютерів, можна скористатися груповою політикою. Для цього призначте GPO на потрібні комп'ютери, і політиці Computer Configuration -> Windows Settings -> Security Settings -> Restricted Groups додайте нову групу Remote Management Users і включимо в неї облікові записи або групи, яким потрібно надати доступ до WinRM.

Після включення користувача в групу Remote Management Users, він зможе створювати віддалену сесію PowerShell за допомогою Enter-PSSession або запускати команди за допомогою Invoke-Command. Права користувача в даній сесії будуть обмежені його правами на машині.

Перевірте, запрацювало чи віддалене підключення.

Дескриптор безпеки сесії PowerShell

Ще один спосіб швидко дати користувачеві права на використання PowerShell Remoting без включення його в локальну групу безпеки Remote Management Users полягає в модифікації дескриптора безпеки поточної сесії Microsoft.PowerShell на локальному комп'ютері. Цей спосіб дозволить швидко тимчасово (до наступного перезавантаження) надати окремому користувачеві права на віддалене підключення через PowerShell.

Наступна команда відкриває лист поточних дозволів:

Set-PSSessionConfiguration -Name Microsoft.PowerShell -showSecurityDescriptorUI

В даному діалоговому вікні потрібно додати користувача або групу та надати йому права Execute (Invoke).

Після збереження змін система запросить підтвердження на перезапуск служби WinRM.

У тому випадку, якщо потрібно змінити дескриптор безпеки автоматизовано (без GUI), доведеться спочатку внести зміни вручну, а потім отримати поточний дескриптор доступу в форматі SDDL.

(Get-PSSessionConfiguration -Name "Microsoft.PowerShell"). SecurityDescriptorSDDL

У нашому прикладі, команда повернула дескриптор

O: NSG: BAD: P (A ;; GA ;;; BA) (A ;; GXGR ;;; S-1-5-21-2373142251-3438396318-2932294317-23761992) (A ;; GA ;;; RM ) S: P (AU; FA; GA ;;; WD) (AU; SA; GXGW ;;; WD)

Потім можна використовувати дану SDDL рядок для надання доступу до PowerShell на будь-якому іншому сервері.

$ SDDL = "O: NSG: BAD: P (A ;; GA ;;; BA) (A ;; GXGR ;;; S-1-5-21-2373142251-3438396318-2932294317-23761992) (A ;; GA ;;; RM) S: P (AU; FA; GA ;;; WD) (AU; SA; GXGW ;;; WD) "
Set-PSSessionConfiguration -Name Microsoft.PowerShell -SecurityDescriptorSddl $ SDDL

Віддалене управління Hyper-V також вимагає прав WinRM

У Windows 10 / Windows Server 2016 для віддаленого підключення до сервера Hyper-V за допомогою Hyper-V Manager став використовуватися протокол PowerShell Remoting. Таким чином, за замовчуванням віддалені користувачі без прав адміністратор не зможуть управляти сервером Hyper-V, навіть при наявності дозволів в Hyper-V.

При спробі підключитися до сервера Hyper-V з комп'ютера Windows 10 під звичайним користувачем з'явиться помилка.

An error occurred while attempting to connect to server "server1", Check that the Virtual Machine Management service is running and that you are authorized to connect to the server

Щоб дозволити віддалене підключення до консолі досить аналогічно додати користувача Hyper-V в локальну групу Remote Management Users.