Настройка WinRM
Enable
Наиболее простой путь сконфигурировать удаленное управление это выполнить Enable-PSRemoting в оболочке powershell с правами администратора. При этом произойдет следущее: - запустится служба WinRM (если запущена перезапустится) - служба WinRM перейдет в состояние — автоматический запуск при старте - будет создан прослушиватель WinRM для HTTP трафика на порту 5985 для всех локальных IP адресов - будет создано правило файрвола для прослушивателя WinRM.
Внимание, этот пункт завершится с ошибкой если любая из сетевых карточек имеет тип сети «публичная», т.к. открывать порт на такой карточке не хорошо. Если у вас при конфигурировании вышла такая ошибка измените профиль этого сетевого адаптера командлетом Set-NetConnectionProfile и после этого запустите Enable-PSRemoting снова. Если вам нужна сетевая карточка с профилем «Публичная сеть» запустите Enable-PSRemoting с параметром -SkipNetworkProfileCheck в этом случае будут созданы правила файрвола только из локальной сети.
После этого нужно разрешить подключаться к удаленной машине с той машины с которой будет происходить управление. Сделано это в целях безопасности для того чтобы уменьшить риск взлома сессии удаленного управления или DNS с подстановкой себя вместо удаленной машины и предотвратить исполнение скриптов на машинах которые вы принудительно не разрешили.
Далее, надо предоставить права локальным пользователям для удаленного подключения по winrm:
Trusted Hosts
Для проверки куда можно подключаться используем:
Разрешаем подключаться ко всем:
Если вы открываете доступ для всех указав * то WinRM будет подключаться ко ВСЕМ машинам без проверки.Разрешаем подключаться только с определенного IP-адреса:
Если компьютер узла WinRM находится во внешнем домене, выполните следующую команду, чтобы указать доверенные узлы.
Listener
Убедиться, что прослушиватель работает, и проверить порты по умолчанию.
Порты по умолчанию: 5985 для протокола HTTP и 5986 для протокола HTTPS.Basic auth
Выполните следующую команду, чтобы проверить, разрешается ли обычная проверка подлинности на сервере
Проверить, разрешается ли обычная проверка подлинности на клиенте
Включить обычную проверку подлинности.
Allow Enencrypted
Разрешить передачу незашифрованных данных в службе WinRM.
Если уровень защиты маркера привязки канала службы WinRM имеет значение strict, измените его на relaxed.
Проверить, разрешена ли незащищенная передача данных winrm с клиентского ПК на удаленный winrm-сервер.
ps> cd WSMan:\localhost\Client
ps> dir
Name Value
---- -----
NetworkDelayms 5000
URLPrefix wsman
AllowUnencrypted false
Auth
DefaultPorts
TrustedHosts
set-item -force WSMan:\localhost\Service\AllowUnencrypted $true
winrm set winrm/config/client '@{AllowUnencrypted="true"}'
Контроль
Проверить, открыт ли порт 5985 на целевом сервере:
Если результат “0”, то открыт.Проверить подключение к службе 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