До 2014 года ПО с открытым исходным кодом TrueCrypt было самым рекомендуемым (и действительно качественным) для целей шифрования данных и дисков, однако затем разработчики сообщили, что оно не является безопасным и свернули работу над программой. Позже новая команда разработчиков продолжила работу над проектом, но уже под новым названием — VeraCrypt (доступно для Windows, Mac, Linux).
- Установка VeraCrypt на компьютер или ноутбук
- Инструкция по использованию VeraCrypt
- Создание зашифрованного файлового контейнера
- Шифрование диска (раздела диска) или флешки
- Как зашифровать системный диск в VeraCrypt
- Дополнительная информация
- Процесс шифрования SSD или жесткого диска с помощью BitLocker
- [B] LUKS. Шифрование GNU/Linux (~Debian) установленной ОС. Алгоритм и Шаги
- [С] Установка и настройка GRUB2/Защита
- Защита загрузчика GRUB2 с помощью хэширования
Установка VeraCrypt на компьютер или ноутбук
Далее будет рассматриваться версия VeraCrypt для Windows 10, 8 и Windows 7 (хотя само использование будет почти одинаковым и для других ОС).
Следующий шаг установки (в случае если вы выбрали пункт Install) обычно не требует каких-либо действий от пользователя (по умолчанию установлены параметры — установить для всех пользователей, добавить ярлыки в Пуск и на рабочий стол, ассоциировать файлы с расширением .hc с VeraCrypt).
Сразу после установки рекомендую запустить программу, зайти в меню Settings — Language и выбрать там русский язык интерфейса (во всяком случае, у меня он не включился автоматически).
Инструкция по использованию VeraCrypt
Как уже было сказано, VeraCrypt может использоваться для задач создания зашифрованных файловых контейнеров (отдельный файл с расширением .hc, содержащий необходимые файлы в зашифрованном виде и при необходимости монтируемый в системе как отдельный диск), шифрования системных и обычных дисков.
Чаще всего используется первый вариант шифрования для хранения конфиденциальных данных, начнем с него.
Создание зашифрованного файлового контейнера
Порядок действий по созданию зашифрованного файлового контейнера будет следующим:
- Нажмите кнопку «Создать том».
- Выберите пункт «Создать зашифрованный файловый контейнер» и нажмите «Далее».
- Выберите «Обычный» или «Скрытый» том VeraCrypt. Скрытый том — специальная область внутри обычного тома VeraCrypt, при этом устанавливается два пароля, один на внешний том, второй — на внутренний. В случае, если вас вынудят сказать пароль на внешний том, данные во внутреннем томе будут недоступны и при этом извне нельзя будет определить, что существует также скрытый том. Далее рассматривается вариант создания простого тома.
- Укажите путь, где будет хранится файл контейнера VeraCrypt (на компьютере, внешнем накопителе, сетевом диске). Вы можете указать любое разрешение для файла или вообще не указывать его, но «правильное» расширение, которое ассоциируется с VeraCrypt — .hc
- Выберите алгоритм шифрования и хеширования. Основное здесь — алгоритм шифрования. В большинстве случаев, достаточно AES (причем это будет заметно быстрее других вариантов, если процессор поддерживает аппаратное шифрованием AES), но можно использовать и несколько алгоритмов одновременно (последовательное шифрование несколькими алгоритмами), описания которых можно найти в Википедии (на русском языке).
- Задайте размер создаваемого зашифрованного контейнера.
- Укажите пароль, следуя рекомендациям, которые представлены в окне задания паролей. При желании, вы можете задать вместо пароля любой файл (пункт «Ключ. Файлы», будет использован в качестве ключа, могут использоваться смарт-карты), однако при потере или повреждении этого файла, получить доступ к данным не получится. Пункт «Использовать PIM» позволяет задать «Персональный умножитель итераций», влияющий на надежность шифрования прямо и косвенно (при указании PIM, его потребуется вводить в дополнение к паролю тома, т.е. взлом перебором усложняется).
- В следующем окне задайте файловую систему тома и просто перемещайте указатель мыши по окну, пока не заполнится строка прогресса внизу окна (или не станет зеленой). В завершение нажмите «Разметить».
- По завершении операции вы увидите сообщение о том, что том VeraCrypt был успешно создан, в следующем окне достаточно нажать «Выход».
Следующий шаг — смонтировать созданный том для использования, для этого:
- В разделе «Том» укажите путь к созданному файловому контейнеру (нажав кнопку «Файл»), выберите из списка букву диска для тома и нажмите кнопку «Смонтировать».
- Укажите пароль (предоставьте ключевые файлы при необходимости).
- Дождитесь окончания монтирования тома, после чего он отобразится в VeraCrypt и в виде локального диска в проводнике.
При копировании файлов на новый диск они будут шифроваться «на лету», равно как и расшифровываться при доступе к ним. По окончании работы, выберите том (букву диска) в VeraCrypt и нажмите «Размонтировать».
Примечание: при желании, вместо «Смонтировать» вы можете нажать «Автомонтирование», для того чтобы в будущем зашифрованный том подключался автоматически.
Шифрование диска (раздела диска) или флешки
Шаги при шифровании диска, флешки или другого накопителя (не системного) будут теми же самыми, но на втором шаге потребуется выбрать пункт «Зашифровать несистемный раздел/диск», после выбора устройства — указать, отформатировать диск или зашифровать с уже имеющимися данными (займет больше времени).
Следующий отличающийся момент — на завершающем этапе шифрования в случае выбора «Отформатировать диск», потребуется указать, будут ли использоваться файлы более 4 Гб на создаваемом томе.
После того, как том будет зашифрован, вы получите инструкцию по дальнейшему использованию диска. Доступа по прежней букве к нему не будет, потребуется настроить автомонтирование (при этом для разделов диска и дисков достаточно просто нажать «Автомонтирование», программа сама их найдет) или же смонтировать таким же способом, как был описан для файловых контейнеров, но нажмите кнопку «Устройство» вместо «Файл».
Как зашифровать системный диск в VeraCrypt
При шифровании системного раздела или диска, пароль будет требоваться еще до загрузки операционной системы. Будьте очень внимательны, используя эту функцию — в теории можно получить систему, которую невозможно загрузить и единственным выходом окажется переустановка Windows.
Примечание: если при начале шифрования системного раздела вы увидите сообщение «Похоже, Windows не установлена на диске, с которого она загружается» (а на самом деле это не так), скорее всего дело в «по особому» установленной Windows 10 или 8 с шифрованным EFI разделом и зашифровать системный диск VeraCrypt не получится (в начале статьи уже рекомендовал BitLocker для этой цели), хотя для некоторых EFI-систем шифрование успешно работает.
Шифрование системного диска проходит тем же образом, что и простого диска или раздела, за исключением следующих моментов:
- При выборе шифрования системного раздела, на третьем этапе будет предложен выбор — шифровать весь диск (физический HDD или SSD) или только системный раздел на этом диске.
- Выбор одиночной загрузки (если установлена только одна ОС) или мультизагрузки (если их несколько).
- Перед шифрованием вам будет предложено создать диск восстановления на случай повреждения загрузчика VeraCrypt, а также при проблемах с загрузкой Windows после шифрования (можно будет загрузиться с диска восстановления и полностью расшифровать раздел, приведя его в исходное состояние).
- Будет предложено выбрать режим очистки. В большинстве случаев, если вы не храните очень страшных секретов, достаточно выбрать пункт «Нет», это значительно сэкономит вам время (часы времени).
- Перед шифрованием будет выполнен тест, позволяющий VeraCrypt «убедиться», что все будет работать правильно.
- Важно:
после нажатия кнопки «Тест» вы получите очень подробную информацию по тому, что будет происходить дальше. Рекомендую очень внимательно все прочитать. - После нажатия «Ок» и после перезагрузки вам потребуется ввести заданный пароль и, если все прошло успешно, после входа в Windows вы увидите сообщение о том, что Пре-тест шифрования пройден и все, что останется сделать — нажать кнопку «Шифровать» и дождаться завершения процесса шифрования.
Если в дальнейшем вам потребуется полностью расшифровать системный диск или раздел, в меню VeraCrypt выберите «Система» — «Перманентно расшифровать системный раздел/диск».
Дополнительная информация
- Если у вас на компьютере используется несколько операционных систем, то с помощью VeraCrypt вы можете создать скрытую операционную систему (Меню — Система — Создать скрытую ОС), схожую со скрытым томом, о котором писалось выше.
- Если тома или диски монтируются очень медленно, вы можете попробовать ускорить процесс, задав длинный пароль (20 и более символов) и малый PIM (в пределах 5-20).
- Если при шифровании системного раздела что-то происходит необычно (например, при нескольких установленных системах, программа предлагает только одиночную загрузку или вы видите сообщение о том, что Windows на на том диске, где загрузчик) — рекомендую не экспериментировать (при отсутствии готовности потерять все содержимое диска без возможности восстановления).
и зашифровать его — таким образом вы получите защищенный файловый контейнер с возможностью его резервного копирования в облаке и на различных накопителях, переноса на другие компьютеры. Также может быть интересным: Шифрование BitLocker в Windows 10 Домашняя.
Процесс шифрования SSD или жесткого диска с помощью BitLocker
Процедура шифрования дисков с помощью BitLocker — не слишком сложная задача, потребуется выполнить следующие простые шаги:
- В проводнике выберите диск, который требуется зашифровать, нажмите по нему правой кнопкой мыши и выберите пункт «Включить BitLocker».
- Если вы увидите сообщение о том, что «Это устройство не может использовать доверенный платформенный модуль TPM», значит вы хотите зашифровать системный диск, а модуль TPM на компьютере отсутствует или отключен. Проблема решаема, об этом здесь: Как включить BitLocker без TPM
. - После короткой проверки дисков вы увидите предложение настроить тип разблокировки: вставить USB-устройство флэш-памяти (обычную флешку) или ввести пароль. Я в своей практике использую пункт «Введите пароль». Предложение с вводом пароля может не появиться, в этом случае обратите внимание на инструкцию Как включить пароль BitLocker на ноутбуках и компьютерах с TPM
. - Если вы также будете использовать разблокировку с помощью пароля, введите и подтвердите ваш пароль. Настоятельно рекомендую записать его, если есть вероятность забыть заданный пароль (в противном случае вы можете полностью потерять доступ к данным). Нажмите «Далее».
- Вам будет предложено сохранить ключ для восстановления доступа к диску, зашифрованному BitLocker. Вы можете сохранить ключ в различные расположения на своё усмотрение. Вне зависимости от того, какой вариант вы выберите, настоятельно рекомендую серьезно отнестись к этому шагу (и не сохранять ключ на тот же диск, который шифруется): сбои питания, ошибки файловой системы могут приводить к проблемам с доступом к зашифрованному диску просто по паролю и ключ восстановления действительно помогает получить доступ к данным. Я лично на своем основном компьютере столкнулся с таким дважды за последние 5 лет и был очень благодарен сам себе за то, что у меня есть ключ восстановления — оба раза он помог.
- Следующий этап — выбор, какую часть диска шифровать. Для большинства пользователей подойдет вариант «Шифровать только занятое место на диске» (в этом случае будут зашифрованы все файлы, которые уже есть на диске и автоматически будет шифроваться всё, что в дальнейшем на него записывается). Второй вариант шифрует и свободное пространство. Что это дает? Например, если у вас на этом диске ранее были очень секретные данные, а потом они были удалены, есть вероятность их восстановления с помощью соответствующих программ для восстановления данных. После шифрования свободного пространства восстановить удаленные данные не получится (во всяком случае без разблокировки доступа к диску).
- В последних версиях Windows 10 вам также предложат выбрать режим шифрования. Если вы планируете отключать диск и подключать его в других версиях Windows 10 и 8.1, выберите режим совместимости. Иначе можно оставить «Новый режим шифрования».
- В следующем окне оставьте включенным пункт «Запустить проверку BitLocker» и нажмите «Продолжить».
- Вы увидите уведомление о том, что шифрование диска будет выполнено после перезагрузки компьютера. Выполните перезагрузку.
- В случае, если вы шифровали системный диск, то перед запуском Windows 10 вам нужно будет ввести заданный пароль BitLocker для разблокировки диска (или подключить USB-накопитель, если ключ создавался на нем).
- После запуска Windows 10 будет выполнено шифрование накопителя в соответствии с заданными настройками (в области уведомлений появится соответствующий значок, а при его открытии — окно с прогрессом шифрования). Вы можете пользоваться компьютером пока идет шифрование пространства на диске.
- Если шифровался системный диск, то он сразу будет вам доступен (поскольку пароль был введен на предыдущем шаге). Если шифровался не системный раздел диска или внешний накопитель, при открытии этого диска в проводнике вас попросят ввести пароль для доступа к данным.
- По завершении процесса, продолжительность которого зависит от занятого места на диске и скорости его работы (на HDD медленнее, на SSD быстрее), вы получите зашифрованный диск.
Все данные, которые вы будете на него записывать, шифруются «на лету» и так же расшифровываются. Для не системных дисков вы в любой момент можете использовать контекстное меню для его блокировки (чтобы другой человек за этим же компьютером не мог открыть его содержимого).
Доступ к зашифрованному системному диску есть всегда, пока запущена система (иначе бы она не смогла работать).
Если остались какие-либо вопросы на тему шифрования с помощью BitLocker — спрашивайте в комментариях, я постараюсь ответить.
Порядок загрузки ПК (один из вариантов):
- включение машины;
- загрузка загрузчика 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 (на дополнительные разделы)
без потери данных, но все же с небольшой расплатой за такие действия.
Схема разметки жесткого диска, относительно которой пойдет вербализация всей статьи, представлена в таблице ниже.
Загрузка с официального сайта, либо с зеркала 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.
А2. Установка/запуск ПО VeraCrypt с правами администратора
А3. Выбор параметров системного шифрования активного раздела
Если отклониться от вышеописанных шагов ( схемы блочного системного шифрования), то VeraCrypt выкатит предупреждение и не позволит шифровать раздел.
А4. Создание спасательного usb/диска VeraCrypt
По умолчанию VeraCrypt предлагает прожечь «метаданные ~2-3мБ» на компакт-диск, но не у всех людей есть диски или приводы DWD-ROM-ы, а создание загрузочной флэшки «VeraCrypt Rescue disk» для кого-то окажется техническим сюрпризом: Rufus/GUIdd-ROSA ImageWriter и другой подобный софт — не смогут справиться с поставленной задачей, потому что помимо копирования смещенных метаданных на загрузочную флэшку, нужно из образа сделать copy/paste за пределами файловой системы usb-накопителя, короче, правильно скопировать MBR/дорожу на брелок. Из-под ОС GNU/Linux создать загрузочную флэшку, можно воспользовавшись утилитой «dd», глядя на эту табличку.
Создание спасательного диска в среде Windows — иначе. Разработчик VeraCrypt не включил решение этой задачки в официальную документацию по «rescue disk», но предложил решение другим путем: выложил дополнительное ПО по созданию «usb rescue disk» в свободный доступ, на своем форуме VeraCrypt. Update: 2020г разработчик сжалился над «горемыками» и включил решение по usb rescue disk официально в своей документации.
После сохранения rescue disk.iso начнется процесс блочного системного шифрования активного раздела. Во время шифрования работа ОС не останавливается, перезагрузка ПК не требуется. По завершению операции криптования, активный раздел становится полностью зашифрованным, можно пользоваться. Если при запуске ПК не появляется загрузчик VeraCrypt, и не помогает операция восстановления заголовка, то проверьте флаг «boot», он должен быть установлен на раздел, где присутствует Windows.
После шифрования системного диска и логических дисков ntfs (одинаковый пароль) добавьте все шифрованные диски в «системное избранное». Далее «настройки» > «системные избранные тома» поставить галочку «монтировать системные избранные тома при старте Windows», при загрузке ОС — все ntfs-диски будут монтироваться автоматом.
[B] LUKS. Шифрование GNU/Linux (~Debian) установленной ОС. Алгоритм и Шаги
Для того чтобы зашифровать установленный Debian/производный дистрибутив, требуется сопоставить подготовленный раздел с виртуальным блочным устройством, перенести на сопоставленный диск GNU/Linux, и установить/настроить GRUB2. Если у вас не голый сервер, и вы дорожите своим временем, то пользоваться необходимо GUI, а большинство терминальных команд, описанных ниже, подразумевается водить в «режиме Чак-Норрис».
B1. Загрузка ПК с live usb GNU/Linux
«Провести криптотест на производительность железа»
lscpu && сryptsetup benchmark
Если вы счастливый владелец мощной тачки с аппаратной поддержкой AES-NI, то цифры будут похожи на правую часть терминала, если вы счастливый, но с античным железом — на левую часть.
Провести подобные тесты до и после шифрования ОС. Сравнить данные.
B2. Разметка диска. монтирование/форматирование фс логического диска HDD в Ext4 (Gparted)
B2.1. Создание зашифрованного заголовка раздела sda7
Описывать имена разделов, здесь и далее, буду согласно относительно своей таблицы разделов, выложенной выше. Согласно вашей разметке диска, вы должны подставлять свои имена разделов.
Сопоставление шифрования логического диска (/dev/sda7 > /dev/mapper/sda7_crypt).
#Простое создание «LUKS-AES-XTS раздела»
cryptsetup -v -y luksFormat /dev/sda7
* luksFormat -инициализация LUKS заголовка;
* -y -парольная фраза (не ключ/файл);
* -v -вербализация (вывод информации в терминале);
* /dev/sda7 -ваш логический диск из расширенного раздела (туда, куда планируется перенос/шифрование GNU/Linux).
По умолчанию алгоритм шифрования <L UKS1: aes-xts-plain64, Key: 256 bits, LUKS header hashing: sha256, RNG: /dev/urandom
> (зависит от версии cryptsetup).
#Проверка default-алгоритма шифрования
cryptsetup --help #самая последняя строка в выводе терминала.
При отсутствии аппаратной поддержки AES на CPU, лучшим выбором будет создание расширенного «LUKS-Twofish-XTS-раздела».
B2.2. Расширенное создание «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 Время итерации PBKDF для LUKS (в мс) (задержка по времени при обработке парольной фразы, влияет на загрузку ОС и криптостойкость ключей).
Для сохранения баланса криптостойкости при простом пароле типа «russian» требуется увеличивать значение -(i), при сложном пароле типа «?8dƱob/øfh» значение можно уменьшать.
* —use-urandom генератор случайных чисел, генерирует ключи и соль.
После сопоставления раздела sda7 > sda7_crypt (операция быстрая, так как создается зашифрованный заголовок с метаданными ~3 мБ и на этом всё), нужно отформатировать и смонтировать файловую систему sda7_crypt.
cryptsetup open /dev/sda7 sda7_crypt
#выполнение данной команды запрашивает ввод секретной парольной фразы.
опции:
* open -сопоставить раздел «с именем»;
* /dev/sda7 -логический диск;
* sda7_crypt -сопоставление имени, которое используется для монтирования зашифрованного раздела или его инициализации при загрузке ОС.
B2.4. Форматирование файловой системы sda7_crypt в ext4. Монтирование диска в ОС
(Примечание: в Gparted работать с шифрованным разделом уже не получится)
#форматирование блочного шифрованного устройства
mkfs.ext4 -v -L DebSHIFR /dev/mapper/sda7_crypt
опции:
* -v -вербализация;
* -L -метка диска (которая отображается в проводнике среди других дисков).
Далее, следует примонтировать виртуальное-шифрованное блочное устройство /dev/sda7_crypt в систему
mount /dev/mapper/sda7_crypt /mnt
Работа с файлами в папке /mnt приведет к автоматическому шифрованию/дешифрированию данных на лету в sda7.
B2.5. Резервное копирование заголовка диска (метаданные ~3мБ)
Одна из самых важных операций, которую необходимо сделать, не откладывая — резервная копия заголовка «sda7_crypt». Если перезаписать/повредить заголовок (например, установкой GRUB2 в раздел sda7 и тд.), зашифрованные данные будут потеряны окончательно без какой-либо возможности их восстановить, потому что невозможно будет повторно сгенерировать одинаковые ключи, ключи создаются уникальные.
#Бэкап заголовка раздела
cryptsetup luksHeaderBackup --header-backup-file ~/Бэкап_DebSHIFR /dev/sda7
#Восстановление заголовка раздела
cryptsetup luksHeaderRestore --header-backup-file <file> <device>
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
В4. Настройка GNU/Linux на зашифрованном разделе sda7
ls /<Tab-Tab>
B4.1. « Симуляция входа в зашифрованную ОС»
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt
B4.2. Проверка, что работа осуществляется относительно зашифрованной системы
ls /mnt<Tab-Tab>
#и видим файл "/шифрованнаяОС"
history
#в выводе терминала должна появиться история команд su рабочей ОС.
B4.3. Создание/настройка зашифрованного swap
Так как файл подкачки при каждом старте ОС форматируется, то не имеет смысла создавать и сопоставлять swap с логическим диском сейчас, и набивать команды, как в п. B2.2. Для Swap-а при каждом старте будут автоматически генерироваться свои временные шифровальные ключи. Жизненный цикл ключей swap-a: размонтирование/отключение swap-раздела (+очистка ОЗУ)
; или перезапуск ОС. Настройка swap, открываем файл, отвечающий за конфигурацию блочных шифрованных устройств (аналог fstab-файла, но отвечающий за крипто).
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Гб (почти мгновенная операция). На некоторых VPS может быть последующая ошибка, в таком случае
#dd if=/dev/zero of=/swap bs=1MiB count=3000
chmod 600 /swap #настройка прав
mkswap /swap #из файла создаём файл подкачки
swapon /swap #включаем наш swap
free -m #проверяем, что файл подкачки активирован и работает
printf "/swap none swap sw 0 0" >> /etc/fstab #при необходимости после перезагрузки swap будет постоянный
Настройка раздела подкачки завершена.
B4.4. Настройка зашифрованной GNU/Linux (правка файлов crypttab/fstab)
Файл /etc/crypttab, как написал выше, описывает зашифрованные блочные устройства, которые настраиваются во время загрузки системы.
#правим /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мБ, но считываться данные будут <1мБ.
#Создание "генерация" случайного файла <секретного ключа> размером 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
Выглядеть будет примерно так:
(Сделайте сами и сами увидите. Если шифруете в 2020г., то вывод будет в LUKS2, если ранее, вывод будет в LUKS1. Примечание автора — в LUKS1 информативнее и красивее вывод в CLI).
# Check "неизвестного раздела"
file -s /dev/sda7
/dev/sda7: LUKS encrypted file, ver 1 [twofish, xts-plain64, sha512] UUID: ХХХХ-- #в случае если LUKS
/dev/sda7: data #в случае если VeraCrypt
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 закончена.
B4.5. Редактирование файлов конфигурации. Ключевой момент
B4.5.1. Редактирование конфига /etc/initramfs-tools/conf.d/resume
#Если у вас ранее был активирован 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-ы <cryptomount/set root>).
B4.5.4. Редактирование конфига /etc/cryptsetup-initramfs/conf-hook
nano /etc/cryptsetup-initramfs/conf-hook
проверьте, что строка <CRYPTSETUP=y> закомментирована <#>
В будущем (и даже уже сейчас, этот параметр не будет иметь никакого значения, но иногда он мешает обновлять образ initrd.img).
Это упакует секретный ключ «skey» в initrd.img, ключ необходим для разблокировки корня при загрузке ОС (если нет желания при загрузке ОС дважды вводить свой пароль автоподставляется секретный ключ «skey» (пароль + ключ) см. п.B4.4).
Чтобы упаковать секретный ключ в initrd.img и применить исправления cryptsetup, обновляем образ
update-initramfs -u -k all
[С] Установка и настройка GRUB2/Защита
C1. При необходимости отформатируйте выделенный раздел для загрузчика (разделу достаточно не менее 20мБ)
mkfs.ext4 -v -L GRUB2 /dev/sda6
C2. Монтирование /dev/sda6 в /mnt
Так мы работаем в chroot, то в корне не будет каталога /mnt2, а папка /mnt — будет пустой.
монтируем раздел 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».
*Ввод пароля для активного раздела — начнется загрузка ОС 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/Linux зашифрован полностью, включая /boot/kernel and initrd;
- секретный ключ упакован в initrd.img;
- текущая схема авторизации (ввод пароля на разблокировку initrd; пароль/ключ на загрузку ОС; пароль авторизации учетки Linux).
- С6. Расширенная настройка GRUB2. Защита загрузчика цифровой подписью + защита аутентификацией
- При защите загрузчика «своей цифровой подписью» внешняя модификация файлов, либо попытка загрузить в данном загрузчике дополнительные модули – приведет процесс загрузки к блокировке.
- При защите загрузчика аутентификацией для выбора загрузки какого-либо дистрибутива, либо ввод дополнительных команд в CLI, потребуется ввести логин и пароль суперпользователя-GRUB2.
С6.1. Защита загрузчика аутентификацией
Проверьте, что вы работаете в терминале в зашифрованной ОС
ls /<Tab-Tab> #обнаружить файл-маркер
создайте пароль суперпользователя для авторизации в GRUB2
grub-mkpasswd-pbkdf2 #введите/повторите пароль суперпользователя.
nano /etc/grub.d/41_custom
При генерации конфига «grub-mkconfig -o /mnt/boot/grub/grub.cfg», строки, отвечающие за аутентификацию, будут добавляться автоматически в grub.cfg.
На этом шаге настройка аутентификации GRUB2 завершена.
С6.2. Защита загрузчика цифровой подписью
Предполагается, что у вас уже есть ваш персональный pgp-ключ шифрования (либо создайте такой ключ).
В системе должно быть установлено криптографическое ПО: gnuPG; kleopatra/GPA; Seahorse. Крипто-ПО существенно облегчит вам жизнь во всех подобных делах. Seahorse — стабильная версия пакета 3.14.0 (версии выше, например, V3.20 – неполноценная и имеет существенные баги).
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 -установка загрузчика, минуя все предупреждения, которые всегда существуют (обязательный флаг).
* —modules=«gcry_sha256 gcry_sha512 signature_test gcry_dsa gcry_rsa» -инструктирует GRUB2 на предварительную загрузку необходимых модулей при запуске ПК.
* -k ~/perskey -путь до «PGP-ключа» (после упаковывания ключа в образ, его можно удалить).
* —root-directory -установка каталога boot в корень sda6
/dev/sda6 -ваш sdaХ раздел.
grub-mkconfig -o /mnt/boot/grub/grub.cfg
Добавляем в конец файла «grub.cfg» строку «trust /boot/grub/perskey» (принудительно использовать pgp-ключ.)
Так как мы инсталлировали GRUB2 с набором модулей, в том числе и модулем подписи «signature_test.mod», то это избавляет от добавления в конфиг команд типо «set check_signatures=enforce».
Выглядеть должно примерно так (концевые строки в файле grub.cfg)
### 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
trust /boot/grub/perskey
set superusers=«root»
password_pbkdf2 root grub.pbkdf2.sha512.10000. DE10E42B01BB6FEEE46250FC5F9C3756894A8476A7F7661A9FFE9D6CC4D0A168898B98C34EBA210F46FC10985CE28277D0563F74E108FCE3ACBD52B26F8BA04D.27625A4D30E4F1044962D3DD1C2E493EF511C01366909767C3AF9A005E81F4BFC33372B9C041BE9BA904D7C6BB141DE48722ED17D2DF9C560170821F033BCFD8
### END /etc/grub.d/41_custom ###
#
Путь к «/boot/grub/perskey» не нужно указывать на конкретный раздел диска, например hd0,6, для себя загрузчика «корень» является дефолтным путем раздела, на который установлен GRUB2 (см. set rot=.).
Подписываем GRUB2 (все файлы во всех директориях /GRUB)
своим ключом «perskey».
Простое решение, как подписать (для проводника nautilus/caja):
устанавливаем из репозитория расширение «seahorse» для проводника. Ключ у вас должен быть добавлен в среду su.
Открываете проводник от sudo «/mnt/boot» – ПКМ – подписать. На скрине это выглядит это так
Чтобы удалить все подписи загрузчика (если что-то пошло не так)
rm -f $(find /mnt/boot/grub -type f -name '*.sig')
Что бы не подписывать загрузчик после обновления системы, замораживаем все пакеты обновления, имеющие отношение к GRUB2.
apt-mark hold grub-common grub-pc grub-pc-bin grub2 grub2-common
На этом шаге <защита загрузчика цифровой подписью> расширенная настройка GRUB2 завершена.
C6.3. Proof-test загрузчика GRUB2, защищенного цифровой подписью и аутентификацией
Скрин, успешная аутентификация GRUB2-суперпользователя.
Если подделать какой-либо из файлов GRUB2/внести изменения в grub.cfg, или удалить файл/подпись, подгрузить вредоносный модуль.mod, то появится соответствующее предупреждение. Загрузка GRUB2 приостановится.
Скрин, попытка вмешаться в GRUB2 «из вне».
При «нормальной» загрузке «без вторжения», системный статус кода выхода «0». Поэтому неизвестно работает ли защита или нет (то есть «с защитой загрузчика подписью или без неё» при нормальной загрузке статус один и тот же «0» — это плохо).
Как проверить защиту цифровой подписью?
Неудобный способ проверки: подделать/удалить используемый GRUB2 модуль, например, удалить подпись luks.mod.sig и получить ошибку.
Правильный способ: зайти в CLI загрузчика и набрать команду
trust_list
В ответ должны получить отпечаток «perskey», если статус «0», значит защита подписью не работает, перепроверяйте п. C6.2.
С7 Альтернативный метод защиты загрузчика GRUB2 с помощью хэширования
Защита загрузчика GRUB2 с помощью хэширования
Преимущества перед классикой:
- Более высокий уровень надежности/оповещения (хэширование/проверка проходит только с зашифрованного локального ресурса. Контролируется весь выделенный раздел под GRUB2 на любые изменения, а все остальное зашифровано, в классической же схеме с защитой загрузчика ЦП/Аутентификацией контролируются лишь файлы, но не свободное пространство, в которое «что-то зловещее» можно дописать и контроль этот осуществляется с незашифрованного локального ресурса).
- Зашифрованное логирование (в схему добавляется удобочитаемый, персональный, шифрованный лог).
- Скорость (защита/проверка целого раздела выделенного под GRUB2 происходит практически мгновенно).
- Автоматизация всех криптографических процессов.
Недостатки перед классикой.
- Подделка подписи (теоретически, возможно нахождение заданной коллизии хэш функции).
- The Worst Evil Script (вектор атаки/условие: подмена загрузчика и загрузка не с GRUB контролируемого раздела, а с usb-брелка/другой микросхемы, система/хозяин не будут оповещены о вторжении в цитадель, а вредоносный модуль передаст перехваченные pass/заголовок_LUKS по сети недоброжелателю).
- Повышенный уровень сложности (по сравнению с классикой требуется чуть больше навыков владения в ОС GNU/Linux).
И общая проблема — аппаратные кейлоггеры, которые открыто продаются не только с Поднебесной.