Для системного администратора
WinRM и WinRS являются нововведением в Windows Vista, Windows Server 2003 R2, Windows Server 2008 (и Server 2008 Core). Это новые мощные средства командной строки, предлагающие системным администраторам улучшенные возможности удаленного управления и удаленного выполнения программ на машинах с Windows. Однако, их нужно сперва включить, кроме того, вам потребуется некоторое время на изучение их функциональности. Вам повезло: в этой статье есть все, что потребуется вам для того, чтобы начать использовать эти средства прямо сегодня!
Windows Remote Management (сокращенно WinRM) – это новая удобная служба удаленного управления для Windows Server 2003 R2, Windows Vista и Windows Server 2008. WinRM – это «серверный» компонент этого приложения удаленного управления, а WinRS (Windows Remote Shell – удаленная среда Windows) – это «клиент» для WinRM, которые запускается на удаленном компьютере, пытаясь удаленно управлять сервером WinRM. Однако должен заметить, что на ОБОИХ компьютерах должен быть установлен и включен WinRM, чтобы WinRS мог работать и получать информацию об удаленной системе. WinRM основан на стандартах Web Services for Management (службы для управления) (WS-Management). Это означает, что WinRM использует протокол HTTP (порт 80) и запросы SOAP для выполнения работы. Это хорошо тем, что запросы HTTP легко пересылать через брандмауэр. Из этого вытекают хорошее и плохое следствия: с одной стороны, так проще будет управлять удаленным компьютером через Internet, но, с другой стороны, злоумышленнику проще удаленно атаковать этот же компьютер. Еще одно небольшое преимущество использования порта 80 в том, что нет необходимости открывать другие порты на сервере, если входящие HTTP соединения уже были разрешены.
Согласно утверждениям Microsoft, WinRM представляет собой «Новое средство от Microsoft для установления основанного на стандартах API для системного управления». Так что, если вы ранее и не были заинтересованы в изучении таких средств, мне кажется, тот факт, что «это новый стандарт Microsoft» делает его достойным изучения.
Возможно, вы уже знакомы с базой данных Windows Management Instrumentation (WMI) (Инструментарий управления Windows). Но, на всякий случай, скажу, что эта база данных содержит всевозможную информацию об аппаратном и программного обеспечении компьютера. Почти каждое приложение, управляющее системой Windows, опускается не уровень базы данных WMI для выполнения всех административных задач на данном ПК.
WinRM будет использовать базу данных WMI для выполнения задач, аналогичных тем, которые вы, возможно, выполняли с помощью других программных средств вроде VBScript. Преимущество WinRM в том, что он использует HTTP(порт 80), как я уже говорил, кроме того, есть даже специальный код, позволяющий WinRM разделять входящие соединения на порт 80 с компонентом IIS, который уже, возможно, работает с этим портом.
WinRM поддерживает различные типы аутентификации для предотвращения выполнения кем угодно административных задач на ваших клиентах и серверах. Конечно, вам необходимо помнить, что, включая WinRM, вы открываете еще один путь для атакования вашей системы. Однако, как я для любого открытого порта, если аутентификация и шифрование установлены как следует, можно считать, что вы приняли все разумные меры предосторожности.
Производитель вашего ПО, управляющего системой, возможно, уже запланировали использовать WinRM в следующих выпусках своего ПО, так что вы, возможно, уже используете WinRM через другие приложения. Однако вы можете использовать этот компонент и собственноручно, с помощью команды winrm.cmd. С этим средством CLI вы можете очень просто извлекать информацию из базы данных WMI для любой решаемой вами задачи.
Как вы увидите ниже, WinRM обладает интерфейсом командной строки с множеством параметров. Справочная информация о WinRM будет вам показана даже в том случае, когда он не включен на вашей системе.
Рисунок 1: параметры командной строки WinRM
Как включить WinRM в Windows вручную?
Служба WinRM установлена во всех современных версиях Windows. В Windows Server она включена по умолчанию, и отключена в десктопных редакциях Windows 11/10/8.1). По умолчанию слушатель службы WinRM listener не принимает подключения. Чтобы проверить это, выполните на клиенте команду:
WinRM enumerate winrm/config/listener
Появится ошибка, которая говорит, что служба WinRM не настроена:
Чтобы включить и настроить службу WinRM в Windows, достаточно выполнить команду:
Данная команда изменит тип запуска службы WinRM на автоматический, задаст стандартные настройки WinRM и добавить исключения для WinRM портов (5985 и 5986) в список исключений Windows Defender Firewall.
Доступные инструменты
Матрицу поддержки RSAT на платформе Windows 10 можно найти здесь . Ключевым моментом является то, что инструменты Hyper-V не являются частью RSAT для Windows 10 , в отличие от более ранних версий. Hyper-V поставляется как часть Windows 10 и может использоваться без установки RSAT . Другие инструменты, которые недоступны в данном релизе:
- Утилиты администрирования BitLocker Drive Encryption ;
- Direct Access ;
- Routing and Remote Access ;
- Remote Desktop Services ;
- Windows PowerShell cmdlets for Cluster Aware Updating ;
- Windows PowerShell cmdlets for Best Practices Analyzer .
Классический метод включения удаленного рабочего стола
С удаленным включением служб RDP мы разобрались, теперь напомню для новичков, как можно локально его активировать. По умолчанию данная служба, как я и писал не работает. Чтобы это исправить есть два метода. Универсальный метод для любой версии Windows, я буду показывать на десятке, но для семерки, восьмерки, все будет одинаково. Откройте проводник Windows. Найдите в левой части объект «Этот компьютер (Мой компьютер)». Кликните по нему правым кликом и из контекстного меню перейдите в пункт «Свойства».
У вас откроется окно система. В правой части нажмите пункт «Настройка удаленного доступа», которое вызовет окно свойств системы. НА вкладке «Удаленный доступ», чтобы активировать службы удаленных рабочих столов Windows, вам нужно активировать пункт «Разрешить удаленные подключения к этому компьютеру». После этого у вас в системе сразу будет работать RDP доступ.
А вот метод исключительно для Windows 10 или Windows Server 2016 и выше. Вы открываете параметры Windows. Переходите в пункт система. В системе будет пункт «Удаленный рабочий стол». Активируем ползунок «Включить удаленный рабочий стол». Выскочит окно с подтверждением, говорим «Подтвердить».
Все функционал RDP активен, можно подключаться с других компьютеров. Данный метод по сути ставит все тужу галку, что мы видели и в классическом окне системы.
Этот подход можно с натяжкой назвать удаленным методом включения RDP, так как на той стороне вам потребуются руки которыми вы будите управлять по телефоны.
Отключение режима автоматического засыпания
По умолчанию большинство рабочих станций Windows 10 сконфигурированы так, чтобы переходить в спящий режим после 30 минут отсутствия активности (сбалансированная схема управления питанием (по умолчанию)). Удаленные клиенты не смогут подключиться к узловому компьютеру, если он находится в спящем режиме.
Данный параметр также можно настроить на этапе включения службы удаленного рабочего стола.
Рис.1 Параметры системы
- Выбрать раздел Питание и спящий режим
Рис.2 выбор раздела Питание и спящий режим
- В разделе Сон в раскрывающемся списке выбрать Никогда
Рис.3 Настройка параметров раздела Сон
Как запустить команду на удалённой системе
Основное использование команды PsExec — это просто запуск команды в удалённой системе. Чтобы запустить команду в удалённой системе, мы должны указать имя пользователя и пароль вместе с командой для запуска на удалённом компьютере.
Общий вид команды для запуска на удалённой системе:
- \КОМПЬЮТЕР — имя компьютера Windows или его IP адрес в локальной сети
- -u Администратор — если операционная система на ином языке, то имя пользователя также будет другим, например, на английском это Administrator
- -p ПАРОЛЬ — пароль пользователя Администратор. Эту опцию можно пропустить, тогда команда запросит пароль для ввода
- КОМАНДА — программа, которую нужно выполнить на удалённой системе. После команды могут идти её опции.
Пример выполнения команды ipconfig на удалённом компьютере \hackware-server от имени пользователя Администратор с паролем Aa1:
Как мы видим, команда выполняется в удалённой системе без проблем.
У удалённого компьютера HACKWARE-SERVER IP адресом является 192.168.0.53, поэтому следующая команда эквивалентна предыдущей:
Обратите внимание, что в Windows (в противоположность Linux), регистр букв в именах компьютеров, командах и путях не имеет значения — можно использовать буквы любого регистра в любых местах.
ПОЛУЧАЕМ СТАТУС СЛУЖБЫ НА УДАЛЕННЫХ КОМПЬЮТЕРАХ
До этого нас интересовало получение информации о статусе служб на локальном компьютере. Однако управление службами осуществляется на удаленных компьютерах. Если посмотреть справку по Get-Service, то можно увидеть наличие у этого командлета параметра –Computername. В данном случае подключение к удаленным компьютерам осуществляется без включения функции удаленного управления PowerShell. Если вы можете управлять службами, используя инструменты командной строки (sc.exe или консоль управления Service Manager), вы можете использовать PowerShell. Давайте взглянем на пример:
Любая команда, которую я демонстрировал, можно использовать для передачи удаленному компьютеру. Даже нескольким компьютерам, если у вас есть соответствующие права на удаленном компьютере. Если вы используете PowerShell v3, то можно легко выбрать одну службу на множестве компьютеров.
Для наглядности представления отформатируем вывод.
Тот же самый результат, но в PowerShell v2.
Когда утилиты не подключаются из-за удаленного реестра
Некоторые из этих утилит, включая PsInfo, PsList, PsLogList и PsLoggedOn, требуют, чтобы удаленная служба реестра была включена на удаленном компьютере, и она не включена по умолчанию в современных версиях Windows.
Хорошей новостью является то, что эту проблему легко устранить, и вам не нужно оставлять включенный удаленный реестр. Просто запустите эту команду, используя PsService, чтобы запустить службу:
psservice \ computername start RemoteRegistry
И затем, когда вы закончите с тем, что вы делаете с PsInfo или PsList, вы можете снова остановить службу, используя эту команду:
psservice \ computername stop RemoteRegistry
Простые решения — лучшие, не так ли?