Включаем WinRM на Windows-хосте для дальнейшего управления через Ansible

Включаем WinRM на Windows-хосте для дальнейшего управления через Ansible


Евгений Стороженко

В руки мне попалась удивительная организация. При наличии более 100 рабочих мест в ней до сих пор используется рабочая группа с именем, как ни парадоксально, WORKGROUP. При этом на сервере развернут корневой домен Active Directory, но рабочие места в него не введены и доступ к сетевым ресурсам соответственно осуществляется с локальными реквизитами. Больше учетных записей богу учетных записей!

Мне честно лениво продолжать управлять сетью такими инструментами. Поднимать доверенные отношения между FreeIPA и Active Directory тоже... И задач по управлению Windows-клиентами, которые не может решить Ansible, я не вижу... А потом спрос на DevOps-ов сейчас хороший, так что самое время создать себе трудностей для их героического решения.

Включаем службу WinRM на машине с Windows 10

Ansible управляется windows-клиентами через службу удаленного управления Windows - WinRM (Windows Remote Managment). По умолчанию она включена на серверных версиях ОС, а для включения на клиентах нужно её дополнительно включить. 

Сделать это можно с помощью команды

winrm quickconfig

в моем случае сразу не заработало, получил сообщение, что нельзя чтобы сетевые соединения относились к общедоступным на машине на которой настраивается winrm.

C:\Users\kpa39l>winrm quickconfig
Служба WinRM не настроена на прием запросов на компьютере.
Необходимо внести следующие изменения:

Запустите службу WinRM.
Задайте для типа службы WinRM значение отложенного автозапуска.

Выполнить изменения [y/n]? y

Служба WinRM была обновлена для приема запросов.

Тип службы WinRM успешно изменен.
Служба WinRM запущена.
WSManFault
   Message
       ProviderFault
           WSManFault
               Message = Исключение брандмауэра WinRM не будет работать, поскольку одно из сетевых подключений, установленных для этого компьютера, является общим. Измените тип сетевого подключения либо на доменное, либо на частное и повторите попытку.

Код ошибки: -2144108183 0x80338169
Исключение брандмауэра WinRM не будет работать, поскольку одно из сетевых подключений, установленных для этого компьютера, является общим. Измените тип сетевого подключения либо на доменное, либо на частное и повторите попытку.

C:\Users\kpa39l>

Можно было бы конечно вручную добавить исключения для портов 5985 и 5986 для Брэндмауэра Windows (что firewall (англ.), что brandmauer (нем.) означает горящая стена или сетевой фильтр, я предпочитаю русскоязычные термины использовать). Но быстрее вбить две команды в консоль и выполнить требования безопасности. Чтобы вывести список сетевых подключений с указанием их типа используем команду PowerShell:

PS C:\Users\kpa39l> Get-NetConnectionProfile

Name            : Неопознанная сеть
InterfaceAlias  : Ethernet
InterfaceIndex  : 10
NetworkCategory : Public
IPv4Connectivity : Internet
IPv6Connectivity : NoTraffic

В строке NetworkCategory как раз и указывается тип профиля сети. Может быть Public, Private и DomainAuthenticated. Как понятно из сообщения нужно его изменить на Privat для моего случая. В домен-то я машины не включал. И теперь по индекс сетевого интерфейса InterfaceIndex, меняю тип сети на Private:

Set-NetConnectionProfile -InterfaceIndex 10 -NetworkCategory Private

При успешном исполнении команда никакой вывод не генерирует.

И теперь можно еще раз запустить команду включения WinRM, для разнообразия используя командлет PowerShell:

PS C:\Users\kpa39l> Enable-PSRemoting –Force
Служба WinRM уже настроена для приема запросов на этом компьютере.
Служба WinRM обновлена для удаленного управления.
Исключение брандмауэра WinRM включено. 
Параметр LocalAccountTokenFilterPolicy настроен так, чтобы предоставлять административные права локальным пользователям удаленным образом. 

Теперь и можно проверить настройки WinRM на настроенной машине:

PS C:\Users\kpa39l> winrm get winrm/config
Config
   MaxEnvelopeSizekb = 500
   MaxTimeoutms = 60000
   MaxBatchItems = 32000
   MaxProviderRequests = 4294967295
   Client
       NetworkDelayms = 5000
       URLPrefix = wsman
       AllowUnencrypted = false
       Auth
           Basic = true
           Digest = true
           Kerberos = true
           Negotiate = true
           Certificate = true
           CredSSP = false
       DefaultPorts
           HTTP = 5985
           HTTPS = 5986
       TrustedHosts
   Service
       RootSDDL = O:NSG:BAD:P(A;;GA;;;BA)(A;;GR;;;IU)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD)
       MaxConcurrentOperations = 4294967295
       MaxConcurrentOperationsPerUser = 1500
       EnumerationTimeoutms = 240000
       MaxConnections = 300
       MaxPacketRetrievalTimeSeconds = 120
       AllowUnencrypted = false
       Auth
           Basic = false
           Kerberos = true
           Negotiate = true
           Certificate = false
           CredSSP = false
           CbtHardeningLevel = Relaxed
       DefaultPorts
           HTTP = 5985
           HTTPS = 5986
       IPv4Filter = *
       IPv6Filter = *
       EnableCompatibilityHttpListener = false
       EnableCompatibilityHttpsListener = false
       CertificateThumbprint
       AllowRemoteAccess = true
   Winrs
       AllowRemoteShellAccess = true
       IdleTimeout = 7200000
       MaxConcurrentUsers = 2147483647
       MaxShellRunTime = 2147483647
       MaxProcessesPerShell = 2147483647
       MaxMemoryPerShellMB = 2147483647
       MaxShellsPerUser = 2147483647

PS C:\Users\kpa39l> 

Проверять, что нужный порт открыт и к машине можно использовать PowerShell аналог ping:

Test-NetConnection -ComputerName ITHEAD -Port 5985

А теперь доступны ли службы WinRM.

PS C:\Users\kpa39l> Test-WsMan 192.168.150.80
wsmid          : http://schemas.dmtf.org/wbem/wsman/identity`/1/wsmanidentity.xsd
ProtocolVersion : http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd
ProductVendor  : Microsoft Corporation
ProductVersion : OS: 0.0.0 SP: 0.0 Stack: 3.0

И теперь наконец-то подключаемся к управлению с помощью команды Enter-PSSession. А вот и нет, потому что права на доступ отсутствуют. Помнишь, что у нас-то домена нет? %) А как их настроить я напишу дальше.

Настраиваем доступ к машине с WinRM без Kerberos


Report Page