Что такое секьюрити бут
Что такое Secure Boot для Windows 11
Вместе с анонсом Windows 11, компания Microsoft опубликовала и новые системные требования для установки операционной системы Windows 11. В них требуется поддержка TPM 2.0, UEFI и Secure Boot. В результате, вокруг этих технологий возникло много вопросов. Пользователей интересует, что такое Secure Boot, как проверить его наличие на компьютере и как его включить в BIOS (UEFI), если он отключен.
Что такое Secure Boot или безопасная загрузка
Secure Boot – это протокол проверки загружаемых операционных систем, который является частью UEFI. Данный протокол проверяет цифровую подпись операционных систем или драйверов UEFI, которые загружаются при включении компьютера, и при отсутствии такой подписи предотвращает их запуск.
Использование Secure Boot защищает систему от внедрения вредоносного кода в загружаемые компоненты операционных систем. Такое внедрение, например, использовалось вирусом-вымогателем Petya, который распространялся в 2017 году. Также Secure Boot может использоваться для ограничения списка ОС, которые могут запускаться на компьютере.
На данный момент Secure Boot поддерживается такими операционными системами как Windows 8 и Windows 10, а также некоторыми дистрибутивами Linux, например, Fedora, openSUSE, RHEL, CentOS, Debian и Ubuntu.
В еще не выпущенной Windows 11 протокол Secure Boot является обязательным условием и указан в системных требованиях. Хотя, с помощью небольших ухищрений текущие сборки Windows 11 можно установить без TPM и Secure Boot.
Как узнать включен ли Secure Boot
Для того чтобы узнать включен ли Secure Boot на вашем компьютере можно воспользоваться средствами встроенными в Windows 10. Для этого нажмите Win-R на клавиатуре и выполните команду « msinfo32 ».
В результате должно появиться окно « Сведения о компьютере ». Здесь в строке « Режим BIOS » будет указано, в каком режиме работает BIOS – UEFI или Устаревший (Legacy), а в строке « Состояние безопасной загрузки » – состояние Secure Boot (включено или отключено).
Если у вас Secure Boot включен и все готово к установке Windows 11, то должно быть так, как на скриншоте внизу:
Также возможен следующий вариант:
В этом случае для обновления до Windows 11 нужно будет включить безопасную загрузку в BIOS.
Подробней в статье:
Конвертация диска с MBR в GPT
Если включить Secure Boot для уже установленной Windows 10, то система может не загрузиться, а вы получите сообщение о том, что « Загрузочное устройство не найдено ». Это происходит из-за того, что на диске используется таблица разделов MBR. Для решения этой проблемы диск нужно предварительно конвертировать из формата MBR в GPT.
Конвертацию диска из MBR в GPT можно выполнить непосредственно в процессе установки Windows 11, вызвав командную строку с помощью комбинации клавиш Shift-F10 (или Shift-Fn-F10 ), либо заранее, из рабочей Windows 10. Конвертацию при установке мы рассматривали в статье о преобразовании диска с MBR в GPT, здесь же будет рассмотрена конвертация из рабочей Windows 10.
Итак, для начала нужно открыть меню « Параметры » (комбинация клавиш Win-i ), перейти в раздел « Обновление и безопасность – Восстановление » и нажать на кнопку « Перезагрузить сейчас ».
После этого появится меню с дополнительными действиями. Здесь нужно выбрать « Поиск и устранение неисправностей », а потом « Командная строка ». Также может понадобиться выбор пользователя и ввод пароля.
В результате перед вами появится командная строка. Сначала нужно выполнить команду, которая проверит возможность конвертации диска:
Если все нормально и конвертация возможна, то вы получите сообщение « Validation completed successfully ». Чтобы запустить конвертацию выполните команду:
Если же проверка диска выдала сообщение « Failed », то нужно попробовать вручную указать номер диска. Для этого нужно добавить параметр « /disk:0 », где 0 – это номер диска.
Чтобы узнать номер диска выполните следующие команды:
В результате в консоль будет выведен список дисков и их объем. Используя эту информацию, можно определить номер диска, который необходимо конвертировать.
После успешной проверки можно запускать конвертацию диска. Для этого нужно выполнить следующую команду:
Где 0 – это номер диска.
После конвертации диска с MBR в GPT нужно зайти в BIOS и выполнить следующие настройки:
Подробней в статьях:
Как включить Secure Boot в BIOS
Для работы Secure Boot диск должен быть в формате GPT. Посмотрите раздел о конвертации диска (выше).
Процесс включения Secure Boot отличается в зависимости от производителя. Точные инструкции по работе с вашим BIOS можно получить в инструкции к материнской плате или ноутбуку. Здесь мы покажем настройку BIOS на примере материнской платы от ASUS.
Чтобы включить Secure Boot на материнской плате ASUS нужно войти в настройки BIOS, активировать режим « Advanced mode ( F7) » и перейти в раздел « Boot ». Здесь нужно открыть подраздел « CSM (Launch Compatibility Support Module) », который отвечает за эмуляцию старого BIOS.
Если функция « CSM » включена, то ее нужно отключить.
После этого нужно вернуться в раздел « Boot » и перейти в подраздел « Меню безопасной загрузки ».
Здесь нужно поменять параметр « Тип ОС » на « Режим Windows UEFI ».
После этого сохраняем настройки BIOS и загружаемся в Windows 10. Если диск был сконвертирован в GPT, то загрузка должна пройти без проблем.
Настройка Secure Boot на других платах :
Создатель сайта comp-security.net, автор более 2000 статей о ремонте компьютеров, работе с программами, настройке операционных систем.
Задайте вопрос в комментариях под статьей или на странице «Задать вопрос» и вы обязательно получите ответ.
«mbr2gpt /disk:0 /validate»
Ну и что делать, если и после этого «Failed»?
Все очень здорово и подробно, большое спасибо за подробную инструкцию. Очень долго искал такой доходчивый вариант порядка действий. Большое спасибо
Как проверить включена ли Безопасная загрузка на компьютере
Одним из системных требований Windows 11 является наличие UEFI с поддержкой Безопасной загрузки (Secure boot). UEFI – это более современная версия BIOS, которая поддерживает жесткие диски большого объема, быстрее загружается и обладает графическим интерфейсом с поддержкой мышки. Безопасная загрузка или Secure boot – это функция UEFI проверяющая цифровой подписи запускаемых операционных систем. Такая проверка позволяет защитить систему от внедрения вредоносных программ в загрузчик операционной системы, а также контролировать список операционных систем, которым разрешено запускаться на компьютере.
В этой статье мы расскажем о том, как проверить включена ли Безопасная загрузка (Secure boot) на компьютере с помощью инструментов доступных в Windows 10.
Сведения о системе
Самую подробную информацию об UEFI и Secure Boot можно получить в окне « Сведения о системе ». Для этого нужно нажать комбинацию клавиш Win-R и выполнить команду « msinfo32 ».
После этого должно появиться окно « Сведения о системе ». Здесь нужно найти строки « Режим BIOS » и « Состояние безопасной загрузки », в которых указывается информация о режиме работы BIOS/UEFI и Secure Boot.
Если у вас на компьютере есть UEFI и Secure boot включен, то должно быть как на скриншоте внизу « Режим BIOS – UEFI » и « Состояние безопасной загрузки – Вкл ».
Если UEFI присутствует, но Secure boot отключен, то здесь будет указано « Режим BIOS – UEFI » и « Состояние безопасной загрузки – Откл ». В данном случае для установки Windows 11 нужно просто включить Безопасную загрузку.
Также возможен вариант, когда будет указано « Режим BIOS – Устаревший (Legacy) » и « Состояние безопасной загрузки – не поддерживается ». В данном случае возможно 2 разных ситуации, либо на компьютере нет UEFI (используется классический BIOS) и Secure boot не поддерживается, либо в UEFI включен режим эмуляции BIOS (включен CSM Launch Compatibility Support Module). Во втором случае для установки Windows 11 необходимо отключить CSM и включить Secure boot.
Ниже мы рассмотрим еще несколько способов проверки Безопасной загрузки на компьютере с Windows 10.
Безопасность Windows
Еще одна возможность проверить включена ли Безопасная загрузка на компьютере с Windows 10 — это окно « Безопасность Windows ». Чтобы воспользоваться этим способом откройте меню « Параметры » (например, с помощью комбинации клавиш Win-i ), введите в поиск фразу « Безопасность устройства » и перейдите в найденный раздел.
В результате откроется окно « Безопасность устройства ».
Здесь в блоке « Безопасная загрузка » будет указано состояние Безопасной загрузки на данном компьютере.
PowerShell
Также состояние Безопасной загрузки можно проверить с помощью PowerShell. Для этого нужно запустить консоль PowerShell с правами администратора и выполнить команду « Confirm-SecureBootUEFI ».
Если Secure boot включен, то появится надпись « True », если выключен – « False ».
Как включить Secure Boot на :
Создатель сайта comp-security.net, автор более 2000 статей о ремонте компьютеров, работе с программами, настройке операционных систем.
Задайте вопрос в комментариях под статьей или на странице «Задать вопрос» и вы обязательно получите ответ.
Где ни читаешь эту тему пишут нужно включить без. Загрузку. Она не включается. Secure boot не даёт включить Enable. Пишет про какие то ключи. Ниже есть пункт включить ключи по умолчанию, помогает. АSRock как включить.
Secure Boot – что это за утилита и как её отключить
Что такое Secure Boot, и как её отключать?
Работа встроенной в BIOS (UEFI) утилиты заключается в сравнении специальных ключей с подписями загрузочного кода системы.
При несовпадении Secure Boot прекращает загрузку с целью защиты компьютера от взлома и использования нелицензионного программного обеспечения.
Для загрузки любой другой операционной системы на ПК от пользователя требуется сначала отключить эту утилиту в интерфейсе UEFI.
Рис.1. Сообщение при попытке поставить новую систему на компьютер с Security Boot.
Принцип работы и особенности Secure Boot
Технологию защиты системы от переустановки придумали не разработчики Microsoft, а специалисты из компании Unified EFI Forum, создавшей новый интерфейс БИОС – UEFI.
Функция предусматривает возможность отключения запрета установки другой ОС и управления ключами на любом ноутбуке и стационарном ПК.
Не получится отключить Secure Boot (SB) только на планшете под управлением Windows.
Для компьютеров с Windows 8 и 10 утилита работает в двух режимах:
Для того, чтобы убрать функцию следует воспользоваться первым режимом.
Замена ключей, которые сравниваются с подписями кода, позволит обойти ограничение на переустановку.
Определение режима загрузки
Узнать о том, что на вашем ПК или ноутбуке включена функция Secure Boot можно тремя способами:
Рис.2. Вход в меню «Свойств системы».
Рис.3. Сообщение, показывающее отсутствие поддержки UEFI и Secure Boot.
После определения режима, в котором работает Secure Boot, следует проверить тип его политики с помощью той же командной строки. Для этого вводится уже другая команда – Get-SecureBootPolicy.
Она может вернуть значение <77FA9ABD-0359-4D32-BD60-28F4E78F784B>, что говорит о правильно настроенной политике безопасности.
Любые другие символы показывают, что безопасная загрузка работает в тестовом режиме.
Сообщение типа Secure Boot policy is not enabled on this machine означает, что режим не поддерживается материнской платой.
Отключение утилиты
Если на вашем компьютере требуется отключить безопасный режим и обеспечить загрузку новой ОС, следует выполнить следующие действия:
На компьютерах с Виндовс 8 и выше существует 2 основных способа входа в БИОС:
После того как удалось войти в интерфейс, следует найти в его настройках пункт, отвечающий за отключение.
Он зависит от конкретной модели компьютера и марки материнской платы.
Например, для ноутбуков HP в БИОС следует найти вкладку System Configuration, перейти к пункту Boot Options и изменить значение показателя Secure Boot на Disabled.
После сохранения изменений и перезагрузки компьютера никаких ограничений на установку ОС остаться не должно.
Устройства Lenovo и Toshiba имеют вкладку Security, а Dell – меню UEFI Boot, где тоже следует отключить Secure Boot.
Рис.4. Отключение безопасной загрузки для модели ноутбука Lenovo.
Для устройств Asus, кроме отключения, требуется дополнительно выбрать возможность установки новой ОС, установив параметр Other OS в пункте OS Type.
На стационарных компьютерах Asus функцию отключают, перейдя в раздел Authentication. А для плат марки Gigabyte требуется переход в меню BIOS Features.
Исправление неполадок
Иногда настройки Secure Boot могут оказаться неправильными.
В этом случае, даже установив систему, в углу рабочего стола можно увидеть сообщение об ошибке типа «Профессиональная Безопасная загрузка (SecureBoot) настроена неправильно Build 9600».
Причина появления этой информации заключается вовсе не в том, что операционная система оказалась нелицензионной или была неправильно активирована, а только о снижении безопасности компьютера и необходимости в следующих действиях:
Рис.5. Включение SB в настройках UEFI материнской платы AsRock для решения неполадки.
Если применённый метод не помог устранить проблему, настройки UEFI следует попробовать сбросить до заводских.
Для этого в БИОС есть пункт Factory Default. При отсутствии поддержки этого режима у компьютера решить вопрос, скорее всего, не получится.
Единственный возможный вариант – установка таких обновлений от Microsoft, как KB288320, которое находится в составе пакета GA Rollup A.
Скачать его можно с официального сайта производителя, обязательно учитывая разрядность вашей системы – х86 или 64.
Нужен ли пользователям Secure Boot?
Появление функции было неоднозначно воспринято пользователями Windows.
С одной стороны, её использование мешает переустановке операционной системы и, таким образом, ограничивает владельца ноутбука или ПК в своих действиях.
С другой эта же опция, по словам разработчиков, позволяет предотвратить действие руткитов – вредоносных скриптов, отрицательно влияющих на работоспособность системы.
Для того чтобы разобраться с этим вопросом, стоит подробнее рассмотреть особенности утилиты:
Функция безопасности начинает работать сразу же после включения питания компьютера, запрещая установку новых систем.
Таким образом, пользователь не может использовать для изменения ОС ни жёстким диском, ни сетевой картой, ни CD, DVD или USB-флешкой.
И, хотя производитель утверждает, что функция легко может быть отключена (пусть даже это и не даст загружаться установленной лицензионной системе), сертификация Win-8 может привести к другому результату.
Microsoft требует от разработчиков ПК и ноутбуков только установки Secure Boot, но не обязывает предусмотреть возможность её отключения.
Кроме того, согласно требованиям сертификации Win-8, устанавливать ключи, отличные от защиты MS, тоже не обязательно.
Получается, что возможна такая ситуация, когда производитель выпустит компьютер с Secure Boot, который будет нельзя отключить, и системой, которая уже установлена на устройстве, придётся пользоваться постоянно.
А, значит, пользователю необходимо знать о такой возможности перед покупкой ноутбука или ПК, чтобы не отключаемый SB не стал неприятным сюрпризом.
Безопасная загрузка
Безопасная загрузка — это стандарт безопасности, разработанный участниками компьютерной индустрии, чтобы гарантировать загрузку устройства с использованием только программного обеспечения, которому доверяет изготовитель оборудования (OEM). Когда компьютер запускается, встроенное по проверяет подпись каждого программного обеспечения загрузки, включая драйверы встроенного по UEFI (также называемые опциональными ПЗУ), приложения EFI и операционную систему. Если подписи допустимы, компьютер загружается, а встроенное по обеспечивает управление операционной системой.
Изготовитель оборудования может использовать инструкции производителя встроенного по для создания защищенных загрузочных ключей и их хранения в встроенном по компьютера. При добавлении драйверов UEFI также необходимо убедиться, что они подписаны и включены в базу данных безопасной загрузки.
сведения о том, как процесс безопасной загрузки включает надежную загрузку и измеряемую загрузку, см. в разделе защита процесса загрузки Windows 10.
Требования безопасной загрузки
Чтобы обеспечить безопасную загрузку, необходимо предоставить следующее.
Требования к оборудованию | Сведения |
---|---|
Невыявленные переменные C UEFI версии 2.3.1 | Переменные должны иметь значение безопасной загрузки = 1 и сетупмоде = 0 с базой данных сигнатур (EFI_IMAGE_SECURITY_DATABASE), необходимой для безопасной предварительной загрузки компьютера, и включения первичного ключа, установленного в допустимой базе данных KEK. для получения дополнительных сведений выполните поиск системных требований system. основы. Firmware. уефисекуребут в файле PDF загрузка спецификации и политик программы обеспечения совместимости оборудования Windows. |
UEFI v 2.3.1 раздел 27 | Платформа должна предоставлять интерфейс, который соответствует профилю UEFI v 2.3.1 раздела 27. |
База данных сигнатур UEFI | платформа должна быть подготовлена с правильными ключами в базе данных сигнатур UEFI (db), чтобы разрешить Windows загрузку. Он также должен поддерживать безопасные обновления, прошедшие проверку подлинности, в базах данных. служба хранилища защищенных переменных должны быть изолированы от работающей операционной системы, чтобы их нельзя было изменять без обнаружения. |
Подписывание встроенного по | Все компоненты встроенного по должны быть подписаны с использованием по крайней мере RSA-2048 с SHA-256. |
Диспетчер загрузки | если питание включено, система должна начать выполнять код в встроенном по и использовать шифрование с открытым ключом в соответствии с политикой алгоритма для проверки подписей всех образов в последовательности загрузки вплоть до Windows диспетчера загрузки. |
Откат защиты | Система должна защищаться от отката встроенного по к более старым версиям. |
EFI_HASH_PROTOCOL | Платформа предоставляет EFI_HASH_PROTOCOL (для UEFI v 2.3.1) для разгрузки криптографических операций хэширования и EFI_RNG_PROTOCOL (определенных корпорацией Майкрософт) для доступа к энтропии платформы. |
Базы данных сигнатур и ключи
Перед развертыванием ПК вы как поставщик вычислительной техники хранит базы данных безопасной загрузки на компьютере. Сюда входит база данных сигнатур (DB), база данных отозванных подписей (DBX) и база данных ключей регистрации ключей (KEK). Эти базы данных хранятся на встроенном в ПЗУ ОЗУ (NV-RAM) во время производства.
В базе данных сигнатур (DB) и базе данных отозванных сигнатур (DBX) перечисляются хэши или цифровые подписи приложений UEFI, загрузчики операционной системы (например, загрузчик операционной системы Майкрософт или диспетчер загрузки), а также драйверы UEFI, которые могут быть загружены на устройстве. Отозванный список содержит элементы, которые больше не являются доверенными и не могут быть загружены. Если хэш изображения находится в обеих базах данных, то база данных отозванных подписей (DBX) имеет приоритет.
База данных ключей регистрации ключей (KEK) — это отдельная база данных ключей подписывания, которую можно использовать для обновления базы данных сигнатур и отзыва базы данных сигнатур. Корпорация Майкрософт требует, чтобы указанный ключ включался в базу данных KEK, чтобы в будущем корпорация Майкрософт могла добавлять новые операционные системы в базу данных сигнатур или добавлять известные плохие образы в базу данных отозванных подписей.
После добавления этих баз данных и после окончательной проверки встроенного по и тестирования изготовитель оборудования блокирует редактирование встроенного по, за исключением тех обновлений, которые подписаны с помощью правильного ключа или обновлений физическим пользователем, использующим меню встроенного по, а затем создает ключ платформы (PK). Ключ PK можно использовать для подписывания обновлений KEK или для отключения безопасной загрузки.
Для получения средств и помощи в создании этих баз данных обратитесь к производителю встроенного по.
Используем Secure Boot в Linux на всю катушку
Технология Secure Boot нацелена на предотвращение исполнения недоверенного кода при загрузке операционной системы, то есть защиту от буткитов и атак типа Evil Maid. Устройства с Secure Boot содержат в энергонезависимой памяти базу данных открытых ключей, которыми проверяются подписи загружаемых UEFI-приложений вроде загрузчиков ОС и драйверов. Приложения, подписанные доверенным ключом и с правильной контрольной суммой, допускаются к загрузке, остальные блокируются.
Более подробно о Secure Boot можно узнать из цикла статей от CodeRush.
Чтобы Secure Boot обеспечивал безопасность, подписываемые приложения должны соблюдать некоторый «кодекс чести»: не иметь в себе лазеек для неограниченного доступа к системе и параметрам Secure Boot, а также требовать того же от загружаемых ими приложений. Если подписанное приложение предоставляет возможность недобросовестного использования напрямую или путём загрузки других приложений, оно становится угрозой безопасности всех пользователей, доверяющих этому приложению. Такую угрозу представляют загрузчик shim, подписываемый Microsoft, и загружаемый им GRUB.
Чтобы от этого защититься, мы установим Ubuntu с шифрованием всего диска на базе LUKS и LVM, защитим initramfs от изменений, объединив его с ядром в одно UEFI-приложение, и подпишем его собственными ключами.
Ограничения решений «из коробки»
Ubuntu, как и другие распространённые дистрибутивы, предлагает опцию шифрования всего диска с LVM во время установки. Дистрибутив в такой конфигурации без ошибок устанавливается на UEFI с активным Secure Boot.
Но Canonical в первую очередь заинтересована в работоспособности ОС на устройствах с включённым Secure Boot, а не в обеспечении безопасности за счёт него. Если вы хотите использовать Secure Boot как средство безопасности, то вы сами по себе.
Как Ubuntu реализует загрузку в Secure Boot с шифрованием всего диска и что с этим не так?
Red Hat разработали загрузчик shim, чтобы он работал на всех устройствах и служил на благо человечеству, соблюдая строгие предписания стандарта Secure Boot и загружая только доверенные UEFI-приложения. Canonical использует shim как прокси, встраивая в него свой публичный ключ и подписывая у Microsoft. Shim загружает GRUB, подписанный ключём Canonical, который затем загружает ядро, подписанное Canonical.
Начнём с того, что шифруется не весь диск — /boot остаётся незашифрованным, а значит и initramfs в нём. Доступ к initramfs означает root-доступ. Fail.
GRUB должен верифицировать загружаемые ядра и отвергать неверно подписанные. Он этого не делает. Triple Fail.
Что это всё означает?
Согласно политике Microsoft о подписывании UEFI-приложений, все подписанные загрузчики GRUB и shim, используемые для загрузки GRUB, уже должны быть занесены в чёрный список.
Вывод
Необходимо отказаться от чужих ключей. Пользователь должен контролировать Secure Boot. Загрузчик должен быть подписан пользователем, все незашифрованные и доступные для записи элементы в загрузке системы должны верифицироваться. Пользовательские данные должны быть зашифрованы. Чего мы и попытаемся добиться.
Установка Ubuntu с шифрованием всего диска с помощью LUKS и LVM
LUKS — Linux Unified Key Setup — обёртка для криптографической системы dm-crypt, позволяющая создавать виртуальные зашифрованные устройства в файлах и на физических дисках. С помощью LUKS можно зашифровать данные на всём диске для того, чтобы перед загрузкой ОС требовалось ввести пароль.
LVM — Logical Volume Manager — менеджер логических томов, с помощью которого мы разделим криптоконтейнер на тома. Тома LVM автоматически монтируются после ввода пароля к криптоконтейнеру, отдельный ввод пароля для каждого тома не требуется.
Следующие инструкции должны быть применимы к любому дистрибутиву на базе Ubuntu, для других потребуются коррективы. Сперва загрузитесь с Live CD или установочного образа в режиме Try before installing.
Разметка и шифрование
Чтобы загружаться с диска в режиме UEFI, он должен быть размечен в формате GPT. Разметку диска рассмотрим с помощью KDE Partition Manager и GParted. Если у вас их нет, установите один, соответствующий вашей среде.
Запустите редактор разделов и выберите интересующий вас диск, обычно это первый в системе — /dev/sda. Посмотрите свойства диска.
В строке Partition table указана используемая таблица разделов. Если диск размечен в формате dos/msdos (MBR), то его необходимо преобразовать в GPT. Это возможно сделать без потери данных, но здесь я этого описывать не буду, поищите инструкции в интернете. Если на диске нет важных данных и вы хотите форматировать его в GPT, создайте новую таблицу.
На диске должен быть как минимум один раздел ESP (EFI System Partition), в котором будут храниться загрузчики. Если на этом диске установлена ОС в режиме UEFI, то один такой раздел уже есть. В любом случае я рекомендую создать новый размером не меньше 100 МБ. ESP должен быть отформатирован в один из FAT-форматов, предпочтительно в FAT32, а также помечен как загрузочный.
Дальше нужно создать раздел для шифрования. Тем же образом, что и ESP, только без форматирования (unformatted), выставления флагов и размером побольше — так, чтобы вместил систему и раздел подкачки. Создадим в этом разделе криптоконтейнер LUKS через терминал, предварительно перейдя в режим суперпользователя.
Подтвердите форматирование, написав YES, введите пароль. Теперь откройте криптоконтейнер (sda2_crypt — имя для маппинга) и введите тот же пароль.
Контейнер должен стать доступным как блочное устройство /dev/mapper/sda2_crypt. Перейдём к разметке логических томов внутри криптоконтейнера. Инициализируем физический раздел LVM поверх /dev/mapper/sda2_crypt.
Внутри этого физического раздела создадим группу томов с именем ubuntu.
Теперь мы можем создавать логические тома внутри этой группы. Первым делом создадим том для раздела подкачки и инициализируем его. Рекомендуемый размер — от sqrt(RAM) до 2xRAM в гигабайтах.
С разметкой закончено, можно перейти к установке.
Установка
Так как мы планируем создать загрузчик самостоятельно, да и установщик Ubuntu не поддерживает шифрование /boot, запустим установку без создания загрузчика.
На этапе разметки диска выберите Вручную.
Здесь нам необходимо указать точки монтирования. Выберите /dev/mapper/ubuntu-root, укажите использование в качестве журналируемой файловой системы Ext4, точку монтирования (Mount Point) в /, без форматирования. Ubiquity сама подхватит /dev/mapper/ubuntu-swap как раздел подкачки и запомнит один из системных разделов EFI. Экран разметки должен выглядеть так:
Закончите установку и не перезагружайтесь.
Настройка crypttab, fstab и resume
Вам необходимо вручную заполнить /etc/crypttab — файл, описывающий монтируемые при загрузке криптоконтейнеры.
В него нужно добавить запись о /dev/sda2, монтируемом в /dev/mapper/sda2_crypt. Настроим монтирование по UUID, а не по имени устройства. Чтобы узнать UUID /dev/sda2, откройте другой терминал и воспользуйтесь командой:
Проверьте, чтобы в /etc/fstab были правильно описаны монтируемые разделы, а в /etc/initramfs-tools/conf.d/resume указан раздел для пробуждения из гибернации.
После всех изменений обновите образ initramfs.
Создание загрузчика
Ядро Linux поддерживает загрузку напрямую из UEFI, если оно было скомпилировано с параметром CONFIG_EFI_STUB. В таком случае initramfs обычно хранится рядом в ESP, и путь к нему передаётся в аргументах к ядру.
Однако отсутствие верификации initramfs позволяет встроить в него вредоносный код, имея доступ на запись в ESP. Teddy Reed предлагает компилировать ядро, встраивая в него initramfs.
Процесс компиляции ядра достаточно длительный, её придётся производить после каждого изменения initramfs. К счастью, есть другой способ. В пакете systemd (ранее в gummiboot ) находится linuxx64.efi.stub — заготовка UEFI-приложения, в которую можно встроить ядро, initramfs и аргументы, передаваемые ядру. Подписав это UEFI-приложение, мы защитим ядро и initramfs от изменений.
Запишем в /tmp/cmdline аргументы, которые будут передаваться ядру.
В /boot хранятся образы ядра (vmlinuz-*-generic) и initramfs (initrd.img-*-generic). Определите последнюю версию и встройте их в заготовку.
Полученное UEFI-приложение ubuntu.efi необходимо расположить в ESP в каталоге EFI/BOOT/. Установщик Ubuntu должен был определить ESP и настроить монтирование в /boot/efi. Если в этом ESP нет других загрузчиков, то ubuntu.efi можно скопировать в /boot/efi/EFI/BOOT/BOOTX64.EFI, тогда он будет загружаться при выборе этого раздела в меню загрузки UEFI.
UPD: Если в вашу прошивку не встроен UEFI Shell, то скачать его можно отсюда. Положите его в EFI/BOOT/BOOTX64.EFI любого ESP и загружайтесь с отключённым Secure Boot. Чтобы добавить загрузочную запись, введите команду:
Спасибо Prototik за ссылку на UEFI Shell. Список остальных команд можно найти здесь.
Если у вас включён Secure Boot, то загрузиться с ubuntu.efi не получится, так как он не подписан. Временно отключите Secure Boot и загрузитесь, либо продолжите из chroot.
Настройка Secure Boot
Генерацию ключей, их установку в прошивку и подписывание UEFI-приложений описал CodeRush здесь, поэтому я буду считать, что вы всё понимаете и умеете.
Остаётся только подписать созданный нами загрузчик.
Поместите BOOTX64.EFI в каталог EFI/BOOT/ раздела EFI, с которого вы планируете загружаться.
Автоматизация
Чтобы загрузчик автоматически обновлялся и подписывался при обновлении initramfs, создайте скрипт update-efi-loader в /etc/initramfs/post-update.d/, изменив пути где требуется.
Дайте скрипту право на исполнение.
При обновлении ядра придётся произвести эту операцию вручную.
Подписывание драйверов и модулей ядра
Чтобы добавить этот сертификат в прошивку, его необходимо преобразовать в формат PEM, затем в ESL и подписать ключом KEK.
Очевидные советы
Если вашей задачей стоит защита данных на устройстве, то Secure Boot выполнит свою работу и не больше. Остальное возлагается на вас.
Не добавляйте чужих ключей в прошивку. Даже от Microsoft. В первую очередь от Microsoft.
Не подписывайте UEFI Shell, KeyTool или другие приложения, имеющие доступ к записи в NVRAM. Используйте их в Setup Mode.
Не оставляйте устройство включённым без присмотра. Устройство в ждущем режиме (suspend to RAM) содержит в RAM расшифрованные данные и мастер-ключи от криптоконтейнеров.
Установите пароль на UEFI Setup не проще, чем от вашего криптоконтейнера.
При физическом доступе к внутренностям устройства можно отключить Secure Boot, сбросив память NVRAM или повредив её, а также оставить хардварную закладку. Такая атака успешна только тогда, когда она незаметна. Сделайте так, чтобы вы о ней могли узнать: заклейте винты на корпусе трудновоспроизводимыми стикерами, обмажьте их лаком с блёстками. Опечатайте своё устройство.
Поставьте первым в списке загрузки неподписанное приложение. Если вы однажды не увидите сообщение от Secure Boot, то ваше устройство однозначно скомпрометировано.
Надёжнее отключённого от интернета устройства, хранимого в сейфе, всё равно ничего не придумаешь. Уязвимости в реализации Secure Boot в конкретных прошивках не исключены.
Бонус: возвращение гибернации
При шифровании всего диска вместо ждущего режима для сохранения состояния и продолжения работы с места остановки обычно используется гибернация, она же спящий режим или suspend to disk.
Из соображений безопасности разработчики ядра отключили возможность гибернации при включённом верифицировании модулей ядра. Аргументируется это тем, что образ восстановления не верифицируется при пробуждении, раздел подкачки может быть подменён и тогда система проснётся с непроверенным и потенциально вредоносным кодом.
Это верно в том случае, если initramfs не верифицируется и/или раздел подкачки не зашифрован. Однако независимо от использования гибернации при таких условиях initramfs может быть подменён, а чувствительные данные восстановлены из раздела подкачки. В нашей конфигурации initramfs верифицируется, будучи включённым в подписанный загрузочный файл, а раздел подкачки зашифрован. Значит, данное ограничение для нас бессмысленно.
Chung-Yi Lee ещё в 2013 предложил верифицировать образ восстановления, а в 2015 представил реализующий его идею патч. Но воз и ныне там. Поэтому предположим, что мы достаточно защищены с нашим шифрованием, и вернём нам гибернацию без верификации.
Способ 1. Отключить верификацию модулей ядра
Включённая верификация модулей ядра отключает гибернацию. По умолчанию верификация модулей ядра включается вместе с Secure Boot, однако она от Secure Boot не зависит. Её можно отключить, оставив только Secure Boot.
Большого ущерба безопасности это нанести не должно. Модули ядра устанавливаются из доверенного источника вместе с обновлением ядра и хранятся на зашифрованном диске и в верифицируемом initramfs. Сторонние драйвера устанавливаются вручную, и будут они подписаны нами или нет, значения не имеет, ведь мы им уже доверяем. SecureApt для ядра и TLS/HTTPS для сторонних драйверов должны защитить от MiTM, и тогда остаётся только root-доступ к расшифрованному диску. Но в таком случае у злоумышленника уже есть наши данные.
Введите пароль, который затем потребуется посимвольно подтвердить. Теперь нужно загрузиться через shim и выбрать в нём Change Secure Boot state (sic!). Поместите /usr/lib/shim.efi в EFI/BOOT/BOOTX64.EFI на одном из ESP или добавьте загрузочную запись через UEFI Shell. Предварительно отключите Secure Boot, после верните обратно.
UPD 12.01.17: Вместе с shim.efi необходимо сохранять рядом и MokManager. В последних версиях пакета shim.efi и MokManager располагаются в /usr/lib/shim/, shimx64.efi и mmx64.efi.signed соответственно. Нужно переименовать mmx64.efi.signed в mmx64.efi.
Сейчас Secure Boot и гибернация работают, UEFI-приложения верифицируются, но модули ядра нет.
В принципе, shim и mokutil больше не требуются, их можно удалить.
Способ 2. Использовать старую версию ядра
Патч, отключающий гибернацию, появился в версии Ubuntu-4.4.0-18.34. Ubuntu-4.4.0-17.33 должна быть от него свободна. Однако оставаться на старом ядре, игнорируя обновления безопасности, не лучший вариант.
Способ 3. Скомпилировать своё ядро
Если ваше время ничего не стоит, то вы можете скомпилировать своё ядро без этого ограничения. Гарантий, что после долгих мучений вы будете довольны результатом, нет. Но если вы этого очень хотите, хвала Линусу Торвальдсу и GPLv2, у вас есть на это право. Вы можете предварительно протестировать скомпилированное мною ядро, чтобы не тратить зря время.
Получение исходного кода
apt-get
Самый простой способ получить исходный код для ядра вашей версии — скачать его из репозитория.
В /etc/apt/sources.list должны присутствовать указатели на репозитории исходных кодов. Обычно там уже есть закомментированные записи с deb-src. Раскомментируйте их для репозиториев xenial main и xenial-security main, либо добавьте сами, а затем обновите индекс apt.
Загрузите исходный код и перейдите в создавшуюся директорию.
Обратите внимание на то, чтобы apt скачивал актуальную версию исходного кода. Проверьте номер версии у файла .dsc.
Если вы хотите поддерживать ядро в актуальном состоянии и перекомпилировать его по мере выхода обновлений с сохранением своих изменений, выберите git. Первоначальная загрузка займёт продолжительное время.
Создайте локальную копию git-репозитория ядра текущего релиза Ubuntu и перейдите в создавшуюся директорию.
Создайте ветку temp для тега, соответствующего вашей версии, и переключитесь на неё.
Настройка
Загрузите пакеты, требуемые для компиляции (build dependencies).
Убедитесь, что скриптам выставлено право на исполнение, запустите чистку.
Скопируйте старый файл конфигурации в текущую директорию, запустите конфигурацию, выберите Load и загрузите config. Больше изменять ничего не требуется, выйдите и сохраните конфигурацию — Exit → Yes.
Измените файл kernel/power/hibernate.c, убрав проверку secure_modules().
Подготовьте файл к коммиту.
Если вы ещё не совершали коммитов и не вводили свои данные, сделайте это сейчас.
Сделайте коммит, введите комментарий.
Теперь ваши изменения сохранены в новом снимке состояния (snapshot). Если вы захотите обновиться до следующей версии и применить к ней те же самые изменения, используйте git rebase
Скрипты компиляции определяют версию ядра по последней записи в истории изменений (changelog) в директории debian.master. Добавьте новую запись, чтобы изменить версию.
К версии будет добавлен суффикс custom1, что отразится при сборке пакетов .deb и позволит установить их при уже установленных пакетах той же версии без суффикса. Однако этот суффикс распространяется только на имя пакета, но не на его содержимое: ядро и директория с его модулями будут иметь ту же версию 4.4.0-34-generic, и при установке старые файлы перезапишутся новыми. Чтобы этого избежать, измените версию ABI c 34 на, например, 3400.
Компиляция
Запустите чистку ещё раз и скомпилируйте ядро. Если вы не опытный разработчик ядра и не понимаете, как работают проверки ABI и модулей (я вот не понимаю), отключите их (skipabi=true, skipmodule=true), иначе ваша компиляция сломается на одном из последних этапов. Здесь используется многопоточная сборка пакетов с количеством потоков, равным количеству ядер процессора. Цель binary-generic означает компиляцию обычной разновидности ядра, архитектура определяется автоматически.
Снова соберите загрузочный файл.
Гибернация работает, но нестабильно. Как, впрочем, и без Secure Boot.
Способ 4. Отказ от гибернации и использование виртуализации
Если гибернация и работает, то это не делает её надёжным средством сохранения состояния. Это может быть проблемой моего железа, дистрибутива или, что более вероятно, KDE Plasma, но у меня Kubuntu просыпается через раз.
С большей надёжностью придёт и большая защищённость: чувствительные данные можно изолировать от опасной среды. Браузер и песочница для установки стороннних пакетов в одной виртуальной машине, важные персональные данные — в другой. Украсть мастер-ключ от зашифрованного диска в памяти хостовой ОС из гостевой гораздо сложнее. Кажется, для подобного существует Qubes OS. Но она данный момент не поддерживает Secure Boot. Fail.
На этом всё, приветствуются любые дополнения и замечания.
Примечания
↑ Теоретически можно исправить, установив пароль, встроив grub.cfg в образ GRUB с помощью grub-mkstandalone и установив в grub.cfg prefix на невалидный путь, чтобы GRUB не мог найти второй grub.cfg на диске. Но опять же требуется подписывать образ самостоятельно.
↑ А он есть у всех кроме параноиков оправданно озабоченных своей безопасностью пользователей.
↑ У меня загрузиться с USB не даёт. Windows 8 и 10 также без пароля не пускают в безопасный режим или консоль.
↑ Говорят, некоторые прошивки он окирпичивает. Безопаснее создать по ESP на каждый загрузчик.