我试图在几台机器上设置远程管理.我可以从我的计算机上成功执行远程计算机上的命令,但我不希望任何人能够这样做.
我尝试在远程计算机上设置可信主机,然后重新启动服务,但它似乎没有做任何事情.
例如,在远程计算机上:
winrm set winrm/config/client '@{TrustedHosts="someIncorrectName"}'
Run Code Online (Sandbox Code Playgroud)
然后我重新启动winrm服务.
为什么我仍然可以从笔记本电脑上运行远程命令?它不应该阻止执行命令吗?
我按以下方式运行命令:
Invoke-Command -cn remoteMachine -Credential $cred -scriptblock {get-process}
Run Code Online (Sandbox Code Playgroud)
使用get-credential域/用户名生成$ cred.
我已经阅读了一些关于TrustedHosts的内容,他们似乎就它的作用给出了相互矛盾的报道.有些人似乎说它可以防止命令在"可信主机"列表中未列出的计算机上执行.其他人说它是可以在该机器上运行命令的计算机列表.
MSDN说:"指定受信任的远程计算机列表." 这似乎意味着它是第二个选项(可以在机器上执行命令的计算机列表).
我究竟做错了什么?
谢谢
TrustedHosts不会按照您的想法执行操作.与Unix .rhosts不同,此设置适用于PowerShell 客户端,而不适用于远程服务器端点.这就是它的原因:
WSMan:\localhost\Client
Run Code Online (Sandbox Code Playgroud)
如果它与侦听器相关,则它将位于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
Run Code Online (Sandbox Code Playgroud)
现在,向下看这个列表,你会看到一些有针对性的命名属性,比如IPv4Filter和IPv6Filter.猜猜这些做什么;-)
| 归档时间: |
|
| 查看次数: |
12498 次 |
| 最近记录: |