Как защитить содержимое /boot при использовании полного шифрования диска?

Вопрос или проблема

При использовании полного шифрования диска обычно требуется незашифрованный раздел /boot для хранения загрузчика и предзагрузочной среды.

Эти образы initcpio или initramfs необходимо загрузить до того, как произойдет расшифровка, таким образом, они доступны злоумышленнику (злой горничной), которая может заменить их на свои или незаметно изменить их, чтобы заменить включенный сервер ssh или консоль tty, чтобы выдать пароль/ключ расшифровки во внешний мир.

Каков был бы идеальный способ предотвратить (или обнаружить) вмешательство в содержимое /boot? Создание собственного ключа подписи, подписание образов /boot и надежда на то, что в реализации BIOS, защищенной загрузки и безопасности не будет ошибок, которые позволят злоумышленнику (злой горничной) зарегистрировать свой ключ?

Подписание PGP образов, обнуление памяти и остановка системы, когда мы обнаруживаем, что система была разблокирована и загружена с помощью initcpio/initramfs с неправильной подписью?

Даже инструменты TPM (такие как Clevis) обеспечивают защиту только после того, как система уже настроена и работает. Как можно обеспечить доверие после очистки TPM, например, после обновления прошивки?

Или единственной надежной защитой является предоставление нашего собственного /boot извне каждый раз, когда мы хотим загрузить систему после отключения питания?

Используя Защищенную загрузку, только загрузчик, подписанный ключом, которому вы явно доверяете (и который может быть скрыт, безвозвратно, в памяти, которую нельзя прочитать для извлечения этого ключа, в TPM), может загрузиться.

Таким образом, в какой-то момент вы настраиваете ключ подписи, устанавливаете его в TPM, говорите: “Я доверяю этому загрузчику. Он не может быть настроен на выполнение таких действий, как установка кейлоггера перед загрузкой в Linux!”, и, таким образом, подписываете загрузчик.

Загрузчик затем может быть сконфигурирован так, чтобы принимать только объединенные образы ядра linux и initrd, которые вы подписали.

Это, кстати, довольно стандартная практика – Windows делает это, и многие “корпоративные” дистрибутивы Linux делают это по умолчанию или могут это сделать – включая Ubuntu, Fedora и Redhat.

Как можно обеспечить доверие после очистки TPM, например, после обновления прошивки?

Вы не можете. Обновление прошивки никогда не очистит TPM. TPM, по определению того, что оно собой представляет, – это что-то, что не должно касаться обновления прошивки; на самом деле, оно должно быть неизменным для прошивки (в этом суть!). Это корень доверия – вы не можете его изменять. Как только вы это сделаете, вы теряете доверие и должны начать с нуля.

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

Это предполагает немного больше взаимодействия с TPM. У Мэтью Гарретта есть несколько учебных видео на эту тему.

Ответ или решение

Защита содержимого /boot при использовании полного шифрования диска

При использовании полного шифрования диска (/boot) критически важно защитить его содержимое от атак на этапе загрузки. Как упоминается в вопросе, открытая для доступа /boot-партия необходима для хранения загрузчика и образов предварительной загрузки. Это создает уязвимость, так как злоумышленники могут попытаться модифицировать или заменить эти файлы, что может привести к утечке ключа шифрования или пароля.

1. Использование подписывания загрузочных образов

Одним из наиболее эффективных методов защиты вашего /boot-раздела является его подписание. Создание и использование собственного ключа подписания позволит вам проверить целостность загружаемых образов, таких как initramfs и загрузчик.

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

  • Изоляция ключей: Храните ваш закрытый ключ в TPM (Trusted Platform Module), это обеспечит его защиту от физического доступа.

2. Внедрение Secure Boot

Использование технологии Secure Boot предоставляет дополнительный уровень защиты. Она позволяет загружать только те загрузчики и образы, которые были подписаны доверенным ключом.

  • Настройка Secure Boot: При настройке Secure Boot вы можете запустить процесс, в рамках которого загрузчик будет проверять подписи других компонентов, таких как ядро Linux и initramfs. Это помогает исключить возможность загрузки модифицированных или вредоносных образов.

3. Модерируемая загрузка

Система, поддерживающая модерированную загрузку (measured boot), может предоставить еще один уровень проверки, используя взаимодействие с TPM.

  • Проверка на каждом этапе: Каждая фаза загрузки будет записываться в TPM, что позволит вам проверить цепочку доверия. Если какой-либо компонент, например загрузчик, не прошел проверку, процесс загрузки будет остановлен.

4. Защита от физического доступа

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

  • Внешний /boot: В случае, если вы подозреваете, что устройство может быть скомпрометировано, загрузка /boot с внешних носителей, таких как USB (с предварительно загруженными и проверенными образами), может обеспечить дополнительный уровень безопасности.

5. Регулярные проверки и обновления

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

Заключение

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

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

Капча загружается...