Полнодисковое шифрование Windows Linux установленных систем. Зашифрованная мультизагрузка
Обновленное свое же руководство по полнодисковому шифрованию в рунете V0.2.
Ковбойская стратегия:
[A] блочное системное шифрование Windows 7 установленной системы;
[B] блочное системное шифрование GNU/Linux (Debian) установленной системы (включая /boot);
[C] настройка GRUB2, защита загрузчика цифровой подписью/аутентификацией/хэшированием;
[D] зачистка — уничтожение нешифрованных данных;
[E] универсальное резервное копирование зашифрованных ОС;
[F] атака цель — загрузчик GRUB2;
[G] полезная документация.
╭───Схема #комнаты 40#
├──╼ Windows 7 установленная — шифрование полное системное, не скрытое;
├──╼ GNU/Linux установленная (Debian и производные дистрибутивы) — шифрование полное системное не скрытое(/, включая /boot; swap);
├──╼ независимые загрузчики: загрузчик VeraCrypt установлен в MBR, загрузчик GRUB2 установлен в расширенный раздел;
├──╼ установка/переустановка ОС не требуется;
└──╼ используемое криптографическое ПО: VeraCrypt; Cryptsetup; GnuPG; Seahorse; Hashdeep; GRUB2 — свободное/бесплатное.
Вышеописанная схема частично решает проблему «выносной boot на флэшку», позволяет наслаждаться зашифрованными OS Windows/Linux и обмениваться данными по «зашифрованному каналу» из одной ОС в другую.
Порядок загрузки ПК (один из вариантов):
- включение машины;
- загрузка загрузчика VeraCrypt (верный ввод пароля продолжит загрузку Windows 7);
- нажатие клавиши «Esc» загрузит загрузчик GRUB2;
- загрузчик GRUB2 (выбор дистрибутива/ GNU/Linux/CLI), затребует аутентификацию GRUB2-суперпользователя <логин/пароль>;
- после успешной аутентификации и выбора дистрибутива, потребуется ввод парольной фразы для разблокировки »/boot/initrd.img»;
- после ввода безошибочных паролей в GRUB2 «потребуется» ввод пароля (третьего по счету, пароль BIOS или пароль учётки пользователя GNU/Linux — not consider) для разблокирования и загрузки ОС GNU/Linux, или автоматическая подстановка секретного ключа (два пароля + ключ, либо пароль+ключ);
- внешнее вторжение в конфигурацию GRUB2 заморозит процесс загрузки GNU/Linux.
Хлопотно? Ок, идём автматизировать процессы.
При разметке жесткого диска (таблица MBR) ПК может иметь не более 4-х главных разделов, или 3-х главных и одного расширенного, а также не размеченную область. Расширенный раздел в отличие от главного может содержать подразделы (логические диски=расширенный раздел). Иными словами, «расширенный раздел» на HDD заменяет LVM для текущей задачи: полного системного шифрования. Если ваш диск размечен на 4 главные раздела, вам необходимо использовать lvm, либо трансформировать (с форматированием) раздел с главного на расширенный, либо грамотно воспользоваться всеми четырьмя разделами и оставить всё, как есть, получив желаемый результат. Даже если у вас на диске один раздел, Gparted поможет разбить HDD (на дополнительные разделы) без потери данных, но все же с небольшой расплатой за такие действия.
Схема разметки жесткого диска, относительно которой пойдет вербализация всей статьи, представлена в таблице ниже.
Таблица (№1) разделов 1Тб.
Что-то подобное должно быть и у вас.
sda1 — главный раздел №1 NTFS (зашифрованный);
sda2 — расширенный раздел маркер;
sda6 — логический диск (на него установлен загрузчик GRUB2);
sda8 — swap (зашифрованный файл подкачки/не всегда);
sda9 — тестовый логический диск;
sda5 — логический диск для любопытных;
sda7 — ОС GNU/Linux (перенесенная ОС на зашифрованный логический диск);
sda3 — главный раздел №2 с ОС Windows 7 (шифрованный);
sda4 — главный раздел №3 (в нем располагалось незашифрованная GNU/Linux, используется под бэкап/не всегда).
[А] Блочное системное шифрование Windows 7
Загрузка с официального сайта, либо с зеркала sourceforge установочной версии криптографического ПО VeraCrypt (на момент публикации статьи v1.24-Update3, портативная версия VeraCrypt не подойдет для системного шифрования). Чекните контрольную сумму загруженного софта
$ Certutil -hashfile "C:\VeraCrypt Setup 1.24.exe" SHA256
и сравните полученный результат с выложенной КС на сайте разработчика VeraCrypt.
Если установлено ПО HashTab, еще проще: ПКМ (VeraCrypt Setup 1.24.exe)-свойства-хэш суммы файлов.
Для проверки подписи программы в системе должны быть установлены ПО и публичный pgp ключ разработчика gnuPG; gpg4win.
Если отклониться от вышеописанных шагов (схемы блочного системного шифрования), то VeraCrypt выкатит предупреждение и не позволит шифровать раздел.
На следующем шаге, к целенаправленной защите данных, проведите «Тест» и выбирайте алгоритм шифрования. Если у вас несовременный CPU, то скорее всего самым быстрым окажется алгоритм шифрования Twofish. Если CPU мощный, разницу заметите: AES — шифрование по результатам теста будет в несколько раз скоростнее своих криптоконкурентов. AES — популярный алгоритм шифрования, аппаратная часть современных CPU специально оптимизирована на «секрет» так и на «взлом».
VeraCrypt поддерживает возможность криптовать диски каскадом AES(Twofish)/и другими комбинациями. На старо-ядерном CPU Intel десятилетней давности (без аппаратной поддержки AES, шифрование каскадом А/Т) снижение производительности в сущности незаметное. (у CPU AMD той же эпохи/~параметров —производительность немного снижена). ОС работает в динамике и потребление ресурсов на прозрачное шифрование — незаметное. В отличие, как например, заметное снижение производительности из-за установленного тестового нестабильного desktop environment Mate v1.20.1 (или v1.20.2 точно не помню) в GNU/Linux, или из-за работы подпрограммы телеметрии в Windows7↑. Обычно искушенные пользователи до шифрования проводят тесты на производительность железа. Например, в Aida64/Sysbench/systemd-analyze blameи сравнивают с результатами этих же тестов после криптования системы, тем самым, для себя опровергая миф, «системное шифрование — это вредно». Замедление машины и неудобство ощутимо при резервном копировании/восстановлении зашифрованных данных, потому что сама по себе операция «системного резервного копирования данных» измеряется не в мс, и добавляются те самые <расшифровать/зашифровать на лету>. В конечном итоге каждый пользователь, которому разрешено возиться с криптографией, устанавливает баланс алгоритма шифрования относительно удовлетворения поставленных задач, степени своей паранойи и удобством пользования.
Параметр PIM лучше оставить по умолчанию, чтобы при загрузке ОС каждый раз не вводить точные значения итераций. VeraCrypt применяет огромное кол-во итераций для создания действительно «медленного хэша». Атака на такую «криптоулитку» методом Brute force/радужных таблиц имеет смысл только при короткой «простой» парольной фразе и персонального charset-лист жертвы. Расплата за стойкость пароля — задержка при верном вводе пароля при загрузке ОС (монтирование томов VeraCrypt в GNU/Linux — существенно быстрее).
Свободный софт для реализации brute force атаки (извлечение парольной фразы из заголовка диска VeraCrypt/LUKS) Hashcat. John the Ripper не умеет «ломать Veracrypt», а при работе с LUKS не понимает криптографию Twofish.
По причине криптографической стойкости алгоритмов шифрования, неудержимые шифропанки разрабатывают софт с другим вектором атаки. Например, извлечения метаданных/ключей из ОЗУ (атака холодным ботинком/прямым доступом к памяти), существует специализированное свободное и несвободное ПО для этих целей.
По окончанию настройки/генерации «уникальных метаданных» шифруемого активного раздела, VeraCrypt предложит перезагрузить ПК и протестировать работоспособность своего загрузчика. После reboot-а/старта Windows, VeraCrypt подгрузится в режиме ожидания, останется лишь подтвердить процесс шифрования — Y.
На финальном шаге системного шифрования VeraCrypt предложит создать резервную копию заголовка активного зашифрованного раздела в виде «veracrypt rescue disk.iso» — сделать нужно обязательно — в этом софте такая операция является требованием (в LUKS, как требование — это к сожалению, опущено, но подчеркнуто в документации). Rescue disk пригодится всем, а кому-то и не один раз. Утеря (перезапись заголовка/MBR) резервной копии заголовка навсегда лишит доступа к дешифрованному разделу с OS Windows.
Создание спасательного диска в среде Windows — иначе. Разработчик VeraCrypt не включил решение этой задачки в официальную документацию по «rescue disk», но предложил решение другим путем: выложил дополнительное ПО по созданию «usb rescue disk» в свободный доступ, на своем форуме VeraCrypt. Архивариус этого ПО для Windows — «создание usb veracrypt rescue disk». После сохранения rescue disk.iso начнется процесс блочного системного шифрования активного раздела. Во время шифрования работа ОС не останавливается, перезагрузка ПК не требуется. По завершению операции криптования, активный раздел становится полностью зашифрованным, можно пользоваться. Если при запуске ПК не появляется загрузчик VeraCrypt, и не помогает операция восстановления заголовка, то проверьте флаг «boot», он должен быть установлен на раздел, где присутствует Windows (независимо от шифрования и других ОС, см. таблица №1).
На этом описание блочного системного шифрования с ОС Windows закончено.
[B] LUKS. Шифрование GNU/Linux (~Debian) установленной ОС. Алгоритм и Шаги
Для того чтобы зашифровать установленный Debian/производный дистрибутив, требуется сопоставить подготовленный раздел с виртуальным блочным устройством, перенести на сопоставленный диск GNU/Linux, и установить/настроить GRUB2. Если у вас не голый сервер, и вы дорожите своим временем, то пользоваться необходимо GUI, а большинство терминальных команд, описанных ниже, подразумевается водить в «режиме Чак-Норрис».
B1. Загрузка ПК с live usb GNU/Linux
«Провести криптотест на производительность железа»
lscpu && сryptsetup benchmark
Если вы счастливый владелец мощной тачки с аппаратной поддержкой AES, то цифры будут похожи на правую часть терминала, если вы счастливый, но с античным железом — на левую часть.
B2. Разметка диска. монтирование/форматирование фс логического диска HDD в Ext4 (Gparted)
Сопоставление шифрования логического диска (/dev/sda7 > /dev/mapper/sda7_crypt).
#Простое создание «LUKS-AES-XTS раздела»
cryptsetup -v -y luksFormat /dev/sda7
Опции:
* luksFormat -инициализация LUKS заголовка;
* -y -парольная фраза (не ключ/файл);
* -v -вербализация (вывод информации в терминале);
* /dev/sda7 -ваш логический диск из расширенного раздела (туда, куда планируется перенос/шифрование GNU/Linux).
По умолчанию алгоритм шифрования
#Проверка default-алгоритма шифрования
cryptsetup --help #самая последняя строка в выводе терминала.
При отсутствии аппаратной поддержки AES на CPU, лучшим выбором будет создание расширенного «LUKS-Twofish-XTS-раздела».
cryptsetup luksFormat /dev/sda7 -v -y -c twofish-xts-plain64 -s 512 -h sha512 -i 1500 --use-urandom
Опции:
* luksFormat -инициализация LUKS заголовка;
* /dev/sda7 ваш будущий зашифрованный логический диск;
* -v вербализация;
* -y парольная фраза;
* -c выбор алгоритма шифрования данных;
* -s размер ключа шифрования;
* -h алгоритм хеширования/криптофункция, используется ГСЧ (--use-urandom) для генерации уникального ключа шифрования/дешифрирования заголовка логического диска, вторичного ключа заголовка (XTS); уникального мастер ключа хранящегося в зашифрованном заголовке диска, вторичного XTS ключа, все эти метаданные и подпрограмма шифрования, которая с помощью мастер ключа и вторичного XTS-ключа шифруют/дешифруют любые данные на разделе (кроме заголовка раздела) хранятся в ~3 мБ на выбранном разделе жесткого диска.
* -i итерации в миллисекундах, вместо «количества» (задержка по времени при обработке парольной фразы, влияет на загрузку ОС и криптостойкость ключей). Для сохранения баланса криптостойкости при простом пароле типа «russian» требуется увеличивать значение -(i), при сложном пароле типа »?8dƱob/øfh» значение можно уменьшать.
* --use-urandom генератор случайных чисел, генерирует ключи и соль.
После сопоставления раздела sda7 > sda7_crypt (операция быстрая, так как создается зашифрованный заголовок с метаданными ~3 мБ и на этом всё), нужно отформатировать и смонтировать файловую систему sda7_crypt.
cryptsetup open /dev/sda7 sda7_crypt
#выполнение данной команды запрашивает ввод секретной парольной фразы.
опции:
* open -сопоставить раздел «с именем»;
* /dev/sda7 -логический диск;
* sda7_crypt -сопоставление имени, которое используется для монтирования зашифрованного раздела или его инициализации при загрузке ОС.
#форматирование блочного шифрованного устройства
mkfs.ext4 -v -L DebSHIFR /dev/mapper/sda7_crypt
опции:
* -v -вербализация;
* -L -метка диска (которая отображается в проводнике среди других дисков).
Далее, следует примонтировать виртуальное-шифрованное блочное устройство /dev/sda7_crypt в систему
mount /dev/mapper/sda7_crypt /mnt
Работа с файлами в папке /mnt приведет к автоматическому шифрованию/дешифрированию данных в sda7.
Удобнее сопоставлять и монтировать раздел в проводнике (nautilus/caja GUI), раздел уже будет в списке выбора дисков, останется ввести только парольную фразу для открытия/расшифрования диска. Сопоставляемое имя при этом будет выбрано автоматически и не «sda7_crypt», а что-то вроде /dev/mapper/Luks-xx-xx…
#Бэкап заголовка раздела
cryptsetup luksHeaderBackup --header-backup-file ~/Бэкап_DebSHIFR /dev/sda7
#Восстановление заголовка раздела
cryptsetup luksHeaderRestore --header-backup-file
опции:
* luksHeaderBackup --header-backup-file -команда бэкап;
* luksHeaderRestore --header-backup-file -команда восстановления;
* ~/Бэкап_DebSHIFR — файл резервной копии;
* /dev/sda7 -раздел, чью резервную копия шифрованного заголовка диска требуется сохранить.
На этом шаге <создание и редактирование зашифрованного раздела> закончено.
B3. Перенос ОС GNU/Linux (sda4) на зашифрованный раздел (sda7)
Создаем папку /mnt2 (Примечание — мы все еще работаем с live usb, в точку /mnt смонтирован sda7_crypt), и монтируем наш GNU/Linux в /mnt2, который необходимо зашифровать.
mkdir /mnt2
mount /dev/sda4 /mnt2
Осуществляем корректный перенос ОС с помощью ПО Rsync
rsync -avlxhHX --progress /mnt2/ /mnt
Опции Rsync описаны в п.E1.
Далее, необходимо провести дефрагментацию раздела логического диска
e4defrag -c /mnt/ #после проверки, e4defrag выдаст, что степень дефрагментации раздела~"0", это заблуждение, которое может вам стоить существенной потери производительности!
e4defrag /mnt/ #проводим дефрагментацию шифрованной GNU/Linux
Возьмите за правило: делать e4defrag на зашифрованной GNU/LInux время от времени если у Вас HDD.
Перенос и синхронизация [GNU/Linux > GNU/Linux-зашифрованная] на этом шаге закончены.
В4. Настройка GNU/Linux на зашифрованном разделе sda7
После успешного переноса ОС /dev/sda4 > /dev/sda7 необходимо войти в GNU/Linux на зашифрованном разделе, и осуществить дальнейшую настройку (без перезагрузки ПК) относительно зашифрованной системы. То есть находиться в live usb, но команды выполнять «относительно корня шифрованной ОС». Симулировать подобную ситуацию будет «chroot». Чтобы оперативно получать информацию с какой ОС вы в данный момент времени работаете (в шифрованной или нет, так как данные в sda4 и sda7 синхронизированы), рассинхронизируйте ОС-ы. Создайте в корневых каталогах (sda4/sda7_crypt) пустые файлы-маркеры, например, /mnt/шифрованнаяОС и /mnt2/дешифрованнаяОС. Быстрая проверка в какой ОС вы находитесь (в том числе и на будущее):
ls /
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt
ls /mnt
#и видим файл "/шифрованнаяОС"
history
#в выводе терминала должна появиться история команд su рабочей ОС.
nano /etc/crypttab
правим
#«target name» «source device» «key file» «options»
swap /dev/sda8 /dev/urandom swap, cipher=twofish-xts-plain64, size=512, hash=sha512
Опции
* swap -сопоставленное имя при шифровании /dev/mapper/swap.
* /dev/sda8 -используйте ваш логический раздел под swap.
* /dev/urandom -генератор случайных ключей шифрования для swap (с каждой новой загрузкой ОС — созданные новые ключи). Генератор /dev/urandom менее случайный, чем /dev/random, как-никак /dev/random используется при работе в опасных параноидальных обстоятельствах. При загрузке ОС /dev/random тормозит загрузку на несколько ± минут (см. systemd-analyze).
* swap, cipher=twofish-xts-plain64, size=512, hash=sha512: -раздел знает, что он swap и форматируется «соответственно»; алгоритм шифрования.
#Открываем и правим fstab
nano /etc/fstab
правим
# swap was on /dev/sda8 during installation
/dev/mapper/swap none swap sw 0 0
/dev/mapper/swap -имя , которое задали в crypttab.
Альтернативный зашифрованный swap
Если по каким-то причинам вы не хотите отдавать целый раздел под файл подкачки, то можно пойти альтернативным и лучшим путём: создание файла подкачки в файле на зашифрованном разделе с ОС.
fallocate -l 3G /swap #создание файла размером 3Гб (почти мгновенная операция)
chmod 600 /swap #настройка прав
mkswap /swap #из файла создаём файл подкачки
swapon /swap #включаем наш swap
free -m #проверяем, что файл подкачки активирован и работает
printf "/swap none swap sw 0 0" >> /etc/fstab #при необходимости после перезагрузки swap будет постоянный
Настройка раздела подкачки завершена.
#правим /etc/crypttab
nano /etc/crypttab
если сопоставляли раздел sda7>sda7_crypt как в п.B2.1
# «target name» «source device» «key file» «options»
sda7_crypt UUID=81048598–5bb9–4a53-af92-f3f9e709e2f2 none luks
если сопоставляли раздел sda7>sda7_crypt как в п.B2.2
# «target name» «source device» «key file» «options»
sda7_crypt UUID=81048598–5bb9–4a53-af92-f3f9e709e2f2 none cipher=twofish-xts-plain64, size=512, hash=sha512
если сопоставляли раздел sda7>sda7_crypt как в п.B2.1 or B2.2, но не хотите повторно вводить пароль для разблокировки и загрузки ОС, то вместо пароля можно подставить секретный ключ/случайный файл
# «target name» «source device» «key file» «options»
sda7_crypt UUID=81048598–5bb9–4a53-af92-f3f9e709e2f2 /etc/skey luks
Описание
* none -сообщает, что при загрузке ОС, для разблокировки корня требуется ввод секретной парольной фразы.
* UUID -идентификатор раздела. Чтобы узнать свой идентификатор набираете в терминале (напоминание, что все это время и далее, вы работаете в терминале в среде chroot, а не в другом терминале live usb).
fdisk -l #проверка всех разделов
blkid #должно быть что-то подобное
/dev/sda7: UUID=»81048598–5bb9–4a53-af92-f3f9e709e2f2» TYPE=«crypto_LUKS» PARTUUID=»0332d73c-07»
/dev/mapper/sda7_crypt: LABEL=«DebSHIFR» UUID=»382111a2-f993–403c-aa2e-292b5eac4780» TYPE=«ext4»
эту строчку видно при запросе blkid из терминала live usb при смонтированном sda7_crypt).
UUID берете именно от вашего sdaX (не sdaX_crypt!, UUID sdaX_crypt — автоматом уйдет при генерации конфига grub.cfg).
* cipher=twofish-xts-plain64, size=512, hash=sha512 -luks шифрование в расширенном режиме.
* /etc/skey -секретный файл-ключ, который подставляется автоматически для разблокировки загрузки ОС (вместо ввода 3-го пароля). Файл можно указать любой до 8 мБ, но считываться данные будут
#Создание "генерация" случайного файла <секретного ключа> размером 691б.
head -c 691 /dev/urandom > /etc/skey
#Добавление секретного ключа (691б) в 7-й слот заголовка luks
cryptsetup luksAddKey --key-slot 7 /dev/sda7 /etc/skey
#Проверка слотов "пароли/ключи luks-раздела"
cryptsetup luksDump /dev/sda7
Выглядеть будет примерно так:
(сделайте сами и сами увидите).
cryptsetup luksKillSlot /dev/sda7 7 #удаление ключа/пароля из 7 слота
/etc/fstab содержит описательную информацию о различных файловых системах.
#Правим /etc/fstab
nano /etc/fstab
# «file system» «mount poin» «type» «options» «dump» «pass»
# / was on /dev/sda7 during installation
/dev/mapper/sda7_crypt / ext4 errors=remount-ro 0 1
опция
* /dev/mapper/sda7_crypt -имя сопоставления sda7>sda7_crypt, которое указано в файле /etc/crypttab.
Настройка crypttab/fstab закончена.
#Если у вас ранее был активирован swap раздел, отключите его.
nano /etc/initramfs-tools/conf.d/resume
и закомментируйте (если существует) »#» строчку «resume». Файл должен быть полностью пустой.
B4.5.2. Редактирование конфига /etc/initramfs-tools/conf.d/cryptsetup
nano /etc/initramfs-tools/conf.d/cryptsetup
должно соответствовать
# /etc/initramfs-tools/conf.d/cryptsetup
CRYPTSETUP=yes
export CRYPTSETUP
B4.5.3. Редактирование конфига /etc/default/grub (именно этот конфиг отвечает за умение генерировать grub.cfg при работе с зашифрованным /boot)
nano /etc/default/grub
добавляем строку «GRUB_ENABLE_CRYPTODISK=y»
значение 'y', grub-mkconfig и grub-install будут проверять наличие зашифрованных дисков и генерировать дополнительные команды, необходимые для их доступа во время загрузки (insmod-ы
должно быть подобие
GRUB_DEFAULT=0
GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=«acpi_backlight=vendor»
GRUB_CMDLINE_LINUX=«quiet splash noautomount»
GRUB_ENABLE_CRYPTODISK=y
B4.5.4. Редактирование конфига /etc/cryptsetup-initramfs/conf-hook
nano /etc/cryptsetup-initramfs/conf-hook
проверьте, что строка закомментирована .
В будущем (и даже уже сейчас, этот параметр не будет иметь никакого значения, но иногда он мешает обновлять образ initrd.img).
B4.5.5. Редактирование конфига /etc/cryptsetup-initramfs/conf-hook
nano /etc/cryptsetup-initramfs/conf-hook
добавляем
KEYFILE_PATTERN=»/etc/skey»
UMASK=0077
Это упакует секретный ключ «skey» в initrd.img, ключ необходим для разблокировки корня при загрузке ОС (если нет желания вводить пароль повторно, авто подставляется ключ «skey»).
update-initramfs -u -k all
при обновлении initrd.img (как говорится «Возможно, но это не точно») появятся предупреждения, связанные с cryptsetup, или, например, уведомление о потере модулей Nvidia — это нормальное явление. После обновления файла, проверяйте, что он действительно обновился см. по времени (относительно chroot среды./boot/initrd.img). Внимание! перед [update-initramfs -u -k all] обязательно проверить, что cryptsetup open /dev/sda7 sda7_crypt — именно это имя должно быть, которое фигурирует в /etc/crypttab, иначе после reboot-a ошибка busybox)
На этом шаге настройка файлов конфигурации завершена.
[С] Установка и настройка GRUB2/Защита
mkfs.ext4 -v -L GRUB2 /dev/sda6
монтируем раздел GRUB2
mount /dev/sda6 /mnt
Если у вас установлена старая версия GRUB2, в каталоге /mnt/boot/grub/i-386-pc (возможна другая платформа, например, не «i386-pc») отсутствуют криптомодули (короче, в папке должны находиться модули, включая эти .mod: cryptodisk; luks; gcry_twofish; gcry_sha512; signature_test.mod), в таком случае GRUB2 необходимо встряхнуть.
apt-get update
apt-get install grub2
Важно! Во время обновления пакета GRUB2 из репозитория, на вопрос «о выборе» в какое место устанавливать загрузчик — необходимо отказаться от инсталляции (причина — попытка установки GRUB2 — в «MBR» или на live usb). В противном случае вы повредите заголовок/загрузчик VeraCrypt. После обновления пакетов GRUB2, и отмены установки, загрузчик нужно инсталлировать вручную на логический диск, а не в «MBR». Если в вашем репозитории устаревшая версия GRUB2, попробуйте апдейтить его с официального сайта — не проверял (работал со свежими загрузчиками GRUB 2.02 ~BetaX).
grub-install --force --root-directory=/mnt /dev/sda6
опции
* --force -установка загрузчика, минуя все предупреждения, которые практически всегда существуют и блокируют установку (обязательный флаг).
* --root-directory -установка каталога в корень sda6.
* /dev/sda6 -ваш sdaХ раздел (не пропустите <пробел> между /mnt /dev/sda6).
grub-mkconfig -o /mnt/boot/grub/grub.cfg
после завершения генерации/обновления файла grub.cfg, в терминале вывода должны быть строчки (а) с найденными ОС на диске («grub-mkconfig» возможно найдет и подхватит ОС с live usb, если у вас мультизагрузочная флэшка с Windows 10 и кучей живых дистрибутивов — это нормально). Если в терминале «пусто», файл «grub.cfg» не сгенерирован, то это тот самый случай, когда в системе GRUBые баги (и скорее всего загрузчик из тестовой ветки репозитория), переустановите GRUB2 из надежных источников.
Установка «простая конфигурация» и настройка GRUB2 завершена.
umount -a #размонтирование всех смонтированных разделов шифрованной GNU/Linux
Ctrl+d #выход из среды chroot
umount /mnt/dev
umount /mnt/proc
umount /mnt/sys
umount -a #размонтирование всех смонтированных разделов на live usb
reboot
После перезагрузки ПК должен загрузиться загрузчик VeraCrypt.
*Ввод пароля для активного раздела — начнется загрузка ОС Windows.
*Нажатие клавиши «Esc» передаст управление GRUB2, при выборе зашифрованной GNU/Linux — потребуется пароль (sda7_crypt) для разблокировки /boot/initrd.img (если grub2 пишет uuid «не найден» — это проблема загрузчика grub2, его следует переустановить, например, с тестовой ветки/стабильный и пд).
*В зависимости от того, как вы настроили систему (см. п.B4.4/4.5) после верного ввода пароля для разблокировки образа /boot/initrd.img, потребуется пароль для загрузки ядра/корня ОС, либо автоматически подставится секретный ключ «skey», избавляя от повторного ввода парольной фразы.
(скрин «автоматическая подстановка секретного ключа»).
*Далее понесется знакомый процесс загрузки GNU/Linux с аутентификацией учетки пользователя.
*После авторизации пользователя и входа в ОС, нужно повторно обновить /boot/initrd.img (см В4.6).
update-initramfs -u -k all
А в случае лишних строк в меню GRUB2 (из подхвата ОС-м с live usb) избавиться от них
mount /dev/sda6 /mnt
grub-mkconfig -o /mnt/boot/grub/grub.cfg
Краткий итог по системному шифрованию GNU/Linux:
- GNU/Linuxinux зашифрован полностью, включая /boot/kernel and initrd;
- секретный ключ упакован в initrd.img;
- текущая схема авторизации (ввод пароля на разблокировку initrd; пароль/ключ на загрузку ОС; пароль авторизации учетки Linux).
«Простая конфигурация GRUB2» системное шифрование блочного раздела закончено.
Для «уязвимого» GRUB2 разработчики реализовали алгоритм защиты загрузчика «подписью/аутентификацией».
- При защите загрузчика «своей цифровой подписью» внешняя модификация файлов, либо попытка загрузить в данном загрузчике дополнительные модули — приведет процесс загрузки к блокировке.
- При защите загрузчика аутентификацией для выбора загрузки какого-либо дистрибутива, либо ввод дополнительных команд в CLI, потребуется ввести логин и пароль суперпользователя-GRUB2.
ls / #обнаружить файл-маркер
создайте пароль суперпользователя для авторизации в GRUB2
grub-mkpasswd-pbkdf2 #введите/повторите пароль суперпользователя.
Получите хэш пароля. Что-то похоже на это
grub.pbkdf2.sha512.10000.DE10E42B01BB6FEEE46250FC5F9C3756894A8476A7F7661A9FFE9D6CC4D0A168898B98C34EBA210F46FC10985CE28277D0563F74E108FCE3ACBD52B26F8BA04D.27625A4D30E4F1044962D3DD1C2E493EF511C01366909767C3AF9A005E81F4BFC33372B9C041BE9BA904D7C6BB141DE48722ED17D2DF9C560170821F033BCFD8
монтируем раздел GRUB
mount /dev/sda6 /mnt
редактируем конфиг
nano -$ /mnt/boot/grub/grub.cfg
проверьте поиск по файлу, что в «grub.cfg» отсутствуют где-либо флаги (» --unrestricted» »--user»,
добавьте в самом конце (перед строкой ### END /etc/grub.d/41_custom ###)
«set superusers=«root»
password_pbkdf2 root хэш».
Должно быть примерно так
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###### BEGIN /etc/grub.d/41_custom ###
if [ -f ${config_directory}/custom.cfg ]; then
source ${config_directory}/custom.cfg
elif [ -z »${config_directory}» -a -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
set superusers=«root»
password_pbkdf2 root grub.pbkdf2.sha512.10000.DE10E42B01BB6FEEE46250FC5F9C3756894A8476A7F7661A9FFE9D6CC4D0A168898B98C34EBA210F46FC10985CE28277D0563F74E108FCE3ACBD52B26F8BA04D.27625A4D30E4F1044962D3DD1C2E493EF511C01366909767C3AF9A005E81F4BFC33372B9C041BE9BA904D7C6BB141DE48722ED17D2DF9C560170821F033BCFD8
### END /etc/grub.d/41_custom ###
#
Если вы часто пользуетесь командой «grub-mkconfig -o /mnt/boot/grub/grub.cfg» и не хотите вносить каждый раз изменения в grub.cfg, занесите вышеописанные строки (логин/пароль) в пользовательский скрипт GRUB-а в самый низ
nano /etc/grub.d/41_custom
cat << EOF
set superusers=«root»
password_pbkdf2 root grub.pbkdf2.sha512.10000.DE10E42B01BB6FEEE46250FC5F9C3756894A8476A7F7661A9FFE9D6CC4D0A168898B98C34EBA210F46FC10985CE28277D0563F74E108FCE3ACBD52B26F8BA04D.27625A4D30E4F1044962D3DD1C2E493EF511C01366909767C3AF9A005E81F4BFC33372B9C041BE9BA904D7C6BB141DE48722ED17D2DF9C560170821F033BCFD8
EOF
При генерации конфига «grub-mkconfig -o /mnt/boot/grub/grub.cfg», строки, отвечающие за аутентификацию, будут добавляться автоматически в grub.cfg.
На этом шаге настройка аутентификации GRUB2 завершена.
PGP-ключ нужно генерировать/запускать/добавлять только в среде su!
Сгенерировать персональный шифровальный ключ
gpg - -gen-key
Экспортировать свой ключ
gpg --export -o ~/perskey
Смонтируйте логический диск в ОС если он еще не смонтирован
mount /dev/sda6 /mnt #sda6 – раздел GRUB2
очистите раздел GRUB2
rm -rf /mnt/
Инсталлируйте GRUB2 в sda6, положив ваш персональный ключ в основной образ GRUB «core.img»
grub-install --force --modules="gcry_sha256 gcry_sha512 signature_test gcry_dsa gcry_rsa" -k ~/perskey --root-directory=/mnt /dev/sda6
опции
* --force -устан