Настройка WinRM
Enable
Наиболее простой путь сконфигурировать удаленное управление это выполнить Enable-PSRemoting в оболочке powershell с правами администратора. При этом произойдет следущее: - запустится служба WinRM (если запущена перезапустится) - служба WinRM перейдет в состояние — автоматический запуск при старте - будет создан прослушиватель WinRM для HTTP трафика на порту 5985 для всех локальных IP адресов - будет создано правило файрвола для прослушивателя WinRM.
Внимание, этот пункт завершится с ошибкой если любая из сетевых карточек имеет тип сети «публичная», т.к. открывать порт на такой карточке не хорошо. Если у вас при конфигурировании вышла такая ошибка измените профиль этого сетевого адаптера командлетом Set-NetConnectionProfile и после этого запустите Enable-PSRemoting снова. Если вам нужна сетевая карточка с профилем «Публичная сеть» запустите Enable-PSRemoting с параметром -SkipNetworkProfileCheck в этом случае будут созданы правила файрвола только из локальной сети.
После этого нужно разрешить подключаться к удаленной машине с той машины с которой будет происходить управление. Сделано это в целях безопасности для того чтобы уменьшить риск взлома сессии удаленного управления или DNS с подстановкой себя вместо удаленной машины и предотвратить исполнение скриптов на машинах которые вы принудительно не разрешили.
Далее, надо предоставить права локальным пользователям для удаленного подключения по winrm:
winrm quickconfig
Trusted Hosts
Для проверки куда можно подключаться используем:
get-item wsman:\localhost\Client\TrustedHosts
Разрешаем подключаться ко всем:
set-item wsman:localhost\client\trustedhosts -value *
Разрешаем подключаться только с определенного IP-адреса:
set-item wsman:localhost\client\trustedhosts -value "10.46.148.82"
Если компьютер узла WinRM находится во внешнем домене, выполните следующую команду, чтобы указать доверенные узлы.
c:\> winrm set winrm/config/client '@{TrustedHosts="узел1, узел2, узел3"}'
Listener
Убедиться, что прослушиватель работает, и проверить порты по умолчанию.
c:\> winrm e winrm/config/listener
Basic auth
Выполните следующую команду, чтобы проверить, разрешается ли обычная проверка подлинности на сервере
c:\> winrm get winrm/config/service
Проверить, разрешается ли обычная проверка подлинности на клиенте
c:\> winrm get winrm/config/client
Включить обычную проверку подлинности.
c:\> winrm set winrm/config/service/auth '@{Basic="true"}'
Allow Enencrypted
Разрешить передачу незашифрованных данных в службе WinRM.
c:\> winrm set winrm/config/service '@{AllowUnencrypted="true"}'
Если уровень защиты маркера привязки канала службы WinRM имеет значение strict, измените его на relaxed.
c:\> winrm set winrm/config/service/auth '@{CbtHardeningLevel="relaxed"}'
Проверить, разрешена ли незащищенная передача данных winrm с клиентского ПК на удаленный winrm-сервер.
ps> cd WSMan:\localhost\Client
ps> dir
Name Value
---- -----
NetworkDelayms 5000
URLPrefix wsman
AllowUnencrypted false
Auth
DefaultPorts
TrustedHosts
ps> set-item .\allowunencrypted $true
set-item -force WSMan:\localhost\Service\AllowUnencrypted $true
winrm set winrm/config/client '@{AllowUnencrypted="true"}'
set-item -force WSMan:\localhost\Service\Auth\Digest $true
Контроль
Проверить, открыт ли порт 5985 на целевом сервере:
nc -z -w1 <IP or host name> 5985;echo $?
Проверить подключение к службе WinRM.
c:\> winrm identify -r:http://winrm_server:5985 -auth:basic -u:имя_пользователя -p:пароль -encoding:utf-8
Методы аутентификации
Столкнулся с проблемой аутентификации под доменной учеткой на контроллере домена.
Оказывается, метод Basic не работает под доменной УЗ.
Option | Local Accounts | Active Directory Accounts | Credential Delegation | HTTP Encryption |
---|---|---|---|---|
Basic | Yes | No | No | No |
Certificate | Yes | No | No | No |
Kerberos | No | Yes | Yes | Yes |
NTLM | Yes | Yes | No | Yes |
CredSSP | Yes | Yes | Yes | Yes |
Настройка на terraform ВМ
Возможно, необходимо поставить пакет python3-winrm
sudo apt update
sudo apt -y install python3-winrm
sudo apt-get install python-dev libkrb5-dev
pip install Kerberos
## for credssp authentication
sudo apt install zlib1g-dev libffi-dev
pip3 install --upgrade setuptools
pip3 install --upgrade cryptography
pip3 install requests-credssp