Статья Дуалбут с зашифрованными Linux и Windows

Привет, кодебай!

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

Итак, постановка задачи: вы хотите держать все свои данные зашифрованными, но при этом у вас на одном жёстком диске расположился как Линукс, так и Виндовс. Это может понадобиться, например, если нужна программа, которая не представлена в Лине, или если есть какие-то корпоративные требования безопасности или… Да мало ли зачем благородному дону или донне нужны две ОС.

Смотреть в сторону богомерзких решений с закрытыми исходниками типа BitLocker мы, разумеется, не будем. Для Windows нам понадобится VeraCrypt, а для Линукса – встроенный в большинство дистрибутивов LUKS.

Проблема же заключается в том, что при шифровании Windows с помощью TrueCrypt или VeraCrypt они записывают себя на первое место в списке загрузчиков и после ввода пароля у нас уже нет возможности загрузить Linux. Решение именно этой проблемы представлено в заметке, которую вы читаете. (На русском языке я не нашёл аналога, а то, что на английском - без скриншотов и вообще недостаточно подробно)

Для начала стоит настроить выбрать правильную таблицу разметки диска – нас интересует EFI. Альтернативой будет MBR, с которым мне так и не удалось справиться. Выбор делается при установке Windows: в каком режиме запустите установку, в таком и будет размечен диск. Нас интересует UEFI.

Первым устанавливается Виндовс, чтобы установившийся вторым Линукс – я выбрал для демонстрации лаконичный Manjaro – поставил свой загрузчик GRUB 2. Разумеется, при разметке следует оставить место для линукса! Windows самостоятельно создаст раздел FAT32 размером в 100 Mb с флагами boot и esp.

Screenshot_2018-10-13_21-18-17.png
Screenshot_2018-10-13_21-19-28.png

Поставили? Отлично, теперь Линь. Для начала проверим, всё ли в порядке с таблицей разделов: в gparted вы должны увидеть нечто подобное.
Screenshot_2018-10-13_22-12-54.png

При установке выбираем Manual Partitioning, создаём зашифрованный раздел в свободном пространстве и монтируем стомегабайтный раздел в /boot/efi без форматирования. Ставим, перезагружаем, вводим пароль и с удовольствием видим меню выбора ОС с обеими системами.

Screenshot_2018-10-13_22-13-43.png Screenshot_2018-10-13_22-14-06.png Screenshot_2018-10-13_22-14-19.png Screenshot_2018-10-13_22-28-34.png

Manjaro зашифрован, Windows пока нет. Исправим! Загружаемся в Windows, устанавливаем VeraCrypt (все параметры установки по умолчанию, все программы качать только с офсайтов, благо они пока поддерживаются) и шифруем систему (Система -> Зашифровать системный раздел/диск). Никакого выбора у вас особо не будет, так что придётся оставить “Зашифровать системный раздел Windows” и “Одиночная загрузка”. Параметры шифрования выбираете по вкусу. Я бы предпочёл Serpent(AES) – когда-то у программы были проблемы с реализацией AES, так что лучше перестраховаться. Остальное на ваше усмотрение.

Screenshot_2018-10-13_22-37-10.png

Перезагружаетесь и обнаруживаете требование сразу ввести пароль для винды. Всё, теперь линукс недоступен.

фыавп.png

Теперь начинается неочевидная часть. После того, как вы окончательно зашифруете диск (может занять значительное время), скачайте, установите и запустите EasyUEFI. Программа условно-бесплатная, но нам бесплатных функций хватит. Выбираете раздел Manage EFI Boot Option и записывайте путь загрузчика VeraCrypt - File Path на скриншоте. Он нам ещё понадобится.

Screenshot_2018-10-13_23-00-46.png

Далее есть два варианта.

1.
Когда я ставил на собственный компьютер, там была видна опция Manjaro – в этом случае просто ставим её наверх зелёной стрелочкой и перезагружаемся в Linux.

Загрузчик Линукса не имеет ни малейшего представления о том, что Windows зашифрован, и при выборе в нём опции Windows он не будет пытаться запустить старый загрузчик - который, разумеется, ничего не найдёт на обработанном VeraCrypt разделе. Надо указать ему путь к новому загрузчику VeraCrypt. Вбиваем

Код:
sudo nano /boot/grub/grub.cfg

И меняем там строку

Код:
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
на
Код:
chainloader /EFI/VeraCrypt/DcsBoot.efi

Теперь там должен быть путь, который вы увидели в EasyUEFI.

Всё!

Перезагружаемся, вводим пароль от Линукса, и выбираем ОС. Выбрали Manjaro – вошли в Linux, выбрали Windows – вводим пароль от VeraCrypt и загружаемся в Windows.

Возможно, существует способ запускать выбор системы ДО ввода пароля, чтобы при запуске Windows не приходилось бы вводить пароль от Linux, но я его не нашёл.

2.
На VirtualBox, который я запустил для демонстрации, опции Manjaro в программе EasyUEFI почему-то нет. Заходим при загрузке в boot manager (в случае виртуалбокса – F2). Boot Maintenance Manager → Boot Options → Add Boot Option → Ваш Boot раздел →EFI → Manjaro (или Ваша ОС) → grub64.efi. Даёте название, нажимаете F10 для сохранения, дважды Ecs, Change Boot Order и ставите свою систему на первое место. Снова сохраняете и выходите из меню. Теперь вы загрузитесь в Linux.

Screenshot_2018-10-14_00-13-47.png Screenshot_2018-10-14_00-13-56.png Screenshot_2018-10-14_00-14-29.png Screenshot_2018-10-14_00-14-41.png Screenshot_2018-10-14_00-14-50.png Screenshot_2018-10-14_00-14-03.png Screenshot_2018-10-14_00-16-06.png

В очереди загрузчика первым будет стоять загрузчик Линукса. В VirtualBox изменения не сохраняются при перезагрузке, и изменения от efibootmgr тоже, но на реальном железе всё должно быть в порядке. После этого выполняете действия, описанные в первом варианте, то есть модифицируете GRUB.

В следующей статье постараюсь описать как реализовать самоуничтожение заголовков LUKS и VeraCrypt одновременно при вводе кодовой фразы вместо пароля.
 
Последнее редактирование модератором:
A

am29f010b

Как-то слишком просто двойная зашифрованная загрузка получилась.

Делал все на реальной машине в конфигурации bios mbr без lvm. Проблем доставляет только GNU/Linux. На Винду ставьте Veracrypr (это культовое крипто ПО), делайте обязательно "спасительный диск" (на флэшку тоже можно его портировать, главное найти прогу, которая умеет за пределами ФС работать с mbr, даже через dd флэшку не сделать, но в сети на форуме veracrypt выложен архив с ПО для этих целей от самого разработчика, непонятно почему он не включил это в официальную докумeнтацию "rescue disk...) Без спачательной флэшки/диска luks на Linux не раскачать. Если у вас несколько дистров Linux и Winda, не складывайте ядра и initrd в /boot, grub2 сырой для этих вещей. Вам придется руками переделывать файл grub.cfg (после генерации там хаос, если у вас конечно несколько дистров и все под шифр) В mbr всегда будет стоять загрузчик Veracrypt, при нажатии esc, он будет загружать далее: искать grub, grub-ов можно натолкать не менее 3х независимых при mbr, (mbr поддерживает 3 загрузочных активных раздела и один расширенный одного hdd), загружаю grub с расширенного и это благодаря загрузчику veracrypt, который оказывает на grub положительное влияние (поймете, когда друг друга в mbr загрузчики будете переписывать).
У меня уже были установленные ОС Winda и Linux я портировал их на шифрованные разделы. Уровень сложности - непросто.
Пару лет назад сам разработчик Сryptsetup писал, что зашифровать корень / при схеме с отдельным /boot (там должен быть только grub с модулями, без kernel и initrd) касаемо Дэбиана подобных дистров) -это уязвимое шифрование при условии физического доступа к ПК. А вот с VeraCrypt все отлично реализованно.

Планировал тоже выложить статью, однако у меня только вводная часть не менее вашей...

Спасибо за труды, такие статьи набирать начинают популярность и это здорово.
 
C

Clochard

Спасибо за труды, такие статьи набирать начинают популярность и это здорово.
Познакомился с одним человеком, он обещал показать более изящную реализацию. Тоже два пароля, но структура намного лучше. Если разберусь, напишу, но общая идея была в том, что следует зашифровать загрузчик и сделать загрузчик для загрузчиков. То есть почти grub, только следующего порядка. Пока что не знаю костыль или нет, но идея мне нравится.

А с MBR у меня не вышло вообще ничего и я забил.
 
Последнее редактирование модератором:
  • Нравится
Реакции: persivald

leo

One Level
23.01.2016
8
1
BIT
0
Скажите, как шифрование системы влияет на ее производительность?
На сколько % упала производительность зашифрованной Винды и Линукса?
Если в зашифрованой системе создать контейнер Веракрипт, то он будет работать? Сильно ли будет тормозить чтение инфы с открытого криптоконтейнера?
 
  • Нравится
Реакции: darklight

eme

Green Team
04.07.2018
10
3
BIT
0
А как можно тоже самое сделать в легаси режиме? А то в UEFI нет возможности.
 

eme

Green Team
04.07.2018
10
3
BIT
0
В легаси режиме все ок до момента когда нужно запустить EasyUEFI. Дальше прога просто не запускается, потому что система не UEFI. Может кто то занет чем можно заменить этот софт или немного адаптировать схему под легаси?
 
A

asrwer

Вопрос ко всем. Если не заморачиваться с шифровкой дуалбута, а просто во время установки систем - загрузку Виндовс зашифровать Вера-криптом, а Линукс зашифровать LUKS и в качестве диска куда нужно записать GRUB выбрать флешку, то такой вариант не будет более безопасней чем шифрование дуалбута?
 
V

Valkiria

При шифровании диска LVM средствами LUKS предлагается несколько алгоритмов шифрования.

0.png


Кто какой алгоритм использует и почему ?
 
Последнее редактирование модератором:

AlexP

One Level
04.02.2020
1
1
BIT
0
Зачем 2 ос на одном диске, поставил второй хард и на каждом по операционке. Повышается отказоустойчивость.
 
  • Нравится
Реакции: OldGuard

OldGuard

One Level
28.02.2020
6
5
BIT
1
Зачем 2 ос на одном диске, поставил второй хард и на каждом по операционке. Повышается отказоустойчивость.
Согласен с таким мнением, при необходимости, можно менять диски, удобнее и практичнее.
Тем более диски не так много стоят на данный момент
 

Кот баюн

New member
08.11.2020
1
1
BIT
0
У меня тоже реализован дуалбут двух шифрованных систем, но загрузчик выбираю при помощи . Получилось красиво и удобно, системы не зависят друг от друга.
 
  • Нравится
Реакции: g_sa

g_sa

New member
16.11.2022
1
0
BIT
13
У меня тоже реализован дуалбут двух шифрованных систем, но загрузчик выбираю при помощи . Получилось красиво и удобно, системы не зависят друг от друга.
Добрый день
А не подскажите как реализовали?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!