Доверенные хосты Powershell winrm не работают

Я пытаюсь настроить удаленное управление на нескольких машинах. Я могу успешно выполнять команды на удаленной машине со своего компьютера, но я не хочу, чтобы кто-либо мог это сделать.

Я попытался установить доверенные хосты на удаленном компьютере и перезапустил службу, но, похоже, она ничего не делает.

Например, на удаленной машине:

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

Затем я перезапускаю службу winrm.

Почему я все еще могу запускать удаленные команды со своего ноутбука? Разве это не должно препятствовать выполнению команды?

Я запускаю команду следующим образом:

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

Где $cred был сгенерирован с использованием домена/имени пользователя get-credential.

Я читал кое-что о TrustedHosts, и они, кажется, дают противоречивые отчеты о том, что он делает. Некоторые люди, кажется, говорят, что это предотвращает выполнение команд на компьютерах, не перечисленных в списке доверенных хостов. Другие говорят, что это список компьютеров, которые могут выполнять команды на этой машине.

MSDN говорит: «Указывает список удаленных компьютеров, которым доверяют». Кажется, это означает, что это второй вариант (список компьютеров, которые могут выполнять команды на машине).

Что я делаю неправильно?

Спасибо


person navalhawkeye    schedule 24.08.2012    source источник


Ответы (1)


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                                                                        

Теперь, просматривая этот список, вы увидите некоторые свойства с соответствующими именами, такие как IPv4Filter и IPv6Filter. Угадайте, что они делают ;-)

person x0n    schedule 24.08.2012