Перевёл: 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)

В результате образ initrd будет записан в файл по умолчанию «/boot/initrd.gz». Мы должны сообщить LILO об этом initrd.Откройте конфигурационный файл «/etc/lilo.conf» в редакторе, например в VI или pico — он должен быть уже сгенерирован «liloconfig» во время установки. Посмотрите на «Linux bootable partition config» и добавьте строку для initrd. Мы также должны изменить файл ядра на стандартное ядро, потому что LILO не в состоянии объединить huge ядра в Slackware 14.2 (Прим. от Graf: - в оригинале допущена не точность. Следует читать: Slackware 15.0) с образом initrd — оно будет жаловаться, что «виртуальный(RAM) диск является слишком большим, для соответствия между ядром и 15M-16M memory hole». Мы можем жить с этим,так как «huge» ядра не предназначены для повседневного использования в любом случае. Они предназначены для установки Slackware на широкий спектр компьютеров, и именно поэтому они являются «огромными»(huge).Строка «/etc/lilo.conf» в части «Linux», должна выглядеть, примерно так:

image = /boot/vmlinuz-generic-smp-4.4.14-smp
  initrd = /boot/initrd.gz
  root = /dev/mapper/lukssdx2
  label = linux
  read-only

(Прим. от Graf: - в оригинале допущена не точность. Следует читать код как:
image = /boot/vmlinuz-generic-smp-5.15.19-smp
initrd = /boot/initrd.gz
root = /dev/mapper/cryptroot
label = linux
read-only
)

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

Если у вас есть другая операционная система на вашем компьютере и нельзя установить LILO в MBR, выберите пункт меню установки «Install to superblock (Root)». В этом случае, вы должны сделать еще одно дополнительное изменение, почти в верхней части файла. Найдите строку: «boot = /dev/mapper/lukssdx2» (Прим. от Graf: - в оригинале допущена не точность. Следует читать: «boot=/dev/mapper/cryptroot»), которая является устройством для корневого раздела и которая стала причиной, по которой LILO не установился. Измените название загрузочного устройства на названием небольшого незашифрованного раздела, который вы создали вначале и который установлен в «/boot». Если предположить, что название этого раздела «/dev/sdx1» (Прим. от Graf: - в оригинале допущена не точность. Следует читать: «/dev/sdx4»), «boot» строка должна выглядеть так:

 boot = /dev/sdx1

(Прим. от Graf: - в оригинале допущена не точность. Следует читать: boot = /dev/sdx4)

Мы закончили. Сохраните изменения, выйдите из редактора и запустить команду «LILO». Lilo выдаст несколько предупреждений, касающихся доступности разделов «/proc/partitions» и то, что LILO об этом думает, но их можно проигнорировать. Перезагрузитесь, и вы увидите строку: «Enter passphrase: ». После ввода пароля, который откроет корневую файловую систему, начнется загрузка в Slackware. Если есть другие зашифрованные разделы, то вам будет предложено ввести и для них свои пароли.

Объединение LUKS и LVM

До сих пор мы были заняты шифрованием отдельных разделов. Это все полностью функционально, но есть несколько недостатков. Один из них, это ввод пароля для каждого зашифрованного раздела (за исключением раздела подкачки, который в Slackware шифруется случайным паролем, при каждой загрузке системы). Во-вторых, метод, используемый для шифрования раздела подкачки запрещает использование подкачки как раздела гибернации(спящий режим). А так как initrd из Slackware 14.2 (Прим. от Graf: - в оригинале допущена не точность. Следует читать: Slackware 15.0) поддерживает спящий режим, было бы стыдно не использовать эту функцию на вашем ноутбуке (который, из-за его мобильности, является основной целью для полного шифрования диска в любом случае).

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

Предположим, что Slackware будет единственной операционной системой на вашем компьютере. В случае, если у вас уже есть установленная операционная система (например, MS Windows), процедура может быть немного другая, потому-что вы не всегда можете установить LILO в MBR. После загрузки с установочного диска Slackware, мы создадим небольшой незашифрованный раздел, который будет содержать Linux ядра и образ(ы) initrd. Остальная часть свободного пространства на диске будет одним разделом, который мы зашифруем. Вначале зашифрованного тома, мы создадим несколько логических томов, и эти тома будут отформатированы как разделы Slackware («/», «/home» и «swap»). Эти шаги более подробно:

  • Используйте ©fdisk для создания разделов. Я буду считать, что раздел /dev/sdx1 равен 100 МБ, а /dev/sdx2 все оставшееся пространство на диске.
  • Во-первых, создайте LUKS-зашифрованный том поверх /dev/sdx2 после того, как дополнительно заполните раздел случайными данными (прочтите в «Шифрование «/home» раздела» о том, для чего нужно заполнение раздела случайными данными):
# dd if=/dev/urandom of=/dev/sdx2

Подготовка раздела для шифрования. Вам будет предложено дважды ввести пароль. Обратите внимание, что пароль не ограничивается одним словом. Фраза может содержать пробелы. Мы будем использовать размер ключа 256 бит. По умолчанию шифр «aes», в режиме «cbc-essiv:sha256», который является достаточно безопасным.

# cryptsetup -y luksFormat /dev/sdx2

Откроем зашифрованный раздел для создания не зашифрованного подключаемого блочного устройства. Команда запросит у вас пароль который вы ввели во время операции «luksFormat». Последний аргумент команды, это имя подключаемого устройства. Мы назовём его «lukssdx2», поскольку установленная система будет использовать это имя (предсказуемость - это хорошо).

   # cryptsetup luksOpen /dev/sdx2 lukssdx2

Следующая часть про LVM. Создадим Physical Volume(PV) на устройстве «/dev/mapper/lukssdx2», Volume Group(VG) под названием «cryptvg» — можно дать любое имя — на PV, и три Logical Volumes(LV’s) на VG, один для корневого раздела (7 Гб), один для раздела /home (10 ГБ) и третий, который мы будем использовать для подкачки (1 ГБ). Вы, вероятно, будете использовать другие размеры, в зависимости от ваших нужд, но сохраните суммарный размер LV меньше общего размера физического тома:

   # pvcreate /dev/mapper/lukssdx2
   # vgcreate cryptvg /dev/mapper/lukssdx2
   # lvcreate -L 7G -n root cryptvg
   # lvcreate -L 10G -n home cryptvg
   # lvcreate -L 1G -n swap cryptvg
  • Запустите «mkswap», чтобы программа установки определила «swap» LV в качестве действительного раздела подкачки:
# mkswap /dev/cryptvg/swap

Когда система должным образом подготовлена, можно запустить установку (setup). Программа установки определит swap LV и активирует его. При назначении разделов для использования в файловых системах, выберите «/dev/cryptvg/root» для корневого раздела, далее «/dev/cryptvg/home», для /home. И, наконец, раздел «/dev/sdx1» для «/boot». Только «/boot» будет не зашифрованной частью вашего компьютера.

Вы заметите, что есть еще несколько устройств, которые можно выбрать, но не трогайте их! Устройства, такие как «/dev/mapper/*», являются основным именем устройств для зашифрованного и LVM томов. Если вы коснетесь любого из них, то уничтожите данные на «/dev/cryptvg/*» томах. После разбиения на разделы мы получаем конфигурацию файловой системы следующего вида:

   /dev/cryptvg/root  /
   /dev/cryptvg/home  /home
   /dev/sdx1          /boot

Когда установка пакетов завершится, начнется конфигурация системы и один из диалогов будет для конфигурирования LILO — «liloconfig».Предполагается, что вы устанавливаете Slackware в качестве единственной ОС на компьютере. Это означает, что вы должны установить Lilo в MBR. Даже если у вас есть другая, уже установленная, ОС такая как MS Windows, LILO загрузчик в Slackware все равно сможет загрузить Windows, при установке LILO в MBR. Выберите «expert lilo configuration» с опцией «Install to Master Boot Record (MBR)». Выделите «/dev/cryptvg/root», как корневой раздел для загрузки. Добавьте раздел Windows, если вы хотите, чтобы LILO загружалось с двойной загрузкой. Наконец, когда «liloconfig» начнет установку загрузчика, вы можете увидеть сообщение об ошибке «установка не удалась». Игнорируйте эту ошибку, потому что мы должны добавить initrd в «/etc/lilo.conf» в любом случае и повторно запустите LILO. Мы сделаем это после завершения установки Slackware.

Допустим, установка завершена, и после того как вы выберите «Выход» вы будете возвращены в командную строку. Не перезагружайтесь, пока! Это тот момент, когда мы зафиксируем наш загрузчик. Для этого выполним команду chroot(change root) в нашей, только что установленной Slackware. Программа установки уже сделала все приготовления, например, повторное монтирование /sys и /proc в /mnt и cгенерировала LVM устройства туда же. Введите команду «chroot»:

   # chroot /mnt

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

    # mkinitrd -c -k 4.4.14-smp -m ext4 -f ext4 -r /dev/cryptvg/root -C /dev/sdx2 -L

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

ПРИМЕЧАНИЕ: Если Slackware запускается из initrd, а вы используете не американскую клавиатуру и необходимо ввести пароль во время загрузки, это может быть проблематично. В этом случае добавьте поддержку вашей клавиатуры, во время создания образа initrd, с помощью дополнительного параметра команды «mkinitrd»: «-l <language»>. Пример для голландской клавиатуры:
«-l nl».

В результате образ initrd будет записан в файл по умолчанию «/boot/initrd.gz». Мы должны сообщить LILO об этом initrd. Откройте конфигурационный файл «/etc/lilo.conf» в редакторе, например в VI или pico — он должен быть уже сгенерирован «liloconfig» во время установки. Посмотрите на «Linux bootable partition config» и добавьте строку для initrd. Мы также должны изменить файл ядра на стандартное ядро, потому что LILO не в состоянии объединить «huge» ядра в Slackware 14.2 (Прим. от Graf: - в оригинале допущена не точность. Следует читать: Slackware 15.0) с образом initrd — оно будет жаловаться, что «виртуальный(RAM) диск является слишком большим, для соответствия между ядром и 15M-16M memory hole». Мы можем жить с этим,так как «huge» ядра не предназначены для повседневного использования в любом случае. Они предназначены для установки Slackware на широкий спектр компьютеров, и именно поэтому они являются «огромными»(huge). Строка «/etc/lilo.conf» в части «Linux», должна выглядеть, примерно так:

   image = /boot/vmlinuz-generic-smp-4.4.14-smp
     initrd = /boot/initrd.gz
     root = /dev/cryptvg/root
     label = linux
     read-only

(Прим. от Graf: - в оригинале допущена не точность. Следует читать первую строчку кода, как: image = /boot/vmlinuz-generic-smp-5.15.19-smp)

  • Если вы добавили, приведенный выше раздел, в качестве дополнительного, не изменяя того, что уже есть, убедитесь, что (label)метка («Linux» в примере выше) является уникальной в файле конфигурации.

Мы закончили. Сохраните изменения, выйдите из редактора и запустить команду «LILO». Lilo выдаст несколько предупреждений, касающихся доступности разделов «/proc/partitions» и то, что LILO об этом думает, но их можно проигнорировать. Перезагрузитесь, и вы увидите строку: «Enter passphrase: ». После ввода пароля, который откроет зашифрованный раздел, начнется загрузка в Slackware. Вы сможете работать как обычно, и когда вы выключите машину (или приостановите с записью на диск используя раздел подкачки) все ваши данные (включая swap) будут зашифрованы.

Как вы заметили, в этот раз, не было никакой необходимости для создания файла «/etc/crypttab». Также запрашивается только один пароль для входа. Кроме того, swap шифруется по умолчанию, что является большим плюсом, если вы собираетесь использовать ноутбук и носить его с собой в стадии гибернации. Все рассмотренное, это самый элегантный способ шифрования вашего Slackware компьютера, если вы не возражаете против использования LVM.

Дополнительные фразы (пароли), ключевые файлы

Программа Cryptsetup задает 7 «ключевых слотов» для любого шифрования раздела или тома. Каждый из этих семи слотов может содержать ключ для разблокировки разделов с данными. Ключ может быть фразой, но использование ключевого файла это еще один вариант. Можно передать имя файла в качестве параметра cryptsetup для того, чтобы разблокировать зашифрованный том без ввода пароля. Это дает возможность использовать ключевой файл на съемном USB носителе для разблокирования вашего компьютера. Slackware поддерживает ключевые файлы и если файл можно найти в файловой системе,он будет использоваться, и вам не придется вводить пароль.

Ключевой файл также может использоваться на USB носителе отформатированном под FAT. Для это надо использовать параметр «-К» команды mkinitrd, указав USB носитель с FAT-меткой или UUID, а также полный путь к ключевому файлу.

  • Например:
  # mkinitrd -c -k 4.4.14-smp -m ext4 -f ext4 -r /dev/cryptvg/root -C /dev/sdx2 -L -K LABEL=TRAVELSTICK:/keys/alien.luks

(Прим. от Graf: - в оригинале допущена не точность. Следует читать код, как: mkinitrd -c -k 5.15.19-smp -m ext4 -f ext4 -r /dev/cryptvg/root -C /dev/sdx2 -L -K LABEL=TRAVELSTICK:/keys/alien.luks)

В mkinitrd из Slackware 13.1 ввели эту поддержку USB, как механизм разблокирования. Кроме того, после того, как корневая файловая система разблокирована и примонтирована, абсолютно безопасно хранить ключевой файл, для дополнительных зашифрованных файловых систем, например в каталоге «/root». Таким образом, достаточно ввода только одного пароля.

Спящий режим (с записью на диск)

Я остановлюсь кратко на этой теме, потому что она еще не была документирована надлежащим образом в других местах. Настройка вашего компьютера на гибернацию можно сделать в любое время, не обязательно это делать во время установки Slackware. Предположим, вы хотите использовать раздел подкачки «/dev/cryptvg/swap» для гибернации, то необходимо выполнить следующие шаги:

  • 1)Добавьте в файл «/etc/lilo.conf» в параметр «append = » строку «resume=/dev/cryptvg/swap». В конечном итоге параметр «append» будет выглядеть так:
      append = "vt.default_utf8=0 resume=/dev/cryptvg/swap"
  • 2) Добавьте к команде mkinitrd дополнительный параметр «-h /dev/cryptvg/swap», чтобы создать initrd с поддержкой восстановления из раздела подкачки. Не забудьте запустить «LILO» после создания нового файла initrd.gz!

Замечание о пользовательских ядрах

Если вы хотите собрать собственное ядро для работы с LUKS шифрованными разделами, то Вам необходимо включить по меньшей мере, следующие два варианта в файл конфигурации ядра:

 Multiple devices driver support (RAID and LVM) --->
    <*> Device mapper support
    <*> Crypt target support 

Это равносильно следующим строкам в файле .config:

   CONFIG_BLK_DEV_DM=y
   CONFIG_DM_CRYPT=y

Не собирайте их в качестве модуля! Они необходимы в ядре!

USB-клавиатуры и LUKS

Если вы создали зашифрованный корневой раздел, для ввода пароля вам необходим доступ к клавиатуре. Если у вас USB клавиатура, то может потребоваться добавить модули «uhci-hcd» и «usbhid» в initrd образ. Также отметим, что если вы используете не американскую клавиатуру, вы можете использовать параметр «-l» в команде «mkinitrd» для добавления поддержки этой клавиатуры в initrd.

Сценарий, помощник создания mkinitrd

Пакет mkinitrd в Slackware 14.0 (и выше), поставляется со сценарием под названием «mkinitrd_command_generator.sh». Если вы запустите этот сценарий, он проанализирует конфигурацию Slackware и сделает умное предложение о том, как составить команду «mkinitrd» для того, чтобы создать initrd.gz со всеми колоколами и свистками. Сценарий распознает версию ядра, корневой раздел и файловую систему, он узнает, используете ли вы LUKS и(или) LVM и определит, какие модули ядра необходимы initrd для монтирования корневой файловой системы. Следующая команда избавит вас от головной боли, проверьте сами:

     # /usr/share/mkinitrd/mkinitrd_command_generator.sh -r

Изучите и сравните выданную строку, например,как эта (потому что система может дать различные значения параметров):

   mkinitrd -c -k 4.4.14-smp -m ext4 -f ext4 -r /dev/cryptvg/root -C /dev/sdx2 -L

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

Вы можете скопировать и вставить этот вывод в командную строку, а также любые другие параметры, которые нужны, такие как «-h», чтобы указать раздел гибернации или «-l», чтобы указать, что вы используете не американскую раскладку клавиатуры. Вы даже можете запустить сценарий в полном интерактивном режиме с помощью параметра «-i», и он проведет вас через процесс создания mkinitrd в командной строке.

Окружение рабочего стола

Вероятно, вы не захотите, чтобы зашифрованные тома появились на рабочем столе, например, KDE или Xfce как монтируемые устройства, поэтому что-то вроде нижеследующего должно этому препятствовать:

# cat /etc/udev/rules.d/99-ignore-luksdevs-on-desktop.rules
KERNEL=="sdx2", ENV{UDISKS_IGNORE}="1"

Удачи вам в новой установке Slackware на зашифрованный раздел(ы)!


Автор:
Eric Hameleers alien@slackware.com 18-сент-2012
Под редакцией:
Robby Workman rworkman@slackware.com 9 марта 2017
URLs:
http://www.slackware.com/~alien/dokuwiki/doku.php?id=slackware:setup

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