Новости:

Форуму исполнилось 12 лет!

Мы в матрице .
Мы в телеге .

Главное меню

Slackware / README CRYPT.TXT

Автор Graf, 18 июня 2012, 13:44:14

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Graf

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

==== Slackware 13.37 =====

Перевел: Graf
Дата перевода: июнь 2012 г.

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

Содержание:                                                                                                                                               
                                                                                                                                                         
* Введение                                                                                                                                               
* Используем cryptsetup во время установки Slackware                                                                                                     
* Шифрование "/home" раздела                                                                                                                             
* Шифрованние swap                                                                                                                                       
* Шифрованние корневой файловой системы (root)                                                                                                           
* Объединение LUKS и LVM                                                                                                                                 
* Дополнительные фразы (пароли), ключевые файлы                                                                                                           
* Спящий режим (с записью на диск)                                                                                                                       
* Замечание о пользовательских ядрах                                                                                                                     
* USB-клавиатуры и LUKS                                                                                                                                   
* Сценарий, помощник создания mkinitrd

== Введение ==
   В современных дистрибутивах 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
   Подготовка раздела для шифрования. Вам будет предложено дважды ввести пароль. Обратите внимание, что пароль не ограничивается одним словом. Фраза может содержать пробелы. Мы будем использовать размер ключа 256 бит. По умолчанию шифр "aes", в режиме "cbc-essiv:sha256", который является достаточно безопасным.
# cryptsetup -s 256 -y luksFormat /dev/sdx2
   Вы можете вывести информацию о зашифрованных разделах на консоль, выполнив следующую команду:
# cryptsetup luksDump /dev/sdx2
   Теперь мы "откроем" зашифрованный раздел и создадим подключаемое блочное устройство при помощи devicemapper. Это устройство будем использовать как обычный раздел диска когда дойдем до определенного пункта в "setup". Узлы подключенного устройства будут создаваться в каталоге "/dev/mapper". Команда запросит у вас пароль который вы ввели во время операции "luksFormat". Последний аргумент, команды это имя подключенного устройства. Назовем его crypthome (вы можете выбрать любое название). Оно будет доступно для использования в качестве блочного устройства "/dev/mapper/crypthome".
# cryptsetup luksOpen /dev/sdx2 crypthome
   Мы закончили нашу подготовку, и настало время начать установку Slackware. Эта установка не отличается от той к которой  вы привыкли. Единственное заметное отличие заключается в названии устройств, которые вам будет предложено выбрать для разметки разделов. Обязательно прочитайте до конца этот текст, хотя бы для того, чтобы узнать, какую необходимо сделать доработку, чтобы зашифрованные разделы были доступны после перезагрузки (установка пока не может делать все это автоматически).
   В установке, в разделе "ADDSWAP", продолжайте как обычно, т.е. настраивайте нормальный не зашифрованный раздел подкачки, даже если вы хотите, чтобы он был в зашифрованном виде. Мы позаботимся о шифровании раздела подкачки после установки Slackware.
   В главном меню установки , для подключения "Linux раздела" вы заметите, что для выбора появилось доступное устройство "/dev/mapper/crypthome". Сначала выберите раздел, предназначенный для корневой ('/') файловой системы, а потом "/dev/mapper/crypthome" для файловой системы "/home". Создайте на них любой тип файловой системы. Мой любимый тип остается ext3, но вы можете выбрать XFS или JFS для стабильности и скорости.

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

   В конце установки Slackware, когда вы выберите "Выход", не перезагружайтесь! Мы создадим файл конфигурации для программы cryptsetup, который называется "/etc/crypttab". Этот файл содержит информацию которая нужна программе cryptsetup для разблокирования вашего зашифрованного тома и для правильного отображение имени устройства. Файл "/etc/crypttab" содержит строки в следующем формате: "подключаемое_имя устройство пароль варианты".
   Поскольку мы все еще внутри установки, корневая файловая система нашей вновь установленной Slackware по-прежнему находится в разделе "/mnt". В нашем примере, наш зашифрованный раздел "/dev/sdx2" сопоставленный с разблокированным устройством "/dev/mapper/crypthome", должен быть внесен одной строкой  в файл "/etc/crypttab":
crypthome /dev/sdx2
Таким образом нам надо выполнить команду:
# echo "crypthome   /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" раздела. Т.е. можете зашифровать ВСЕ разделы, включая корневой. В этом случае вам придется выполнить некоторые дополнительные действия по конфигурации до перезагрузки установки Slackware.

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

   Не забудьте создать небольшой раздел, который останется в не зашифрованном виде. Во время установки смонтируйте его в раздел "/boot". Этот раздел будет использоваться для ядра и initrdcryptsetup и дополнительными необходимыми модулями ядра). Будем считать, что Slackware является единственной операционной системой на компьютере, так что вы можете указать LILO установку загрузчика в MBR (которая используется по умолчанию). LILO может загрузить и Windows, если она у вас уже была установлена на компьютере, так что даже при двойной загрузке ситуация должна быть безопасна при использовании MBR. С другими дистрибутивами, присутствующими на компьютере, все может быть немного сложнее - возможно, вам надо будет установить LILO в раздел /boot.
    Выполните установку Slackware так же, как я описал выше, создайте дополнительные зашифрованные разделы и сопоставьте их с соответствующими названиями - для данного примере я сопоставлю зашифрованный корневой раздел "/dev/sdx1" с "cryptroot". Когда выйдет запрос конфигурации LILO, укажите в нем корневой раздел "/dev/mapper/cryptroot". LILO постарается установиться, но потерпит неудачу, о чем вам и сообщит. Это ошибка записи в файл "lilo.conf", который можно отредактировать в последующих действиях. Продолжим установку до конца, выйдем из программы установки, но не будем перезагружаться.
    После того как вы вернулись в командную строку выполните "chroot" (для работы в изолированной среде). Все файловые системы уже смонтированы, и инсталлятор Slackware уже примонтировал /sys и /proc для использования их в изолированной среде ("chroot"). Мы, только, должны выполнить следующую команду:
# chroot /mnt
   Далее, теперь, когда мы находимся в изолированной среде (chroot), создадим initrd с LVM (если вы использовали логические тома) и с поддержкой шифрования - иначе ваш компьютер не сможет продолжить загрузку ядра на начальном этапе. Виртуальный диск (initrd) содержит маленькую файловую систему и инструменты, необходимые для разблокирования корневой файловой системы, так что ядро сможет запустить программу инициализации. В примере ниже команда, которая создает образ "initrd.gz" и где я предположил, что корневая файловая система "ext3", мы использовали  подключаемое устройство для корневой файловой системы "cryptroot", на реальный раздел "/dev/sdx1", по умолчанию используется SMP ядро 2 .6.37.6-SMP, и мы не стали использовать логические тома (подробнее об этом в следующем разделе):
# mkinitrd -c -k 2.6.37.6-smp -m ext3 -f ext3 -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 13.37 с образом initrd  - оно будет жаловаться, что "виртуальный(RAM) диск является слишком большим, для соответствия между ядром и 15M-16M memory hole". Мы можем жить с этим,так как "huge" ядра не предназначены для повседневного использования в любом случае. Они предназначены для установки Slackware на широкий спектр компьютеров, и именно поэтому они являются "огромными"(huge). Строка "/etc/lilo.conf" в части "Linux", должна выглядеть, примерно так:
image = /boot/vmlinuz-generic-smp-2.6.37.6-smp
   initrd = /boot/initrd.gz
   root = /dev/mapper/cryptroot
   label = linux
   read-only

   Если вы добавили, приведенный выше раздел, в качестве дополнительного, не изменяя того, что уже есть, убедитесь, что (label)метка ("Linux" в примере выше) является уникальной в файле конфигурации.
   Если у вас есть другая операционная система на вашем компьютере и нельзя установить LILO в MBR, выберите пункт меню установки "Install to superblock (Root)". В этом случае, вы должны сделать еще одно дополнительное изменение, почти в верхней части файла. Найдите строку: "boot=/dev/mapper/cryptroot", которая является устройством для корневого раздела и которая стала причиной, по которой LILO не установился. Измените название загрузочного устройства на названием небольшого незашифрованного раздела, который вы создали вначале и который установлен в "/boot". Если предположить, что название этого раздела "/dev/sdx4", "boot=" строка должна выглядеть примерно так:
boot = /dev/sdx4
   Мы закончили. Сохраните изменения, выйдите из редактора и запустить команду "LILO". Lilo выдаст несколько предупреждений, касающихся доступности разделов "/proc/partitions" и то, что LILO об этом думает, но их можно проигнорировать. Перезагрузитесь, и вы увидите строку: "Enter passphrase: ". После ввода пароля, который откроет корневую файловую систему, начнется загрузка в Slackware. Если есть другие зашифрованные разделы, то вам будет предложено ввести и для них свои пароли.

== Объединение LUKS и LVM ==
   До сих пор мы были заняты шифрованием отдельных разделов. Это все полностью функционально, но есть несколько недостатков. Один из них, это ввод пароля для каждого зашифрованного раздела (за исключением раздела подкачки, который  в Slackware шифруется случайным паролем, при каждой загрузке системы). Во-вторых, метод, используемый для шифрования раздела подкачки запрещает использование подкачки как раздела гибернации(спящий режим). А так как ''initrd'' из Slackware 13.37 поддерживает спящий режим, было бы стыдно не использовать эту функцию на вашем ноутбуке (который, из-за его мобильности, является основной целью для полного шифрования диска в любом случае).
    В этом разделе 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 -s 256 -y luksFormat /dev/sdx2
   Откроем зашифрованный раздел для создания не зашифрованного подключаемого блочного устройства. Команда запросит у вас пароль который вы ввели во время операции "luksFormat". Последний аргумент команды, это имя подключаемого устройства. Мы назовем это устройство "slackluks", потому что я сегодня не оригинален.Таким образом, подключенное устройство, которое мы будем использовать для не зашифрованных операций, будет "/dev/mapper/slackluks".
# cryptsetup luksOpen /dev/sdx2 slackluks
   Следующая часть про LVM. Создадим Physical Volume(PV) на устройстве "/dev/mapper/slackluks", Volume Group(VG) под названием "cryptvg" - можно дать любое имя - на PV, и три Logical Volumes(LV's) на VG, один для корневого раздела (7 Гб), один для раздела /home (10 ГБ) и третий, который мы будем использовать для подкачки (1 ГБ). Вы, вероятно, будете использовать другие размеры, в зависимости от ваших нужд, но сохраните суммарный размер LV меньше общего размера физического тома:
# pvcreate /dev/mapper/slackluks
# vgcreate cryptvg /dev/mapper/slackluks
# lvcreate -L 7G -n root cryptvg
# lvcreate -L 10G -n home cryptvg
# lvcreate -L 1G -n swap cryptvg

  Создать узлы устройств необходимо перед активизацией томов, а после активации можно отформатировать "swap".
# vgscan --mknodes
# vgchange -ay

  Наконец, запустите "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" и где я предположил, что корневая файловая система "ext3", работа проходит под управлением Slackware 13.37 с ядром по умолчанию 2.6.37.6-smp:
# mkinitrd -c -k 2.6.37.6-smp -m ext3 -f ext3 -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 13.37 с образом initrd - оно будет жаловаться, что "виртуальный(RAM) диск является слишком большим, для соответствия между ядром и 15M-16M memory hole". Мы можем жить с этим,так как "huge" ядра не предназначены для повседневного использования в любом случае. Они предназначены для установки Slackware на широкий спектр компьютеров, и именно поэтому они являются "огромными"(huge). Строка "/etc/lilo.conf" в части "Linux", должна выглядеть, примерно так:
image = /boot/vmlinuz-generic-smp-2.6.37.6-smp
   initrd = /boot/initrd.gz
   root = /dev/cryptvg/root
   label = linux
   read-only

  Если вы добавили, приведенный выше раздел, в качестве дополнительного, не изменяя того, что уже есть, убедитесь, что (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 2.6.37.6-smp -m ext3 -f ext3 -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 13.37, поставляется со сценарием под названием "mkinitrd_command_generator.sh". Если вы запустите этот сценарий, он проанализирует конфигурацию Slackware и сделает умное предложение о том, как составить команду "mkinitrd" для того, чтобы создать initrd.gz со всеми колоколами и свистками. Сценарий распознает версию ядра, корневой раздел и файловую систему, он узнает, используете ли вы LUKS и(или) LVM и определит, какие модули ядра необходимы initrd для монтирования корневой файловой системы. Следующая команда избавит вас от головной боли, проверьте сами:
# /usr/share/mkinitrd/mkinitrd_command_generator.sh -r
   Изучите и сравните выданную строку, например,как эта (потому что система может дать различные значения параметров):
mkinitrd -c -k 2.6.37.6-smp -m ext3 -f ext3 -r /dev/cryptvg/root -C /dev/sdx2 -L 
   Вы можете скопировать и вставить этот вывод в командную строку, а также любые другие параметры, которые нужны, такие как "-h", чтобы указать раздел гибернации или "-l", чтобы указать, что вы используете не американскую раскладку клавиатуры. Вы даже можете запустить сценарий в полном интерактивном режиме с помощью параметра "-i", и он проведет вас через процесс создания mkinitrd в командной строке.

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

Anton

Мне сказали, Слака — кака, пояснили, что я лох. Всё равно её не брошу, потому что на всех пох!

Graf

Пользуйтесь, на здоровье! :)
И, если что, тыкайте в ошибки и сами пишите ;)

Graf

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

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


Wiki формат для Slackware 15.0