PID/PPS инициализация AMT

Статья "PID/PPS инициализация AMT" из серии "Учебник по Intel AMT", часть третья.

См. также:

Вступление к третьей части

Во второй части по ходу практического разбирательства AMT 2 была затронута важная-сложная-объёмная тема основных паролей АМТ. Именно лишь "основных" - постепенно, с ростом номера версии АМТ, будут добавляться другие. Я целенаправленно не разбираю сразу все пункты того же MEBx (скриншотами которого всё началось), т.к. не уловив хотя бы общего смысла цельной схемы работы АМТ, понять назначение многих из них просто невозможно. Так что продолжу схему практика+теория.

PID and PPS

В разделе AMT Configuration есть пункт PID and PPS:

PID-PPS

Здесь можно задать значения для пар "PID (Provision ID) + PPS (PreProvision Key)".

  • PID - это 8 буквоцифр (0-9 / A-F), по четыре в каждом сегменте, разделённых дефисом
  • PPS - 32 буквоцифры или 8 сегментов по четыре через дефисы.

Значения PID/PPS используются для инициализации AMT.

Инициализация AMT

Мы дошли до большой-сложной-основной темы - инициализация/конфигурирование AMT. В официальной документации не всегда явно разделяются эти два процесса (Initialization & Configuration), особенно с учётом того, что чаще инициализация плюс конфигурирование происходит одновременно и однократно. Однако из-за принципиальных отличий и для понимания работы, это нужно чётко отделять - сначала проходит процесс "первичной" инициализации (однократно), а после может быть сколько угодно процессов конфигурирования.

Путаница в терминологии

В документации, кроме того, что не всегда чётко разделены эти процессы (init/config), ещё и страшная путаница в терминах (применяемых к процессу инициализации-конфигурирования АМТ). Основные это:

  • AMT Initialization (initializing, init) - наиболее очевидно описывающие смысл "первичной инициализации" термины. Однако в документации реально могут подразумевать как "только инициализацию" или "инициализацию+конфигурирование", так и просто "конфигурирование" (что имеет уже другой смысл).
  • AMT Configuration (configuring, config) - наиболее чётко показывает смысл "конфигурирования" (конфигурации). Однако как и предыдущий вариант, в документации его смысл может разниться. Здесь и далее это будет означать процесс _не_ включающий инициализацию (если они могут быть разделены в контексте).
  • AMT Provisioning - чаще ближе по смыслу к инициализации, подразумевая в том числе и конфигурирование, однако зависит от контекста.
  • AMT Setup - тоже ближе по смыслу к инициализации, но также зависит от контекста.

Итого, чтобы избегать разночтений, я буду использовать:

  • "инициализация" - первичный процесс взаимодействия между конфигурирующим сервером и АМТ-системой
  • "конфигурирование" - процесс изменения настроек (до этого уже проинициализированной) АМТ- системы.
  • Provisioning - процесс совмещающий "инициализацию" и последующее "конфигурирование" (следуют во времени один за другим сразу же)

Для чего нужна инициализация АМТ

Работа АМТ не только не зависит от операционной системы, но даже и от состояния компьютера. Соответственно, АМТ должна уметь работать "самостоятельно". Но как администратор получит доступ к АМТ в самый первый раз?
Поставить какой-то простой логин-пароль, аналогично тому, как такое делается, к примеру, для роутеров - нельзя, ведь компьютеров может быть много и тогда любой "хацкер" сможет получить управление над не успевшими (забывшими) изменить "дефолтный" пароль компьютерами. Потому команда АМТ ещё для первой версии АМТ придумала схему PID+PPS. PID - небольшой идентификатор, который отсылает АМТ-компьютер на конфигурирующий сервер. На сервере есть (должно быть) соответствующее ему значение PPS (потому говорится о "паре"), которое он высылает в качестве ответа. АМТ компьютер проверяет это значение с имеющимся у него соответствием PID/PPS и если оно совпадает, считает такой сервер "правильным"/"доверенным" (т.е. "не хацкером"), принимая от него все последующие команды на изменение своих АМТ-настроек.

AMT Provisioning

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

Во второй версии (и всех последующих) этот недостаток был исправлен - процесс инициализации идёт только по шифрованному каналу. Рассмотрим в подробностях стадии инициализации AMT.

PID/PPS инициализация AMT

Данный способ инициализации пропал, начиная с AMT 7, однако широко использовался из-за своей простоты, потому с него и начнём.

Имеем компьютер с поддержкой технологии AMT, которая включена в BIOS и пока не сконфигурирована. В статусе состояния Provisioning State стоит 0 - "Pre" (не проинициализировано). Имеем Intel Setup and Configuration Server (SCS) либо его функциональный аналог, предназначенный для инициализации-конфигурирования AMT (подробности его работы-настройки будут рассмотрены в следующих частях, пока просто "он есть").

Для того, чтобы отработал PID/PPS вариант инициализации AMT, необходимо, что данная пара "ключей" была и на SCS-сервере и на AMT-компьютере:

PPS Provisioning

Чтобы пока не застрять на излишних сейчас деталях, для простоты воспользуемся схемой инициализации AMT через интернет (где в т.ч. есть поддержка PID/PPS). Заходим в MEBx, при необходимости устанавливаем новый пароль, в меню "PID and PPS" вводим сначала PID = 0000-00EX:

PID 00EX

а после PPS=0000-0000-0000-0000-0000-0000-0000-0369.

PPS 0000-0000-0000-0000-0000-0000-0000-0369
Повторюсь, такие значения PID/PPS лишь для описанного способа, они не "универсальные".

Как только мы введём последний символ PPS и нажмём ввод, произойдёт следующая череда событий (даже не дожидаясь выхода-сохранения MEBx-параметров, т.к. это уже будет работать ME/AMT):

1. AMT отсылает так называемый Hello-packet на Provisioning Server.
Как определяется его адрес-порт? Для этого смотрится поле "Provisioning Server" - там напрямую может быть задан IP адрес конфигурирующего сервера и порт (если его не задавать, то по умолчанию это 9971).

Hello packet IP

Если же поле пустое (как было в данном случае), то адрес Provisioning Server "вычисляется" следующим образом:

  • AMT делает DHCP-запрос и получает поле Option 15 (DNS-suffix).
    В моём случае это "vpro.by".
  • Далее AMT к нему добавляет поддомен "provisionserver" (чисто текст слева + точка), на который и отправляет Hello-packet:
Hello-packet

2. Одновременно с посылкой Hello-packet, AMT открывает свой порт 16993 (изначально он закрыт по соображениям безопасности - чтобы враги не "увели" AMT-компьютер, проинициализировав раньше хозяина), который предназначен для работы с TLS-шифрованием (HTTPS). Байт состояния Provisioning State переходит в 1 - "In Progress" (в процессе инициализации).

Порт открывается лишь на некоторое время, обычно это 6 часов (это значение может быть изменено производителем - чтобы не оставаться слишком долго "потенциально уязвимым для хацкеров"). Если за это время AMT не будет проинициализировано, то для проведения инициализации потребуется повторная "активация" (посылка Hello-packet и открытие 16993).

Port 16993 open

3. Hello-packet - это примитивная структура, которая отправляется в открытом виде (http, т.е. без шифрования):

Hello packet structure

Если сервер обнаружен и доставка пакета подтверждена - AMT закрывает соединение.

4. Сервер, получив Hello-packet, запоминает IP, с которого он пришёл. Далее в своей базе находит PPS, который соответствиет PID из Hello-packet-а и создаёт соединение на этот IP (порт 16993). В моём случае (схема конфигурирования через интернет) для корректной отработки данной процедуры требуется проброс портов:

16993 port forwarding

Соединение использует TLS-шифрование:

PPS port 16993

AMT проверяет PPS и если он совпадает с тем, что был сохранён ранее, подтверждает установку шифрованного соединения.

5. Сервер посылает на AMT-компьютер админский пароль, который на этой стадии есть копия MEBx-password. При его совпадении AMT-компьютер готов принять AMT-настройки с сервера и далее по сути уже идёт процесс конфигурирования, по результатам которого байт состояния Provisioning State получает двоечку - "Post" (проинициализировано).

Итого - теперь AMT-компьютер проинициализирован/сконфигурирован и может обслуживаться удалённо. Однако если внимательно присмотреться, то мы много действий делали "вручную" - это и первый заход в MEBx, и задание пароля, который после должен попасть на сервер, и задание PID/PPS, тоже нужных серверу для инициализации. Конечно же, для админа, который потенциально может обслуживать тысячи компьютеров, это (много "ручных" действий") не допустимо и для "борьбы с этим" командой разработчиков AMT было проделано много работы. Об этом - "автоматизации процесса инициализации AMT" - поговорим в следующей части.

Комментарии

Вы пишете что данный способ пропал начиная с АМТ 7, а где можно прочитать про Zero-Touch инициализацию в следующих версиях AMT?

Аватар пользователя apple_rom

Пропал примитивный PID/PPS, а Zero-Touch, он же Remote Configuration — стал (и является сейчас) основным.

Статью же про Zero-Touch инициализацию читайте в восьмой части учебника по Intel AMT (пишу, как доделаю и вспомню - поставлю здесь точную ссылку).

Здравствуйте, не могу настроить VNC Real AMT, пишет:

Connection failed. Check you have entered the correct address/hostname. Check AMT Server is configured to allow TLS-secured connections.

Аватар пользователя apple_rom

Слишком мало информации.

  • Если вы уже проинициализировали/сконфигурировали AMT - попробуйте указать адрес без TLS-шифрования, т.е. порт 16992, а не 16993.
  • Если же нет, то, конечно, сначала нужно проинициализировать/настроить Intel AMT С учётом того, что вы задали вопрос здесь, видимо в этом и проблема. Однако данная статья по PID/PPS инициализации актульана лишь для Intel AMT версий до AMT 7 "невключительно" (т.е. до включительно лишь AMT 6.2). Системы с АМТ7 и выше не поддерживают PID/PPS инициализацию, пробуйте другие способы. Самый простой обычно - Activate Network Access.

Добавить комментарий

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
Anti-bot.