Полнодисковое шифрование, шифрование разделов, шифрование отдельных папок и файлов
Наверное, каждый сталкивался с зашифрованными файлами, для просмотра которых нужно ввести пароль. Это могли быть архивы или офисные файлы. Очень надёжно шифровать папки и файлы можно с помощью, например, VeraCrypt.
Конечно, всё это доступно и в Linux. Вы можете создавать зашифрованные архивы, установить VeraCrypt или другую программу для шифрования файлов и папок.
Кроме такого подхода к шифрованию, установщики дистрибутивов Linux предлагают полнодисковое шифрование (или полное шифрование диска). Суть заключается в том, что все данные на диске зашифрованы. При запуске компьютера загрузчик предлагает ввести пароль для расшифровки диска. Если пароль правильный, то диск расшифровывается и компьютер продолжает загрузку и работу. При таком подходе не нужно думать о шифровании отдельных файлов — зашифровано всё, поэтому нет опасности, что что-то может быть скопировано с выключенного компьютера.
Обратной стороной такого подхода является то, что шифрование немного замедляет работу системы, поскольку при чтении и записи данных на диск требуется их обработка (шифровка/расшифровка).
Другая опасность — при сбое диска (файловой системы) есть вероятность потерять данные, либо потребуется загрузка со сторонней ОС для выполнения операций по восстановлению дисков.
Шифрование разделов — это промежуточный вариант. Например, зачем шифровать корневую файловую систему и бинарные файлы, которые одинаковые у всех пользователей? При этом многие пользователи были бы не против зашифровать свою папку в директории /home. В результате получается хороший компромисс: с одной стороны, действительно важные данные зашифрованы, но при этом работа системы не замедляется, так как её файлы в большей части не зашифрованы.
Как шифруются диски и разделы в Linux
Конечно же шифрование дисков и разделов в Linux можно использовать без понимания технических деталей. Например, вы видите на скриншоте опцию «Guided — use entire disk and set up encrypted LVM».
Если её выбрать, то многое в настройке шифрования диска (или раздела), на который устанавливается ОС, будет сделано автоматически, отличие от стандартной настройки сводится к тому, что вам нужно придумать и запомнить пароль для шифрования диска.
Но если возникнут проблемы, например, ошибка в файловой системе из-за сбоя диска, то вы не сможете просто запустить fsck и исправить ошибки диска. Опять же, если вы захотите что-то другое кроме предлагаемой по умолчанию конфигурации разметки, то вам непросто будет это сделать без понимания сути LVM.
Поэтому пару слов о программах для полнодискового шифрования.
Для шифрования используются Cryptsetup и LUKS. Например, в статье «LIVE система Kali Linux на флэшке: полное руководство» показано, как создать и зашифровать постоянное хранилище. В той инструкции для создания раздела используется утилита parted, то есть получается обычный раздел диска. Шифрование раздела выполнялось утилитой cryptsetup. В той же статье показано как добавить пароль самоуничтожения данных, а также как сделать резервную копию заголовков. Поскольку «уничтожение данных» не означает повреждение самих данных, это означает только удаление заголовков, в результате чего данные невозможно расшифровать. Но если вы где-то сделали резервную копию заголовков, то вы можете их вернуть на диск и продолжить пользоваться системой как ни в чём не бывало.
Установщик Kali Linux (и других дистрибутивов на основе Debian) предлагает LVM для создания и управления томами, причём если вы хотите выбрать шифрование дисков или разделов, то они будут созданы именно с помощью LVM. Сама по себе технология LVM (Logical Volume Manager, то есть менеджер логических разделов) в первую очередь предоставляет мощные и гибкие инструменты для организации дискового пространства, например, вы можете из нескольких дисков создать один раздел или менять размеры разделов без перезагрузки системы. Установщик Kali Linux использует LVM для разметки диска и уже знакомые нам Cryptsetup и LUKS для шифрования. Всё это нужно знать хотя бы для того, что при возникновении сбоя диска, в зависимости от того, на каком этапе произошёл сбой, перед использованием fsck может понадобиться расшифровка диска с помощью «cryptsetup open —type luks» и/или активация диска с помощью lvchange/vgchange.
Пароль для шифрования диска и пароль учётной записи пользователя
На первый взгляд может показаться, что пароль пользователя для входа в систему (этот же пароль применяется для выполнения команд с sudo и для разблокировки экрана, а также входа по SSH) и пароль для расшифровки диска очень похожи. Они оба предназначены для безопасности компьютера и защищают его от доступа посторонних.
Но на самом деле с практической точки зрения это довольно разные вещи. Пароль учётной записи легко изменить или сбросить. Пароль любого пользователя может изменить любой другой пользователь, имеющие право выполнять команды с sudo. Даже если отсутствуют права администратора, но имеется физический доступ к компьютеру, то можно сбросить пароль для любого пользователя, в том числе и root, подробности смотрите в статье «Как в Linux сбросить забытый пароль входа».
Что касается пароля расшифровки диска, то с ним всё по-другому: если забыть этот пароль, то его никак не получится сбросить. Теоретически, пароль можно восстановить с помощью брут-форса, но это требует время и вычислительных ресурсов.
То есть пароль пользователя позволительно забыть, а пароль расшифровки диска забывать нельзя!
Установка Kali Linux с полным шифрованием диска
Это самый простой вариант настройки и использования — будет зашифрован весь диск. Для шифрования во время установки Kali Linux, а также для использования вам необязательно вникать в то, как это работает.
Выберите язык системы — на этом же языке будет и установщик.
Выберите расположение — от этого зависит часовой пояс.
Выберите раскладку клавиатуры.
Выберите сочетание клавиш для смены раскладки клавиатуры.
Придумайте имя для вашей системы.
Оставьте это поле пустым.
Введите полное имя пользователя — что угодно.
Имя пользователя компьютера — состоит только из маленьких английских букв, а также цифр. Первым символом должна быть буква.
Пароль для вашего пользователя.
Этот выбор влияет на часовой пояс.
Для того, чтобы зашифровать весь диск, на котором будет установлена Kali Linux, выберите «Авто — использовать весь диск с шифрованием LVM».
Выберите диск для шифрования и установки ОС.
Выберите «Все файлы в одном разделе (рекомендуется новичкам)».
На данном этапе установщик запишет новую разметку разделов на диск, убедитесь, что вы выбрали верный диск, поскольку с него будут удалены все данные. Если всё правильно, то выберите «Да».
Раздел, который будет зашифрован, заполняется случайными данными — этот процесс требует времени.
Дважды введите пароль для расшифровки раздела — если вы забудете этот пароль, то восстановить его и доступ к диску будет невозможно! Внимательно прочитайте пояснение, как сделать надёжный пароль, который не позволит злоумышленнику расшифровать ваш диск.
Укажите, сколько места от диска вы хотите выделить под зашифрованный раздел с установленной ОС.
Здесь вы можете проверить разметку разделов — можно всё оставить как есть.
Выберите «Да».
Выберите окружение рабочего стола и набор инструментов.
Установка завершена, перезагрузите компьютер.
При запуске Kali Linux вам нужно ввести пароль для расшифровки раздела.
Также вам нужно будет ввести имя пользователя и его пароль для входа в систему.
Содержимое файла /etc/fstab:
Список блочных устройств:
Развернуть (установка с английским интерфейсом)
Выберите «Graphical install».
Выберите язык системы — на этом же языке будет и установщик.
Выберите расположение — от этого зависит часовой пояс.
Выберите раскладку клавиатуры.
Придумайте имя для вашей системы.
Оставьте это поле пустым.
Введите полное имя пользователя — что угодно.
Имя пользователя компьютера — состоит только из маленьких английских букв, а также цифр. Первым символом должна быть буква.
Пароль для вашего пользователя.
Этот выбор влияет на часовой пояс.
Для того, чтобы зашифровать весь диск, на котором будет установлена Kali Linux, выберите «Guided — use entire disk and set up encrypted LVM».
Выберите диск для шифрования и установки ОС.
Выберите «All files in one partition (recommended for new users)», то есть все файлы будут на одном разделе — это рекомендовано для начинающих пользователей Linux.
На данном этапе установщик запишет новую разметку разделов на диск, убедитесь, что вы выбрали верный диск, поскольку с него будут удалены все данные. Если всё правильно, то выберите «Yes».
Раздел, который будет зашифрован, заполняется случайными данными — этот процесс требует времени.
Дважды введите пароль для расшифровки раздела — если вы забудете этот пароль, то восстановить его и доступ к диску будет невозможно!
Укажите, сколько места от диска вы хотите выделить под зашифрованный раздел с установленной ОС.
Здесь вы можете проверить разметку разделов — можно всё оставить как есть.
Выберите «Yes».
Выберите окружение рабочего стола и набор инструментов.
Установка завершена, перезагрузите компьютер.
При запуске Kali Linux вам нужно ввести пароль для расшифровки раздела.
Также вам нужно будет ввести имя пользователя и его пароль для входа в систему.
Содержимое файла /etc/fstab:
Список блочных устройств:
Как установить Kali Linux с зашифрованной домашней папкой пользователя
Зашифрованная папка пользователя и незашифрованные файлы системы — хороший вариант, если вы хотите обезопасить свои файлы, но при этом не хотите мериться с потерей производительности системы.
В этом примере будет полностью зашифрована папка /home. Раздел с установленной ОС и зашифрованный раздел будут помещаться на одном диске, хотя можно разместить их на разных дисках.
Как установить Kali Linux с зашифрованной домашней папкой пользователя (автоматическая разметка)
Установщик имеет шаблон шифрования домашней папки пользователя и он отлично подойдёт для начинающих пользователей — параметры по умолчанию вполне приемлемые, настройка выполняется очень просто.
Шаблон разметки имеет следующие параметры:
EFI раздел – 500 МБ
/boot раздел – 500 МБ
/ (корневой) раздел — 30 ГБ
swap (раздел подкачки) — 1 ГБ
/home раздел — всё оставшееся место
Остановимся непосредственно на разметке дисков, поскольку остальные этапы установки идентичные.
Развернуть (установка с русским интерфейсом)
Когда подойдёте к разметке дисков, то выберите «Авто — использовать весь диск с шифрованием LVM».
Выберите диск, на который будет установлена система.
Выберите «Отдельный раздел для /home».
Нас предупреждают, чтобы приступить к созданию зашифрованного на диск должна быть записана текущая схема разделов (те два раздела, которые мы только что создали) — эти изменения нельзя отменить. Выберите «Да».
Раздел, который будет зашифрован, заполняется случайными данными — этот процесс требует времени.
Дважды введите пароль для расшифровки раздела.
Для автоматической разметки вы можете использовать весь размер группы томов или её часть. Если вы слабо представляете себе о возможностях LVM, то просто используйте весь доступный размер.
Обзор настроенных разделов. В данном примере на корневой раздел приходится 30 Гб, а на директорию /home 224.6 Гб.
Нажмите «Закончить разметку и записать изменения на диск» → «Продолжить».
Согласитесь с записью данных на диск, для этого выберите «Да».
Развернуть (установка с английским интерфейсом)
Когда подойдёте к разметке дисков, то выберите «Guided — use entire disk and set up encrypted LVM».
Выберите диск, на который будет установлена система.
Выберите «Separate /home partition».
Нас предупреждают, чтобы приступить к созданию зашифрованного на диск должна быть записана текущая схема разделов (те два раздела, которые мы только что создали) — эти изменения нельзя отменить. Выберите «Yes».
Раздел, который будет зашифрован, заполняется случайными данными — этот процесс требует времени.
Дважды введите пароль для расшифровки раздела.
Для автоматической разметки вы можете использовать весь размер группы томов или её часть. Если вы слабо представляете себе о возможностях LVM, то просто используйте весь доступный размер.
Обзор настроенных разделов. В данном примере на корневой раздел приходится 30 Гб, а на директорию /home 224.6 Гб.
Нажмите «Finish partitioning and write changes to disk» → «Continue».
Согласитесь с записью данных на диск, для этого выберите «Yes».
Как установить Kali Linux с зашифрованной домашней папкой пользователя (ручная разметка)
Если рассмотренный выше автоматический шаблон разметки дисков с шифрованием домашней папки вас чем-либо не удовлетворяет, то можно настроить разметку дисков вручную, ниже показано как это сделать.
При ручной разметке нужно помнить, что для нормальной установки нужно минимум два раздела:
EFI — достаточно 200 Мегабайт
/ (корень файловой системы) — сюда устанавливается ОС. Если других разделов нет, то здесь же будут храниться файлы пользователей
В этом примере в дополнение к двум необходимым мы создадим ещё один раздел и зашифруем его, этот раздел будет монтироваться по пути /home.
Остановимся непосредственно на разметке дисков, поскольку остальные этапы установки идентичные.
Развернуть (установка с русским интерфейсом)
Когда подойдёте к разметке дисков, то выберите «Вручную».
Выберите диск, на который будет установлена система.
На носителе отсутствует таблица раздела, соглашаемся на её создание, то есть выбираем «Да».
Выбираем незанятую область («СВОБОДНОЕ МЕСТО»).
Создаём новый раздел.
Первым разделом будет EFI, для него достаточно 100-200 Мегабайт, выделите с запасом 200 Мегабайт.
Выбираем «Начало».
В поле «Использовать как» выберите «системный раздел EFI». Затем нажмите «Настройка раздела закончена».
Опять выберите «СВОБОДНОЕ МЕСТО».
Создаём новый раздел.
Выберите размер раздела. Этот раздел будет корневым, на него будут установлены файлы ОС и сюда же будут устанавливаться программы. Не рекомендуется делать этот раздел менее 20 Гигабайт.
Выбираем «Начало».
В поле «Использовать как» выберите «Журналируемая файловая система Ext4». В качестве «Точки монтирования» выберите «/». Затем нажмите «Настройка раздела закончена».
Теперь переходим к создании зашифрованного раздела. Выбираем «Настроить шифрование для томов».
Нас предупреждают, чтобы приступить к созданию зашифрованного на диск должна быть записана текущая схема разделов (те два раздела, которые мы только что создали) — эти изменения нельзя отменить. Выберите «Да».
Создаём зашифрованный том.
Выбираем где именно будет размещён этот раздел. Особенно будьте осторожны если у вас несколько дисков. На скриншоте выбрано свободное место единственного диска. Но если вы не хотите использовать всё свободное пространство, то предварительно создайте раздел нужного размера и выберите здесь. Для этого раздела в поле «Использовать как» выберите «не использовать».
Выбираем «Настройка раздела закончена».
Опять необходимо сохранить текущую схему разделов на диск. Выберите «Да».
Мне нужен только один раздел, поэтому я выбираю «Закончить».
Нас предупреждают, что выбранный раздел будет перезаписан случайными данными и информация с него будет утеряна. Если всё так, то выберите «Да».
Введите пароль для расшифровки раздела.
Пока мы только создали зашифрованный раздел, который не имеет ни томов, ни точек монтирования. Всё это настраивается в LVM.
Переходим в «Настройка менеджера логических томов (LVM)».
Опять нужно записать текущую схему разделов, опять «Да».
Группа томов — это именованный набор физических и логических томов. Типичным системам требуется только одна группа томов, чтобы содержать все физические и логические тома в системе, и мне нравится называть свою группу по имени машины. Физические тома соответствуют дискам; это блочные устройства, которые предоставляют пространство для хранения логических томов. Логические тома соответствуют разделам: они содержат файловую систему. Однако, в отличие от разделов, логические тома получают имена, а не номера, они могут занимать несколько дисков и необязательно должны быть физически смежными.
На этом этапе мы создаём группу томов.
Придумайте имя — можно по имени машины, я же назвал в соответствии с целью.
Выберите устройство для новой группы томов. Этим устройством является зашифрованный раздел, созданный на предыдущем шаге.
Нужно записать текущую схему разделов («Да»).
Теперь создаём логический том.
Выберите группу — она одна.
Назовите том — название может быть произвольным, но в ваших же интересах сделать его говорящим.
Укажите размер тома.
Мне достаточно одного тома, поэтому я выбираю «Закончить».
Теперь можно наблюдать созданный том, но он никак не используется и для него не выбрана файловая система. Нажимаем на запись тома.
В поле «Использовать как» выберите «Журналируемая файловая система Ext4».
В качестве «Точки монтирования» выберите «/home». Затем нажмите «Настройка раздела закончена».
Завершаем разбивку диска, выбираем «Закончить разметку и записать изменения на диск» → «Продолжить».
Меня предупреждают, что я не создал файл подкачки — у меня 32 Гигабайта оперативной памяти, мне не нужен файла подкачки, поэтому я выбираю «Нет».
Нас в очередной раз предупреждают, что данные будут записаны на диск и имеющаяся на нём информация будет потеряна, выбираем «Да».
Дальнейшие шаги по установке идентичны первому примеру.
Если всё сделано правильно, при включении компьютера будет запрашиваться пароль.
Можно убедиться, что список блочных устройств именно такой, каким мы его задумывали.
Развернуть (установка с английским интерфейсом)
Когда подойдёте к разметке дисков, то выберите «Manual».
Выберите диск, на который будет установлена система.
На носителе отсутствует таблица раздела, соглашаемся на её создание, то есть выбираем «Yes».
Выбираем незанятую область («FREE SPACE»).
Создаём новый раздел («Create a new partition»).
Первым разделом будет EFI, для него достаточно 100-200 Мегабайт, выделите с запасом 200 Мегабайт.
Выбираем «Beginning».
В поле «Use as» выберите «EFI System Partition». Затем нажмите «Done setting up the partition».
Опять выберите «FREE SPACE».
Создаём новый раздел («Create a new partition»).
Выберите размер раздела. Этот раздел будет корневым, на него будут установлены файлы ОС и сюда же будут устанавливаться программы. Не рекомендуется делать этот раздел менее 20 Гигабайт.
Выбираем «Beginning».
В поле «Use as» выберите «Ext4 journaling file system». В качестве «Mount point» выберите «/». Затем нажмите «Done setting up the partition».
Теперь переходим к создании зашифрованного раздела. Выбираем «Configure Encrypted Volumes».
Нас предупреждают, чтобы приступить к созданию зашифрованного на диск должна быть записана текущая схема разделов (те два раздела, которые мы только что создали) — эти изменения нельзя отменить. Выберите «Yes».
Создаём зашифрованный том («Create encrypted volume»).
Выбираем где именно будет размещён этот раздел. Особенно будьте осторожны если у вас несколько дисков. На скриншоте выбрано свободное место единственного диска. Но если вы не хотите использовать всё свободное пространство, то предварительно создайте раздел нужного размера и выберите здесь. Для этого раздела в поле «Use as» (использовать как) выберите «not use» (не использовать).
Выбираем «Done setting up the partition».
Опять необходимо сохранить текущую схему разделов на диск. Выберите «Yes».
Мне нужен только один раздел, поэтому я выбираю «Finish».
Нас предупреждают, что выбранный раздел будет перезаписан случайными данными и информация с него будет утеряна. Если всё так, то выберите «Yes».
Введите пароль для расшифровки раздела.
Пока мы только создали зашифрованный раздел, который не имеет ни томов, ни точек монтирования. Всё это настраивается в LVM.
Переходим в «Configure the Logical Volume Manager».
Опять нужно записать текущую схему разделов, опять «Yes».
Группа томов — это именованный набор физических и логических томов. Типичным системам требуется только одна группа томов, чтобы содержать все физические и логические тома в системе, и мне нравится называть свою группу по имени машины. Физические тома соответствуют дискам; это блочные устройства, которые предоставляют пространство для хранения логических томов. Логические тома соответствуют разделам: они содержат файловую систему. Однако, в отличие от разделов, логические тома получают имена, а не номера, они могут занимать несколько дисков и необязательно должны быть физически смежными.
На этом этапе мы создаём группу томов, выберите «Create volume group».
Придумайте имя — можно по имени машины, я же назвал в соответствии с целью.
Выберите устройство для новой группы томов. Этим устройством является зашифрованный раздел, созданный на предыдущем шаге.
Нужно записать текущую схему разделов («Yes»).
Теперь создаём логический том («Create logical volume»).
Выберите группу — она одна.
Назовите том — название может быть произвольным, но в ваших же интересах сделать его говорящим.
Укажите размер тома.
Мне достаточно одного тома, поэтому я выбираю «Finish».
Теперь можно наблюдать созданный том, но он никак не используется и для него не выбрана файловая система. Нажимаем на запись тома.
В поле «Use as» выберите «Ext4 journaling file system».
В качестве «Mount point» выберите «/home». Затем нажмите «Done setting up the partition».
Завершаем разбивку диска, выбираем «Finish partitioning and write changes to disk» → «Continue».
Меня предупреждают, что я не создал файл подкачки — у меня 32 Гигабайта оперативной памяти, мне не нужен файла подкачки, поэтому я выбираю «No».
Нас в очередной раз предупреждают, что данные будут записаны на диск и имеющаяся на нём информация будет потеряна, выбираем «Yes».
Дальнейшие шаги по установке идентичны первому примеру.
Если всё сделано правильно, при включении компьютера будет запрашиваться пароль.
Можно убедиться, что список блочных устройств именно такой, каким мы его задумывали.
Команды для работы с зашифрованными дисками LVM
Вывод списка блочных устройств:
lsblk
Поиск всех групп томов:
sudo vgscan
Автоактивация групп томов:
sudo vgchange -ay
Вывод списка всех логических томов во всех группах томов:
sudo lvscan
Автоактивация указанного логического тома:
sudo lvchange -ay /dev/xubuntu-vg/root
Следующая команда расшифровывает и открывает, то есть создаёт сопоставление с именем nvme0n1p3_crypt раздела /dev/nvme0n1p3.
sudo cryptsetup open --type luks /dev/nvme0n1p3 nvme0n1p3_crypt
Фактически, предыдущая команда создаёт новое блочное устройство по пути /dev/mapper/ИМЯ с расшифрованным содержимым, в данном случае это будет /dev/mapper/nvme0n1p3_crypt). Это устройство можно монтировать с помощью команды mount.
Монтирование зашифрованного раздела (после того, как он был открыт с помощью cryptsetup):
sudo mount /dev/mapper/HackWare--Kali--vg-home /home
Если задача установить Linux на флешку имея одну флешку, то да, это можно сделать. Для этого в VirtualBox создаётся виртуальная машина без диска и к ней подключаете флешку (она становится для виртуальной машины диском), а затем запускаете установку с ISO файла на «диск» виртуальной машины, который на самом деле флешка. Подробности смотрите в статье «Установка Kali Linux на флэшку или на внешний диск как полноценную ОС».
Но конкретно в данной статье я использовал чуть другой метод подключения флешки к виртуальной машине — она подключается не как USB устройство, а как RAW диск. Подробности описаны в статьях:
Для Linux, если я всё правильно помню, разницы нет. Но дело в том, что я сейчас пытаюсь сделать флешку с установленными на ней Windows 11 и Kali Linux, причём чтобы можно было загружаться с этой флешки как на обычном компьютере, так и в виртуальной машине. Мне лень было делать вторую виртуальную машину, поэтому я и использую уже имеющуюся с RAW диском. Но вы можете подключить флешку как USB устройство, думаю, разницы не будет. Хотя, может быть, это как-то повлияет на скорость: если у вас флешка USB 3.1 и гнездо компьютера USB 3.1 (у меня так — скорость, огонь!), то лучше подключить флешку как RAW диск.
Спасибо за статью. А можно ли по этому гайду записать Kali на ту флешку, с которой загружаюсь?
Если задача установить Linux на флешку имея одну флешку, то да, это можно сделать. Для этого в VirtualBox создаётся виртуальная машина без диска и к ней подключаете флешку (она становится для виртуальной машины диском), а затем запускаете установку с ISO файла на «диск» виртуальной машины, который на самом деле флешка. Подробности смотрите в статье «Установка Kali Linux на флэшку или на внешний диск как полноценную ОС».
Но конкретно в данной статье я использовал чуть другой метод подключения флешки к виртуальной машине — она подключается не как USB устройство, а как RAW диск. Подробности описаны в статьях:
Для Linux, если я всё правильно помню, разницы нет. Но дело в том, что я сейчас пытаюсь сделать флешку с установленными на ней Windows 11 и Kali Linux, причём чтобы можно было загружаться с этой флешки как на обычном компьютере, так и в виртуальной машине. Мне лень было делать вторую виртуальную машину, поэтому я и использую уже имеющуюся с RAW диском. Но вы можете подключить флешку как USB устройство, думаю, разницы не будет. Хотя, может быть, это как-то повлияет на скорость: если у вас флешка USB 3.1 и гнездо компьютера USB 3.1 (у меня так — скорость, огонь!), то лучше подключить флешку как RAW диск.