5

我正在尝试在几台机器上设置远程管理。我可以从我的计算机成功地在远程机器上执行命令,但我不希望任何人能够这样做。

我尝试在远程计算机上设置受信任的主机,并重新启动服务,但它似乎没有做任何事情。

例如,在远程机器上:

 winrm set winrm/config/client '@{TrustedHosts="someIncorrectName"}'

然后我重新启动 winrm 服务。

为什么我仍然可以从笔记本电脑运行远程命令?它不应该阻止命令被执行吗?

我正在按以下方式运行命令:

Invoke-Command -cn remoteMachine -Credential $cred -scriptblock {get-process}

其中 $cred 是使用 get-credential 域/用户名生成的。

我读过一些关于 TrustedHosts 的文章,他们似乎给出了相互矛盾的报告,说明它的作用。有些人似乎说它可以防止在受信任主机列表中未列出的计算机上执行命令。其他人说这是可以在该机器上运行命令的计算机列表。

MSDN 说:“指定受信任的远程计算机的列表。” 这似乎暗示它是第二个选项(可以在机器上执行命令的计算机列表)。

我究竟做错了什么?

谢谢

4

1 回答 1

6

TrustedHosts 不会像您认为的那样做。与 Unix .rhosts 不同,此设置适用于 PowerShell客户端,而不是远程服务器端点。这就是它出现在以下位置的原因:

WSMan:\localhost\Client

如果它与侦听器相关,它将位于Service节点下。

正如另一个答案所涉及的那样,这通常用于非域或混合环境中,以防止您的客户端向不受信任的远程计算机发送 NTLM 质询-响应或基本身份验证尝试。为什么?因为远程流氓服务器可能会捕获此信息并使用它来破坏您的网络。当您处于混合环境中时,唯一可用的保护是 SSL,许多人可能会选择通过AllowUnencrypted = $false再次在驱动器Client节点中禁用此功能。WSMAN

那么,如何限制传入连接?您现在应该已经建立连接并开始查看WSMAN:\localhost\Service远程服务器上的节点下。如果你这样做,你会看到:

   WSManConfig: Microsoft.WSMan.Management\WSMan::localhost\Service

Type            Name                           SourceOfValue   Value                                                                       
----            ----                           -------------   -----                                                                       
System.String   RootSDDL                                       ...    
System.String   MaxConcurrentOperations                        4294967295                                                                  
System.String   MaxConcurrentOperationsPerUser                 1500                                                                        
System.String   EnumerationTimeoutms                           240000                                                                      
System.String   MaxConnections                                 300                                                                         
System.String   MaxPacketRetrievalTimeSeconds                  120                                                                         
System.String   AllowUnencrypted                               false                                                                       
Container       Auth                                                                                                                       
Container       DefaultPorts                                                                                                               
System.String   IPv4Filter                                     *                                                                           
System.String   IPv6Filter                                     *                                                                           
System.String   EnableCompatibilityHttpList...                 false                                                                       
System.String   EnableCompatibilityHttpsLis...                 false                                                                       
System.String   CertificateThumbprint                                                                                                      
System.String   AllowRemoteAccess                              true                                                                        

现在,查看此列表,您会看到一些相关命名的属性,例如IPv4FilterIPv6Filter。猜猜这些是做什么的;-)

于 2012-08-24T21:11:45.797 回答