- PVSM.RU - https://www.pvsm.ru -

Модуль PowerShell для Intel IoT Gateway

Шлюзы Intel для интернета вещей могут работать под управлением различных операционных систем. Одна из них – Windows 10 IoT. Сегодня мы поговорим о модуле для PowerShell IntelIoTGatewaySetup, который создан специально для поддержки IoT-шлюзов в среде Microsoft Windows.

Модуль PowerShell для Intel IoT Gateway - 1


Официально этот модуль называется «Intel IoT Gateway Module for Microsoft Windows PowerShell». Он помогает настроить операционную систему шлюза на заданный уровень безопасности (Security SKU [1]).

Основные сведения

Модуль входит в состав пакета Windows Configuration Software for Intel IoT Gateway. Пакет можно найти по вышеприведённому названию и скачать в Центре загрузки Intel [2]. В настоящее время поддерживаются операционные системы Windows 10 IoT Enterprise и Windows 10 IoT Core.

IntelIoTGatewaySetup позволяет настраивать следующие функции безопасности Windows, указанные в описании [3] уровней безопасности. Предусмотрено три уровня безопасности. В частности, это, в порядке возрастания обеспечиваемого уровня защиты, Basic SKU, Medium SKU, и High SKU. Каждый следующий уровень расширяет возможности предыдущего. Итак, вот список настраиваемых функций.

  • Windows Update, Windows Defender, Windows Firewall, Windows User Account Control, USB Removable Media Lockdown, Virtualization Based Security, App Locker, Code Integrity.
  • BitLocker с поддержкой модуля TPM для Windows 10 IoT Enterprise. Хотя в определениях уровней безопасности упомянуто использование TPM и сетевой разблокировки (Network Unlock) для среднего и высокого уровней, модуль PowerShell настраивает лишь BitLocker с поддержкой TPM, так как Network Unlock требует дополнительной сетевой инфраструктуры.

Хотя модуль IntelIoTGatewaySetup и настраивает множество параметров в соответствии с заданным уровнем безопасности, он не касается следующих возможностей:

  • UEFI, Secure Boot и TPM. Всё это является частью аппаратных требований и требований к микропрограммам для шлюзов Intel. Таким образом, эти функции на шлюзе будут уже включены.
  • Уровни привилегий учётных записей. Можно создать, в зависимости от особенностей использования системы, учётную запись с ролью администратора или обычную учётную запись со стандартным набором прав.
  • ASLR. Эта возможность по умолчанию поддерживается и включена в ОС Windows, таким образом, в дополнительной настройке она не нуждается.
  • Measured Boot. Эта функция реализуется благодаря прошивке UEFI, TPM и Windows. Она так же не нуждается в дополнительной настройке.
  • Remote Attestation [4]. Эта функция нуждается в настройке дополнительной сетевой инфраструктуры и в дополнительном программном обеспечении.
  • BitLocker + Network Unlock [4]. Технология Network Unlock требует настройки дополнительной сетевой инфраструктуры и возможностей DHCP-драйвера в UEFI. В результате модуль PowerShell способен настроить лишь BitLocker с поддержкой TPM.
  • USB Filter [4]. Для настройки этой функции в соответствии с особенностями использования шлюза, применяйте групповые политики для того, чтобы управлять USB-устройствами, основываясь на Device ID или Class ID.
  • Keyboard Filter [4]. Для настройки этого фильтра воспользуйтесь инструментом Windows ICD.

В папке IntelIoTGatewaySetup находятся следующие основные компоненты:

  • Readme.rtf. Обычный сопроводительный файл с инструкциями по началу работы.
  • ModuleInstallation.ps1. Вспомогательный скрипт для установки модуля IntelIoTGatewaySetup.
  • Папка IntelIoTGatewaySetup. Здесь содержится сам модуль.

Установка модуля

Если у вас имеется шлюз, оснащённый дисплеем и клавиатурой, команды PowerShell, необходимые для установки модуля, можно исполнять непосредственно на шлюзе. После установки команды PowerShell, которые предоставляет модуль, так же можно исполнять прямо на шлюзе. Мы называем это локальной установкой и локальным исполнением команд.

Шлюз может быть расположен вне пределов физической досягаемости, кроме того, у него могут отсутствовать монитор и устройства ввода. В таком случае нужно воспользоваться другим компьютером, назовём его компьютером разработчика, который позволит организовать удалённое управление шлюзом и его настройку. Ниже мы будем рассматривать именно такой сценарий. Мы называем его удалённой установкой и удалённым исполнением команд.

Для того, чтобы установить модуль PowerShell на шлюз с компьютера разработчика, эти две системы должны быть в одной и той же подсети. Кроме того, этот процесс включает в себя временное сопоставление сетевого диска на компьютере и шлюза.

Итак, для удалённой установки модуля нужно выполнить следующие шаги.

Для начала – вот список операций, которые нужно произвести на шлюзе для того, чтобы обеспечить удалённый доступ к PowerShell.

  • Если на шлюзе установлена Windows IoT Core, то всё уже готово к работе, ничего больше делать не нужно.
  • Если же шлюз оснащён Windows IoT Enterprise, нужно разрешить удалённое взаимодействие с PowerShell, используя эту [5] и эту [6] инструкции. Например, для того, чтобы включить удалённый доступ к PowerShell, воспользуйтесь нижеприведёнными командами.
    #Получим индекс NIC активного NIC 
    Get-NetAdapter
    #$index – это полученный индекс.
    #Переключим целевое активное соединение в приватный режим.
    #В качестве разделителя в строке команды используется комбинация пробел + обратная галочка.
    Set-NetConnectionProfile -InterfaceIndex $index `
    -NetworkCategory Private
    #Включим удалённый доступ
    Enable-PSRemoting -Force

Теперь, когда шлюз готов к работе, займёмся компьютером, выполнив следующие шаги с использованием окружения PowerShell.

1. Убедитесь в том, что две следующих учётных записи, созданные на соответствующих устройствах, имеют административные полномочия. А именно:

  • Учётная запись для компьютера разработчика, с которой осуществлён вход в систему.
  • Учётная запись на шлюзе, которой мы воспользуемся позже.

2. Запустите интерпретатор командной строки PowerShell от имени администратора.

3. Для того, чтобы запустить скрипт ModuleInstallation.ps1 нужно, чтобы в PowerShell использовалась политика выполнения скриптов AllSigned или RemoteSigned. Взгляните на следующие командлеты: Get-ExecutionPolicy и Set-ExecutionPolicy. Они позволяют, соответственно, узнавать и задавать политику выполнения. Например, с помощью такой команды можно задать использование политики RemoteSigned.

Set-ExecutionPolicy RemoteSigned

4. Воспользуйтесь точечной нотацией при вызове скрипта ModuleInstallation.ps1. Для того, чтобы это сделать, введите символ точки «.» и пробел перед путём к запускаемому скрипту. Этот подход позволяет запустить скрипт в текущей области действия [7].

. .ModuleInstallation.ps1

5. Затем взгляните на справку по модулю, о котором мы здесь говорим, ознакомьтесь с примерами его использования. Для этого воспользуйтесь такой командой Get-Help Install-IntelIoTGatewaySetup –Full

6. Выполните команду Install-IntelIoTGatewaySetup для установки модуля с компьютера разработчика на шлюз. Правила использования этой команды можно найти в справочных материалах из предыдущего шага. Например, можно воспользоваться следующей последовательностью действий:

#$path это путь к папке, в которой находится загруженный модуль,
# например: ‘C:IntelIoTGatewaySetup’
#$remoteip это IP-адрес удалённого шлюза,
#например: ‘192.168.2.5’
#$remoteaccount это учётная запись на шлюзе,
#например, ‘Tester’ или ‘DomainTester’
#В качестве разделителя в строке команды используется комбинация пробел + обратная галочка.
Install-IntelIoTGatewaySetup –ModuleLocalPath $path `
-RemoteGateway $remoteip `
-RemoteAccount $remoteaccount –Verbose

Обратите внимание на то, что при локальной установке можно исполнить команду Install-IntelIoTGatewaySetup непосредственно на шлюзе. Для деинсталляции модуля предусмотрена команда Uninstall-IntelToTGatewaySetup. Подробности об этом можно найти в справочных материалах к модулю.

7. После установки воспользуйтесь PowerShell для выполнения команд нашего модуля на шлюзе. Об особенностях использования PowerShell на удалённых системах можно почитать здесь [8]. Например, выполните, по порядку, нижеприведённые команды.

  1. Запустите службу WInRM, если она ещё не запущена.
    if ((Get-Service WinRM).Status.ToString() -ne 'Running') {
    # Запуск службы WinRM 
    Write-Verbose "Start WinRM service."
    net start WinRM
    }

  2. Добавьте удалённый шлюз в список TrustedHosts.
    #Эта команда удалит исходный TrustedHosts и приведет к использованию $remoteip.
    #Кроме того, она может добавить новое значение к списку TrustedHosts.
    #Справку можно вызвать командой Get-Help Set-Item.
    #$remoteip это IP-адрес удалённого шлюза.
    #В качестве разделителя в строке команды используется комбинация пробел + обратная галочка.
    Set-Item WSMan:localhostClientTrustedHosts `
    -Value $remoteip –Force

  3. Создайте удалённую сессию PowerShell на удалённом шлюзе.
    #$remoteip это IP-адрес удалённого шлюза. 
    #$remoteaccount это учётная запись с административными полномочиями
    #на удалённом шлюзе. 
    #В качестве разделителя в строке команды используется комбинация пробел + обратная галочка.
    $s = New-PSSession -ComputerName $remoteip ` 
    -Credential "localhost$remoteaccount"

  4. Выполните эти команды на удалённом шлюзе.
    #Запустите удалённый скрипт для тестирования
    Invoke-Command -Session $s -ScriptBlock {
    #В этом блоке можете запустить желаемые команды PowerShell. 
    #Эти команды будут запущены на удалённом шлюзе.
    
    #взглянем на сведения о нашем модуле 
    Get-Command -Module IntelIoTGatewaySetup 
    Get-Module IntelIoTGatewaySetup 
    }

  5. Закройте удалённую сессию PowerShell после того, как выполните все необходимые команды.
    Remove-PSSession -Session $s

Использование модуля

Здесь мы, так же, как в предыдущем разделе, исходим из предположения, что для работы со шлюзом используется компьютер. Расскажем о том, как пользоваться модулем. Для начала, если вы этого ещё не сделали, включите использование удалённого PowerShell на шлюзе. Теперь, на компьютере разработчика, выполните следующие шаги.

  • Воспользуйтесь той же процедурой, которая описана в п.7 предыдущего раздела. Все следующие примеры рассчитаны на то, что исполняемые на удалённом шлюзе команды будут помещены внутрь блока конструкции Invoke-Command.
  • После установки модуля воспользуйтесь командой Get-Help с параметром –Full для того, чтобы узнать подробности о командах модуля. Например, выполните следующую команду для того, чтобы получить список всех команд, доступных в модуле:
    Get-Command -Module IntelIoTGatewaySetup

  • Для настройки уровня безопасности служат команды Enable-IoTWinSecurities и Disable-IoTWinSecurities. Они, в свою очередь, вызывают другие команды модулей. Полезно будет взглянуть на справку по ним (Get-Help Enable-IoTWinSecurities –Full). Вот примеры работы с ними.
  • Для того, чтобы включить базовый уровень безопасности («Basic» SKU) и задействовать приведённый в примере пароль восстановления BitLocker, выполните следующие команды.
    #$RecoveryPW это пароль восстановления для BitLocker,
    # который вы хотите использовать.
    #Например: $RecoveryPW =
    # '099825-222222-607607-626285-132319-115621-083204-229482'
    #В качестве разделителя в строке команды используется комбинация пробел + обратная галочка.
    Enable-IoTWinSecurities -SKU "Basic" `
    -BitLockerRecoveryPW $RecoveryPW `
    -AddPowerShellRemotingFirewallRule -ErrorLog –Verbose

Взгляните на сообщения о результатах работы команд для того, чтобы выяснить, нет ли среди них предупреждений или сообщений об ошибках, которые касаются включаемых функций безопасности.

Например, предупреждение может содержать рекомендацию о том, что сначала надо перезагрузить систему для того, чтобы завершить установку необходимых средств Windows, а потом снова выполнить команду установки.

Для того, чтобы отключить / удалить настройки уровня безопасности, выполните следующую команду:

Disable-IoTWinSecurities -ErrorLog -Verbose

Отдельные команды, используемые в Enable-IoTWinSecurities и Disable-IoTWinSecurities, можно применять и самостоятельно, для настройки отдельных функций безопасности.

Если TPM «не готов к использованию», его, сначала, нужно установить [9]. В противном случае не получится включить BitLocker.

Если AppLocker настроен в соответствии с высоким уровнем безопасности («High» SKU), пользователи не смогут использовать PowerShell для добавления новых функций Windows. В соответствии с архитектурой системы, файл DISMHOST.EXE, который используется PowerShell, находится во временной папке, в директории, соответствующей учётной записи пользователя, а этот файл окажется заблокированным. В результате пользователи не смогут использовать наши команды для включения VBS, так как эта команда попытается установить необходимую ей функцию Windows. При выполнении команды Enable-IoTWinSecurities мы сначала выполняем установку VBS. Если нужно установить функции Windows, выполните перезагрузку системы для того, чтобы завершить их установку, а затем снова запустите команду.

Для функционирования системы User Mode Code Integrity нам нужно установить ключ реестра для того, чтобы разрешить размещению нашего модуля войти в режим Full Language Mode для Code Integrity Policy. В частности, рассматриваемый здесь модуль, по умолчанию, устанавливается по адресу %Program Files%WindowsPowerShellModule. Если это не так, соответствующий ключ реестра нужно настроить самостоятельно. Для этого нужно поместить путь, по которому установлен модуль (например, %Program Files%WindowsPowerShellModule) в запись типа REG_MULTI_SZ, которая называется «TestPath» и расположена в разделе реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlCITRSData.

Итоги

Сегодня мы рассказали вам о новом средстве для настройки IoT-шлюзов Intel, которые работают под управлением Microsoft Windows. Рассмотренный здесь модуль для PowerShell, IntelIoTGatewaySetup, позволяет взаимодействовать со шлюзами как локально, так и удалённо, а собранные в нём команды помогают упростить и ускорить процедуры настройки шлюзов.

Автор: Intel

Источник [10]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/powershell/142472

Ссылки в тексте:

[1] Security SKU: https://software.intel.com/ru-ru/node/622255

[2] Центре загрузки Intel: https://downloadcenter.intel.com/

[3] описании: https://software.intel.com/ru-ru/node/622255#A84AC2D2-DC9B-4C2D-94F6-80AE843EFA4B

[4] Remote Attestation: https://software.intel.com/ru-ru/node/622254#AC6A8430-8475-46A9-807F-A0FF3A4AE873

[5] эту: https://technet.microsoft.com/en-us/magazine/ff700227.aspx

[6] эту: https://technet.microsoft.com/en-us/library/hh849694.aspx

[7] текущей области действия: https://technet.microsoft.com/ru-ru/library/hh847849.aspx

[8] здесь: http://blogs.technet.com/b/heyscriptingguy/archive/2013/11/26/remoting-week-remoting-sessions-in-powershell.aspx

[9] установить: https://technet.microsoft.com/en-us/library/cc755108.aspx

[10] Источник: https://habrahabr.ru/post/304046/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best