Windows Remote Management

Windows Remote Management (WinRM) — реализация компанией Microsoft стандарта DMTF — WS-Management. Она позволяет получать или обмениваться данными управления через общую сеть. Используя скриптовые объекты или встроенную консольную утилиту, WinRM можно применять с любыми удалёнными компьютерами, оборудованными контроллерами управления базовой платой (BMC), для получения информации. На компьютерах под управлением Windows, поддерживающих WinRM, также можно получать часть данных, предоставляемых Windows Management Instrumentation (WMI)[1].

Компоненты

  • WinRM Scripting API: предоставляет интерфейс прикладного программирования, позволяя скриптам получать удалённо данные с компьютеров, на которых выполняются операции WS-Management.
  • winrm.cmd: встроенная утилита управления через командную строку, с помощью которой оператор может настраивать WinRM. Реализована как файл Visual Basic Scripting (VBS) (Winrm.vbs), использующий вышеупомянутый WinRM Scripting API.
  • winrs.exe: другая командная строка для удалённого выполнения большинства команд Cmd.exe. Эта утилита использует протокол WS-Management.
  • Драйвер Intelligent Platform Management Interface (IPMI): обеспечивает аппаратное управление и даёт возможность управлять оборудованием удалённых серверов через BMC. IPMI особенно полезен, когда операционная система не запущена либо ещё не установлена, позволяя выполнять удалённые операции с «голым» оборудованием.
  • WMI plug-in: делает данные WMI доступными для клиентов WinRM[2].
  • Служба WMI: использует модуль WMI plug-in для предоставления запрошенных данных или управления, а также может извлекать данные из большинства классов WMI. Например, Win32_Process или любые данные, предоставляемые через IPMI.
  • Протокол WS-Management: протокол управления Web Services, являющийся DMTF открытым стандартом, определяющим SOAP-основной протокол связи для управления серверами, устройствами, приложениями и веб-службами. WS-Management обеспечивает универсальный способ доступа и обмена информацией управления в рамках инфраструктуры предприятия[3].
  • Порты: по умолчанию WinRM использует порт 5986 для HTTPS и порт 5985 для HTTP. Обычно порт 5985 прослушивается системой, в то время как порт 5986 необходимо активировать вручную.

Основные сценарии использования

undefined

Ansible взаимодействует с серверами Windows через WinRM, используя Python-модуль pywinrm, что позволяет удалённо выполнять сценарии и команды PowerShell[4].

Сервис Secret Server компании Thycotic также использует WinRM для организации удалённого выполнения PowerShell[5].

ПО мониторинга серверов и приложений SolarWinds (SAM) использует сервер WinRM на отслеживаемых серверах для интеграции с PowerShell[6].

CloudBolt интегрирует WinRM в функциональность Blueprints, Server Actions и CB Plugins для исполнения удалённых скриптов на серверах Windows с помощью Python-модуля pywinrm[7].

Безопасность

WinRM по умолчанию использует Kerberos для начальной аутентификации. Это обеспечивает невозможность передачи реальных паролей в процессе взаимодействия по архитектуре клиент-сервер, вместо этого используются хэши и билеты[8]. Хотя слушатели WinRM могут быть настроены на шифрование всего трафика с использованием HTTPS, при применении Kerberos даже при нешифрованном HTTP всё общение происходит с использованием симметричного 256-битного ключа после завершения фазы аутентификации. Использование HTTPS с WinRM добавляет дополнительные меры защиты, удостоверяя подлинность сервера посредством сертификатов SSL/TLS, предотвращая возможность его подделки[9].

Примечания

  1. windows-sdk-content Windows Remote Management - Windows applications (англ.). docs.microsoft.com. Дата обращения: 21 февраля 2019. Архивировано 17 июля 2018 года.
  2. windows-sdk-content Windows Remote Management Glossary - Windows applications (англ.). docs.microsoft.com. Дата обращения: 21 февраля 2019. Архивировано 19 января 2019 года.
  3. windows-sdk-content About Windows Remote Management - Windows applications (англ.). docs.microsoft.com. Дата обращения: 21 февраля 2019. Архивировано 7 апреля 2019 года.
  4. Windows Remote Management — Ansible Documentation. docs.ansible.com. Дата обращения: 21 февраля 2019. Архивировано 19 апреля 2018 года.
  5. Thycotic Support. thycotic.force.com. Дата обращения: 21 февраля 2019.
  6. Create a WinRM HTTPS listener (англ.). SolarWinds Worldwide, LLC. Help and Support (24 марта 2016). Дата обращения: 24 февраля 2019.
  7. Remote Scripts — CloudBolt 8.7 Documentation. docs.cloudbolt.io. Дата обращения: 4 июня 2019. Архивировано 15 августа 2015 года.
  8. How To: Configure WINRM for HTTPS. support.microsoft.com. Дата обращения: 24 февраля 2019. Архивировано 19 января 2019 года.
  9. FoxDeploy Is WinRM Secure or do I need HTTPs? (англ.). FoxDeploy.com (8 февраля 2017). Дата обращения: 24 февраля 2019. Архивировано 8 августа 2025 года.