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

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


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

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

IntelIoTGatewaySetup дозволяє налаштовувати наступні функції безпеки Windows, зазначені в описі рівнів безпеки. Передбачено три рівні безпеки. Зокрема, це, у порядку зростання забезпечуваного рівня захисту, 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, Integrity Code.

  • 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. Ця функція потребує настроювання додаткової мережевої інфраструктури і в додатковому програмному забезпеченні.

  • BitLocker + Network Unlock. Технологія Network Unlock вимагає установки додаткової мережевої інфраструктури і можливостей DHCP-драйвера в UEFI. В результаті модуль PowerShell здатний налаштувати лише BitLocker з підтримкою TPM.

  • USB Filter. Для налаштування цієї функції у відповідності з особливостями використання шлюзу, застосовуйте групові політики для того, щоб керувати USB-пристроями, грунтуючись на Device ID або Class ID.

  • Keyboard Filter. Для налаштування фільтра скористайтеся інструментом Windows ICD.
В папці IntelIoTGatewaySetup знаходяться наступні основні компоненти:

  • Readme.rtf. Звичайний супровідний файл з інструкціями по початку роботи.
  • ModuleInstallation.ps1. Допоміжний скрипт для встановлення модуля IntelIoTGatewaySetup.
  • Папка IntelIoTGatewaySetup. Тут міститься сам модуль.
Установка модуля
Якщо у вас є шлюз, оснащений дисплеєм і клавіатурою, PowerShell команди, необхідні для установки модуля, можна виконувати безпосередньо на шлюзі. Після установки PowerShell команди, які надає модуль, так само можна виконувати прямо на шлюзі. Ми називаємо це локальної установкою і локальним виконанням команд.

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

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

Отже, для віддаленої інсталяції модуля потрібно виконати наступні кроки.

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

  • Якщо на шлюзі встановлена Windows IoT Core, то все вже готове до роботи, нічого більше робити не потрібно.

  • Якщо ж шлюз оснащений Windows IoT Enterprise, потрібно дозволити віддалене взаємодія з PowerShell, використовуючи цю і цю інструкції. Наприклад, для того, щоб увімкнути віддалений доступ до 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. Для того, щоб це зробити, введіть символ крапки «.» і пробіл перед шляхом до запускається скрипту. Цей підхід дозволяє запустити скрипт поточної області дії.

. .\ModuleInstallation.ps1

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


6. Виконайте команду
Install-IntelIoTGatewaySetup
для установки модуля з комп'ютера розробника на шлюз. Правила використання цієї команди можна знайти в довідкових матеріалах з попереднього кроку. Наприклад, можна скористатися наступною послідовністю дій:

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

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

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

  1. Запустіть службу WInRM, якщо вона ще не запущена.

    if ((Get-Service WinRM).Status.ToString() -ne 'Up') {
    # Запуск служби WinRM 
    Write-Verbose "Start WinRM service."
    net start WinRM
    }

  2. Додайте віддалений шлюз в список TrustedHosts.

    #Ця команда видаляє вихідний TrustedHosts і призведе до використання $remoteip.
    #Крім того, вона може додати нове значення до списку TrustedHosts.
    #Довідку можна викликати командою Get-Help Set-Item.
    #$remoteip це IP-адресу віддаленого шлюзу.
    #В якості роздільника у рядку команди використовується комбінація пробіл + зворотна галочка.
    Set-Item WSMan:\localhost\Client\TrustedHosts `
    -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 «не готовий до використання», його спочатку треба встановити. В іншому випадку не вийде включити BitLocker.

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

Для функціонування системи User Mode Integrity Code нам потрібно встановити ключ реєстру для того, щоб дозволити розміщення нашого модуля увійти в режим Full Language Mode для Integrity Code Policy. Зокрема, розглянутий тут модуль, за замовчуванням, встановлюється за адресою
%programfiles%\WindowsPowerShell\Module
. Якщо це не так, відповідний ключ реєстру потрібно настроїти самостійно. Для цього потрібно помістити шлях, по якому встановлений модуль (наприклад, %
programfiles%\WindowsPowerShell\Module
) запис типу
REG_MULTI_SZ
, яка називається «TestPath» і розташована в розділі реєстру
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CI\TRSData
.

Підсумки
Сьогодні ми розповіли вам про новому засобі для налаштування IoT-шлюзів Intel, що працюють під управлінням Microsoft Windows. Розглянутий тут модуль для PowerShell, IntelIoTGatewaySetup, дозволяє взаємодіяти зі шлюзами як локально, так і віддалено, а зібрані в ньому команди допомагають спростити та прискорити процедури налаштування шлюзів.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.