仅允许具有凭据的远程命令

仅允许具有凭据的远程命令

我有server Aserver B在同一个域中(Windows Server 2012 R2):

PS C:\Deployment> $PSVersionTable.PSVersion

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

我在服务器 B 上有一个名为 的管理员用户WORKGROUP\test

我在两台服务器上执行了以下操作:

enable-psremoting -force

server A表演了:

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

这有效。现在我正在使用凭证:

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

当我运行它时,我看到了这个视图(图片来自互联网):

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

当我提供正确的凭据时,它可以工作,当我提供错误的凭据时,它就不起作用。所以这没问题。但是当我单击“取消”时,它也可以工作。似乎远程服务器 ( server B) 不需要凭据。我必须进行哪些更改才能让它在您不提供凭据时也失败?

答案1

在您的Invoke-Command命令中,您可以使用选项-credential

微软

PS C:\> Invoke-Command -ComputerName server01 -Credential domain01\user01 -ScriptBlock {Get-Culture}

答案2

如果允许当前用户访问远程计算机上的 PowerShell 端点,他们将始终能够进行远程访问而无需提供明确的凭据。

要求提供明确凭证的唯一方法是打破这一链条。以下是一些选择:

  • 在远程主机上创建一个具有管理员权限的新用户,并将远程用户从允许连接的组成员身份中删除。这在某种程度上等同于该sudo方法。
  • 重新配置默认的 PowerShell 端点(或删除并创建一个新的端点)以更改允许连接的权限。默认情况下,Microsoft.PowerShell 端点如下所示:

Get-PSSessionConfiguration

名称:microsoft.powershell
PSVersion:5.1
StartupScript:
RunAsUser:
权限:NT AUTHORITY\INTERACTIVE AccessAllowed、BUILTIN\Administrators AccessAllowed、BUILTIN\Remote Management Users AccessAllowed

只要远程用户不属于这些组之一 - 或者您删除这些组并使用新组 - 他们就必须提供显式凭据才能连接。这可能是-Credential直接在 上使用Invoke-Command,或者在创建会话时使用。

如果你考虑这个选择,可以考虑深入研究一下恰到好处的管理 ( JEA)您可以在其中指定三个主要选项:

  1. 谁可以连接
  2. 他们能做什么
  3. 他们的指挥将以谁的身份运行。

JEA 可以成为限制管理员在特定情况下可以做什么的坚实基础的开始。这可以成为基于角色的访问控制RBAC)。

相关内容