Only allow remote command with credentials

I have server A and a server B in the same domain (Windows Server 2012 R2):

PS C:\Deployment> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
4      0      -1     -1

I have an admin user on server B which is called WORKGROUP\test.

On both servers I performed:

enable-psremoting -force

On server A I performed:

Invoke-Command -ComputerName RemoteServerName -ScriptBlock {
   get-childitem
   get-service
}

This works. Now I'm using credentials:

Invoke-Command -ComputerName COMPUTER3 -Credential you-user -ScriptBlock { get-service }

When I run it I got this view (picture from internet):

https://i-technet.sec.s-msft.com/dynimg/IC702024.png

When I give the right credentials it works, when I provide the wrong credentials it doesn't work. So that's fine. But when I just click "Cancel" it also works. It seems like the remote server (server B) does not require credentials. What do I have to change to make it also fail when you provide no credentials?

0
задан 13 March 2017 в 17:25
2 ответа

В команде Invoke-Command вы можете использовать опцию -credential

From MSDN:

PS C:\> Invoke-Command -ComputerName server01 -Credential domain01\user01 -ScriptBlock {Get-Culture}
0
ответ дан 5 December 2019 в 08:26

Если текущему пользователю разрешен доступ к конечной точке PowerShell на удаленной машине, он всегда сможет удалиться, не предоставив явных учетных данных.

Единственный способ потребовать предоставления явных учетных данных - это разорвать эту цепочку. Некоторые опции:

  • Создайте нового пользователя на удаленном хосте, который является администратором, и удалите удаленных пользователей из групп, которым разрешено подключение. Это несколько эквивалентно подходу sudo.
  • Перенастройте конечную точку PowerShell по умолчанию (или удалите и создайте новую) для изменения разрешений того, кому разрешено подключение. По умолчанию конечная точка Microsoft.PowerShell выглядит следующим образом:

Get-PSSessionConfiguration

Name : microsoft.powershell
. PSVersion : 5.1
StartupScript :
RunAsUser :
Разрешение : NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed, BUILTIN\Remote Management Users AccessAllowed

До тех пор, пока удаленный пользователь не входит в одну из этих групп - или вы удаляете эти группы и используете новые - он должен будет предоставить явные учетные данные для подключения. Это может быть использование -Credential непосредственно в Invoke-Command, или при создании сеанса.

Если вы рассмотрите эту опцию, подумайте о том, чтобы пройти весь путь и посмотреть на Just Enough Administration (JEA), где можно указать три основных варианта:

  1. Who can connect
  2. What can they do
  3. Who will their command run as.

JEA может стать началом сильной основы для ограничения того, что администраторы могут делать в определенных обстоятельствах. Это может быть частью Контроля доступа на основе ролей (RBAC).

.
0
ответ дан 5 December 2019 в 08:26

Теги

Похожие вопросы