Это старая версия документа!



Перевёл: Graf
Дата перевода: июль 2023 г.
Оригинал: http://slackware.osuosl.org/slackware-15.0/README_CRYPT.TXT

Установка Slackware на шифрованные разделы


Введение

В современных дистрибутивах Linux, все чаще появляется возможность установки на шифрованный раздел (диска или тома). Специально для людей, много путешествующих с ноутбуком, такая установка намного обезопасит данные и, потенциальным ворам компьютера, в доступе к этим данным будет отказано.

Начиная с версии 12.0, в Slackware поддержка LVM встроена в установщик. С чуть большими усилиями, установщик предлагает возможность использования прозрачного шифрования разделов/томов/дисков, куда вы установите Slackware. Вы можете комбинировать использование LVM и шифрования для минимизации количества вводов пароля при разблокировке. Если вы хотите узнать подробнее о настройке и использовании LVM во время установки, прочтите файл «README_LVM.TXT» .

Slackware использует device-mapper и cryptsetup для прозрачного шифрования данных и разделов подкачки. Cryptsetup использует концепцию называемую LUKS (Linux Unified Key Setup), которая позволяет изменять код разблокирования для зашифрованного тома без необходимости повторного шифрования данных. Вы даже можете назначить несколько паролей на зашифрованный том, чтобы другие пользователи, кроме вас, могли разблокировать шифрование без знания ВАШЕГО пароля.

При подготовке раздела для прозрачного шифрования с cryptsetup, программа попросит вас ввести пароль. Этот пароль используется для шифрования другого случайно сгенерированного пароля и полученный, таким образом, пароль используется на самом деле для шифрования данных подключенного тома. Cryptsetup создаст подключаемое устройства и сделает это блочное устройство доступным в каталоге «/dev/mapper». Любые данные будут считываться и записываться на это подключаемое устройство и будут автоматически «расшифрованы из »/« зашифрованы в» этот фактический раздел.

При шифровании корневой файловой системы, убедитесь, что у вас есть, по крайней мере, один (маленький) раздел, который должен быть в не зашифрованном виде. Этот раздел должен содержать ядро(а) которое вы хотите загрузить из initrd образа, и сам initrd образ необходимый для зашифрованных томов. Вам нужно установить LILO либо в MBR — или, если это не возможно, в корневой сектор этого небольшого не зашифрованного раздела. Вы, наверное, догадались почему мы не можем использовать зашифрованный раздел для этого …

Используем cryptsetup во время установки Slackware

Мы собираемся включить шифрование на все или некоторые разделы, или тома, прежде чем устанавливать Slackware на них. В первой части рассмотрим шифрование одного раздела, который не является корневым.Как правило, у людей возникает необходимость зашифровать свои домашние каталоги, и только их, этому и посвятим первую часть. Далее пойдет часть о шифровании раздела подкачки (swap) в дополнение к разделу /home. Раздел подкачки содержит ценную информацию для кражи данных, даже после выключения компьютера. Шифрованием раздела подкачки мы устраним потенциальный доступ к этим данным. В следующей части, которая покажет вам, как получить полностью зашифрованную систему, с помощью шифрования корня (‘/’) файловой системы. Это немного сложно сделать, но, вероятно, стоит усилий. Чтобы сделать его более интересным, и простым в использовании, мы посвятим заключительную часть, использованию комбинации шифрования LVM и диска. В качестве примера, мы создадим один большой зашифрованный раздел, а в нем, как в зашифрованном «контейнере», создадим несколько логических томов, которые будем использовать как корневой (/), /home и swap раздел. Преимущества такого подхода в том, что нужен только один пароль для разблокирования компьютера, и нет необходимости поддерживать файл «/etc/crypttab», содержащий информацию о шифрованных томах, которые должны быть разблокированы во время загрузки. Кроме того, мы получим раздел подкачки, который можно использовать во время спящего режима с записью на диск, который останется зашифрованным после выключения (так что, например, при потенциальной краже данных никто не будут в состоянии добраться до самых ценных данных, даже если ноутбук будет в режиме сна).

Если вы выберете последний вариант для получения полностью зашифрованной Slackware, желательно, чтобы вы прочитали файл «README_LVM.TXT» для ознакомления с процессом создания и использования логических томов во время установки Slackware. А затем, можете пропустить все вплоть до раздела под названием «Объединение LUKS и LVM».

Шифрование "/home" раздела

После того, как компьютер загрузится с установочного CD/DVD (флэш-диска или PXE), и вы окажетесь в командной строке «#», первое, что нужно сделать, это использовать «fdisk» или «cfdisk» для создания разделов, которые вам необходимы для установки Slackware. Затем, с помощью cryptsetup подготовить разделы, которые вы собираетесь зашифровать.

ПРИМЕЧАНИЕ: эта часть README рассказывает о создании зашифрованных разделов «данных». Если вы хотите узнать, как настроить зашифрованный «swap» раздел, перейдите к части «Шифрование swap»

Предположим, вы хотите, чтобы зашифрованный раздел «/dev/sdx2» использовался в качестве «/home» (замените «/dev/sdx2» на имя вашего раздела в следующей серии примеров). Несколько команд, приведенных ниже, безвозвратно уничтожат все данные на этом разделе. Рекомендуется перепроверить вывод «fdisk -l» перед началом работы.

Начнем с того, что заполним этот раздел случайными данными. Это намного усложнит определение места хранения зашифрованных данных на этом разделе, после завершения установки Slackware на него, любой судебно-медицинской экспертизой. Этот процесс занимает много времени — в зависимости от размера разделов, несколько часов или более.’Если вы не допускаете возможность, связанную с конфискацией компьютера агентами ФБР (прим.Graf: ФСБ 😉 ), то можете пропустить следующую команду:

# dd if=/dev/urandom of=/dev/sdx2

Подготовка раздела для шифрования. Вам будет предложено дважды ввести пароль. Обратите внимание, что пароль не ограничивается одним словом. Фраза может содержать пробелы.

# cryptsetup -y luksFormat /dev/sdx2

Вы можете вывести информацию о зашифрованных разделах на консоль, выполнив следующую команду:

# cryptsetup luksDump /dev/sdx2

Теперь мы «откроем» зашифрованный раздел и позволим devicemapper создать отображаемое блочное устройство. Мы будем использовать отображаемое устройство, которое ведет себя так же, как обычный дисковый раздел, когда мы перейдем к выбору TARGET в setup. Узлы, отображаемого устройства, будут созданы в каталоге /dev/mapper. Команда запросит у вас парольную фразу, которую вы ввели при выполнении операции luksFormat. Последний аргумент этой команды - имя отображаемого устройства. Мы назовем наше отображаемое устройство lukssdx2 (заметим, что LUKS ожидает имя отображаемого устройства в формате luks<rawdevname>). Оно будет доступно для использования в качестве блочного устройства /dev/mapper/lukssdx2. Т.е., например, если имя исходного устройства - /dev/sda2, то устройство будет /dev/mapper/lukssda2.

# cryptsetup luksOpen /dev/sdx2 lukssdx2

Мы закончили нашу подготовку, и настало время начать установку Slackware. Эта установка не отличается от той к которой вы привыкли. Единственное заметное отличие заключается в названии устройств, которые вам будет предложено выбрать для разметки разделов. Обязательно прочитайте до конца этот текст, хотя бы для того, чтобы узнать, какую необходимо сделать доработку, чтобы зашифрованные разделы были доступны после перезагрузки (установка пока не может делать все это автоматически).

При установке, в разделе «ADDSWAP», продолжайте как обычно, т.е. настраивайте нормальный не зашифрованный раздел подкачки, даже если вы хотите, чтобы он был в зашифрованном виде. Мы позаботимся о шифровании раздела подкачки после установки Slackware.

При установке, выбрав в главном меню пункт «TARGET», вы заметите, что отображаемое устройство доступно в выборе «Linux partition» как «/dev/mapper/lukssdx2». Сначала выберите раздел, предназначенный для корневой (‘/’) файловой системы, а потом «/dev/mapper/lukssdx2» для файловой системы «/home». Создайте на них любой тип файловой системы. Мой любимый тип ext4, но вы можете выбрать XFS или JFS для стабильности и скорости.

ПРИМЕЧАНИЕ: основной раздел будет также виден в меню выбора. Будьте очень осторожны, чтобы не выбрать это устройство («/dev/sdx2» в нашем примере) для любой другой файловой системы которую вы хотите создать, иначе вы уничтожите все данные на зашифрованном разделе.

Завершите установку и после выбора пункта «EXIT» выберите вариант «Не перезагружать», и вы вернетесь в командную строку. Пока-что НЕ ПЕРЕЗАГРУЖАЙТЕСЬ!
Теперь создадим конфигурационный файл /etc/crypttab для программы cryptsetup. Этот файл содержит информацию, необходимую программе cryptsetup для разблокировки зашифрованного тома и сопоставления его с правильным именем устройства. Файл /etc/crypttab содержит строки в формате: «отображаемое_имя устройство пароль опции». Поскольку, мы все еще находимся внутри программы установки, корневая файловая система нашей Slackware, по-прежнему, смонтирована в каталоге /mnt. Для нашего примера, где мы зашифровали /dev/sdx2 и отобразили, разблокированное устройство, как /dev/mapper/lukssdx2, нам нужна единственная строка в /etc/crypttab:

lukssdx2	/dev/sdx2

Итак, нам необходимо выполнить команду:

 # echo "lukssdx2   /dev/sdx2" > /mnt/etc/crypttab

для создания файла с требуемым содержимым (предполагаю, что файл еще не существует, так как команда выше, перезапишет данные в файле, если он существовал). Можно, конечно, просто запустить «vi» редактор и добавить эту строку. Если пароль не указан в файле crypttab (его указание, потенциально, очень опасно) cryptsetup попросит вас ввести пароль при загрузке компьютера.

Шифрование swap

В предыдущей главе мы установили Slackware, используя зашифрованный раздел /home, но оставили раздел подкачки незашифрованным. Сейчас мы собираемся исправить это «упущение», поскольку не хотим предоставить потенциальному похитителю информации доступ к конфиденциальным данным, попавшим на ваш диск в результате процесса подкачки памяти ядром.
Это действительно очень просто и прямолинейно. Кроме того, независимо от того, используете вы или нет шифрование других разделов (для данных), добавьте следующую строку в файл crypttab.
Для данного примера я предполагаю, что выбранный вами раздел подкачки будет /dev/sdx3:

cryptswap   /dev/sdx3   none   swap

Вы можете использовать редактор vi для добавления этой строки в /mnt/etc/crypttab. Или выполнить следующую команду, которая добавит, эти строки в конец файла:

# echo "cryptswap   /dev/sdx3   none   swap" >> /mnt/etc/crypttab

Нам необходимо отредактировать файл fstab таким образом, чтобы после перезагрузки компьютера для подкачки использовалось правильное устройство (устройство /dev/sdx3 больше не будет использоваться, а /dev/mapper/cryptswap будет). Строка в файле /mnt/etc/fstab, для раздела подкачки выглядит следующим образом:

/dev/sdx3   swap   swap   defaults   0   0

измените ее на следующую:

/dev/mapper/cryptswap   swap   swap   defaults   0   0

Эти два изменения являются достаточными. Приведенные выше инструкции предполагают, что вы редактировали crypttab файл в конце установки Slackware, но на самом деле вы можете сделать это в любое время. Процесс загрузки Slackware позаботится об остальном. При выходе из Slackware, зашифрованный раздел подкачки будет переформатирован как обычный не зашифрованный swap, так что любая другая ОС может быть запущена в мультизагрузочной конфигурации и не будет никаких проблем при использовании этого же раздела подкачки.

ПРИМЕЧАНИЕ: раздел подкачки шифруется с помощью нового, случайно сгенерированного ключа при каждой загрузке компьютера. Нет необходимости постоянно вводить пароль!
ПРИМЕЧАНИЕ: шифрованный раздел подкачки повторно форматируется каждый раз во время загрузки и остановки системы. Это совершенно нормально до тех пор, пока не изменится порядок жесткого диска. Если вы добавите или перенесете этот диск на другой компьютер, имя устройства может измениться (например, из sda в sdb), и если вы забудете изменить /etc/crypttab ваша система может, в конечном итоге, отформатировать не тот раздел! Только по этой причине, рекомендуется, использовать шифрование дисков, включая swap раздел, по методу «Объединение LUKS и LVM», описанному в главе с таким же названием!

Шифрование корневой файловой системы (root)

Вы можете продвинуться на один шаг вперед простого шифрования «/home» раздела. Т.е. можете зашифровать ВСЕ разделы, включая корневой. В этом случае, придется выполнить дополнительное конфигурирование до перезагрузки установки.

ПРИМЕЧАНИЕ: Метод, описанный здесь, приведет к несколькими, независимо зашифрованным разделам. Для разблокировки этих разделов может потребоваться ввод нескольких паролей. Если вы хотите разблокировать всю систему одним паролем и, если вы не уклоняетесь от использования LVM, то лучший вариант, это следовать инструкциям в главе «Объединение LUKS и LVM», которая следует далее. Если вы думаете, что LVM добавляет слишком много сложностей, то просто читайте и выполняйте решения, описанные здесь.

Не забудьте создать небольшой раздел, который останется в не зашифрованном виде. Во время установки смонтируйте его в раздел «/boot». Этот раздел будет использоваться для ядра и initrd (с cryptsetup и дополнительными необходимыми модулями ядра). Будем считать, что Slackware является единственной операционной системой на компьютере, так что вы можете указать LILO установку загрузчика в MBR (которая используется по умолчанию). LILO может загрузить и Windows, если она у вас уже была установлена на компьютере, так что даже при двойной загрузке ситуация должна быть безопасна при использовании MBR. С другими дистрибутивами, присутствующими на компьютере, все может быть немного сложнее — возможно, вам надо будет установить LILO в раздел /boot.

Выполните установку Slackware так же, как я описал выше, создайте дополнительные зашифрованные разделы и сопоставьте их с соответствующими названиями — для данного примере я сопоставлю зашифрованный корневой раздел «/dev/sdx2» с «lukssdx2» (Прим. от Graf: - в оригинале допущена не точность. Следует читать как: «/dev/sdx1» с «cryptroot»).
Когда выйдет запрос конфигурации LILO, укажите в нем корневой раздел «/dev/mapper/lukssdx2» (Прим. от Graf: - в оригинале допущена не точность. Следует читать как: «/dev/mapper/cryptroot»).
LILO постарается установиться, но потерпит неудачу, о чем вам и сообщит. Это ошибка записи в файл «lilo.conf»,который можно отредактировать в последующих действиях. Продолжим установку до конца, выйдем из программы установки, но не будем перезагружаться.

После того как вы вернулись в командную строку, выполните «chroot» (для работы в изолированной среде). Все файловые системы уже смонтированы и инсталлятор Slackware уже примонтировал /sys и /proc для использования их в изолированной среде («chroot»). Мы, только, должны выполнить следующую команду:

# chroot /mnt

Далее, теперь, когда мы находимся в изолированной среде (chroot), создадим initrd с LVM (если вы использовали логические тома) и с поддержкой шифрования, иначе, ваш компьютер не сможет продолжить загрузку ядра на начальном этапе. Виртуальный диск (initrd) содержит маленькую файловую систему и инструменты, необходимые для разблокирования корневой файловой системы, чтобы ядро смогло запустить программу инициализации. В примере ниже показана команда, которая создает образ «initrd.gz» с корневой файловой системой «ext4», использует подключаемое устройство для корневой файловой системы «cryptroot», на реальный раздел «/dev/sdx1» и, по умолчанию , в Slackware 14.2, использует SMP ядро 4.4.14-SMP без использования логических томов (подробнее об этом в следующем разделе):
(Прим. от Graf: - в оригинале допущена не точность. Следует читать как: …по умолчанию , в Slackware 15.0, использует SMP ядро 5.15.19-SMP без использования логических томов…).

# mkinitrd -c -k 4.4.14-smp -m ext4 -f ext4 -r cryptroot -C /dev/sdx1

(Прим. от Graf: - в оригинале допущена не точность. Следует читать код как: mkinitrd -c -k 5.15.19-smp -m ext4 -f ext4 -r cryptroot -C /dev/sdx1)

Навигация
Печать/экспорт
QR Code
QR Code wiki:od:rcrypt_150 (generated for current page)