💾 Archived View for tilde.team › ~rami › redhat_luks.gmi captured on 2023-12-28 at 16:13:08. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2023-04-20)

-=-=-=-=-=-=-

~Rami ₪ MANUALS

רמי

SUBJECT: LUKS2: Создание и шифрование разделов

AUTHOR: Rami Rosenfeld

DATE: 12/09/22; upd. 10/04/2023

TIME: 15.00

LANG: ru, en

LICENSE: GNU FDL 1.3

TAGS: gnu, gnome, software, opensource, linux, system, man, manual, bash, privacy, security, rhel, centos, mate, xfce, lxde, spin, de, systemd, systemctl, selinux, firewalld, dnf, rpm, luks

LUKS2: Создание и шифрование разделов

INTRO

Анализируемые операции состоят из двух частей:

- Раздел 1. Подготовка и форматирование носителя;

- Раздел 2. Создание шифрованного раздела.

Важно! Будьте особо осторожны - приводимые операции полностью уничтожат содержимое вашего носителя без возможности восстановления.

Важно! Не ошибитесь в именах носителей и разделов. Так, "/dev/sdb" и "/dev/sdb1" - это НЕ одно и то же! "/dev/sdb" - это общее имя физического носителя, а "/dev/sdb1" - первый раздел на нем.

Важно! Не перепутайте: в вашем конкретном случае носитель (винчестер HDD/SSD, USB-Flash, SD-карта и т.п.) может иметь другое имя, например sda, sdс. Уточняйте название командой "fdisk -l".

Важно! В случае с возникновением каких-то проблем в работе с fdisk, в частности - при появлении сообщения:

This disk is currently in use - repartitioning is probably a bad idea. It's recommended to umount all file systems, and swapoff all swap partitions on this disk. (...)

выполните предварительно, т.е. в самом начале:

fdisk --wipe auto /dev/sdb

Устройство не содержит стандартной таблицы разделов.

Создана новая метка DOS с идентификатором 0x7f182fe4.

и затем продолжите работу по приводимому алгоритму.

Примечание: Аналогичные операции легко осуществимы не только из консоли, но и при помощи более удобных способов (с применением GUI). Например, используя пакет "Диски" (GNOME-Disks) в GNOME или MATE.

NOTE

Раздел 1. FDISK: Подготовка и форматирование носителя

(в рассматриваемом примере - USB-Flash 4 Gb; FAT32)

fdisk -l

(данные сокращены):

Диск /dev/sdb: 3,96 GiB, 4246732800 байт, 8294400 секторов

Disk model: USB DISK

Единицы: секторов по 1 * 512 = 512 байт

Размер сектора (логический/физический): 512 байт / 512 байт

Размер I/O (минимальный/оптимальный): 512 байт / 512 байт

Тип метки диска: dos

Идентификатор диска: 0x1486eb19

Устр-во Загрузочный Начало Конец Секторы Размер Идентификатор Тип

/dev/sdb1 2048 8294399 8292352 4G c W95 FAT32 (LBA)

Операция производится до автопрерывания из-за появления ошибки о нехватке свободного места. Это действие необходимо, если используется носитель, хранивший ранее критичные данные, следы от которых следует уничтожить:

dd if=/dev/zero of=/dev/sdb1 bs=4K

dd: ошибка записи '/dev/sdb1': На устройстве не осталось свободного места

1036545+0 записей получено

1036544+0 записей отправлено

4245684224 байт (4,2 GB, 4,0 GiB) скопирован, 1276,59 s, 3,3 MB/s

Примечание: В зависимости от объема носителя - это длительная операция.

Примечание: Заполнение пространства нулями - ненадежная операция. Для повышения уровня безопасности применяйте команды shred и wipe (уничтожение файлов и заполнение носителями псевдослучайными данными в несколько проходов) - см. отдельное руководство в разделе Manuals.

После выполнения - отмонтируйте носитель sdb средствами системы. Извлеките его и снова вставьте в порт USB.

fdisk /dev/sdb

Добро пожаловать в fdisk (util-linux 2.37.4).

Изменения останутся только в памяти до тех пор, пока вы не решите записать их.

Будьте внимательны, используя команду write.

Команда (m для справки):

m

Справка:

DOS (MBR)

a переключение флага загрузки

b редактирование вложенной метки диска BSD

c переключение флага dos-совместимости

Общие

d удалить раздел

F показать свободное неразмеченное пространство

l список известных типов разделов

n добавление нового раздела

p вывести таблицу разделов

t изменение типа раздела

v проверка таблицы разделов

i вывести информацию о разделе

Разное

m вывод этого меню

u изменение единиц измерения экрана/содержимого

x дополнительная функциональность (только для экспертов)

Сценарий

I загрузить разметку из файла сценария sfdisk

O записать разметку в файл сценария sfdisk

Записать и выйти

w запись таблицы разделов на диск и выход

q выход без сохранения изменений

Создать новую метку

g создание новой пустой таблицы разделов GPT

G создание новой пустой таблицы разделов SGI (IRIX)

o создание новой пустой таблицы разделов DOS

s создание новой пустой таблицы разделов Sun

== Конец справки ==

Проверка таблицы разделов:

p

Удаление существующего раздела (если он существует):

d

Выбранный раздел 1

Раздел 1 был удален.

Создание нового раздела:

n

Тип раздела

p основной (0 primary, 0 extended, 4 free)

e расширенный (контейнер для логических разделов)

Выберите (по умолчанию - p):

p

Номер раздела (1-4, default 1):

1

Первый сектор (2048-8294399, default 2048):

(для подтверждения нажмите ENTER)

Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-8294399, default 8294399):

(для подтверждения нажмите ENTER)

Создан новый раздел 1 с типом 'Linux' и размером 4 GiB.

w

Таблица разделов была изменена.

Вызывается ioctl() для перечитывания таблицы разделов.

Синхронизируются диски.

После записи изменений программа закончит работу.

fdisk -l /dev/sdb

mkfs.ext2 /dev/sdb1

mke2fs 1.46.3 (27-Jul-2021)

Creating filesystem with 1036544 4k blocks and 259584 inodes

Filesystem UUID: c6cb57ae-cb18-4ae1-b72e-196320540d4b

Superblock backups stored on blocks:

32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: done

Writing inode tables: done

Writing superblocks and filesystem accounting information: done

Раздел 2. CRYPTSETUP: Cоздание шифрованного раздела

Операция выполняется на подготовленной флешке, отформатированной в ext2, шифруя носитель алгоритмом AES-256. Будет предложено дважды ввести новый пароль:

cryptsetup luksFormat --hash=sha512 --key-size=512 --cipher=aes-xts-plain64 --verify-passphrase /dev/sdb

ПРЕДУПРЕЖДЕНИЕ! Устройство /dev/sdb уже содержит подпись раздела «dos».

ПРЕДУПРЕЖДЕНИЕ! Данные на /dev/sdb будут перезаписаны без возможности восстановления.

Вы уверены? (введите «yes» заглавными буквами):

YES

Предупреждение при выборе слабого пароля (парольной фразы):

Ошибка при проверке стойкости пароля: Пароль должен содержать не менее 8 символов

Введите парольную фразу для /dev/sdb:

[Ввод парольной фразы]

Парольная фраза повторно:

[Ввод парольной фразы]

Примечание: Выбирайте только надежные пароли, например: maSW#_84h@liBq(%

cryptsetup luksOpen /dev/sdb USB

где "USB" - имя носителя в mapper.

Введите парольную фразу для /dev/sdb:

[Ввод парольной фразы]

mkfs.ext2 /dev/mapper/USB -L my

где "my" - метка носителя.

mke2fs 1.46.3 (27-Jul-2021)

Creating filesystem with 1032704 4k blocks and 258560 inodes

Filesystem UUID: ed1027ff-82ac-4a87-8509-5b459abf5bff

Superblock backups stored on blocks:

32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: done

Writing inode tables: done

Writing superblocks and filesystem accounting information: done

Примечание: Точка монтирования - каталог "USB" в домашнем каталоге пользователя с именем "user" - должен быть создан заранее:

mkdir /home/user/USB

Примечание: Обратите внимание, что в настоящее время права доступа к точке монтирования принадлежат администратору (root).

mount /dev/mapper/USB /home/user/USB

chown -R username:usergroup /home/user/USB

где username:usergroup - имя и группа текущего пользователя (не root'a).

Примечание: В RHEL, Fedora, CentOS (если непривилегированный пользователь - единственный в системе; его UID - 1000) лучше применить такую команду:

chown -R 1000:1000 /home/user/USB

где 1000 и 1000 - уникальные идентификаторы пользователя и его группы по умолчанию.

chmod -R 700 /home/user/USB

Криптоконтейнеры и крипторазделы LUKS имеют сразу несколько пустых "слотов" (ячеек) для хранения разных парольных фраз. Таким образом, для созданного раздела LUKS можно добавить другие пароли.

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

cryptsetup luksAddKey /dev/sdb

Введите любую существующую парольную фразу:

[Ввод ПЕРВОЙ парольной фразы]

Введите вторую парольную фразу для слота ключа:

[Ввод НОВОЙ - ВТОРОЙ! - парольной фразы]

Парольная фраза повторно:

[Ввод НОВОЙ - ВТОРОЙ! - парольной фразы]

Удаление дополнительной парольной фразы:

Первоначальный поиск идентификатора ключа:

cryptsetup luksDump /dev/sdb

(информация сокращена)

LUKS header information

Version: 2

Epoch: 4

Metadata area: 16384 [bytes]

Keyslots area: 16744448 [bytes]

UUID: 75dfcd79-c723-4c32-8456-90586c1641cd

Label: (no label)

Subsystem: (no subsystem)

Flags: (no flags)

Keyslots:

0: luks2

Key: 512 bits

Priority: normal

Cipher: aes-xts-plain64

Cipher key: 512 bits

1: luks2

Key: 512 bits

Priority: normal

Cipher: aes-xts-plain64

Cipher key: 512 bits

Удаление ключа из слота 1 (0 - первоначальный, т.е. основной слот):

cryptsetup luksKillSlot /dev/sdb 1

Введите любую оставшуюся парольную фразу:

[Ввод парольной фразы слота 0, т.е. ПЕРВОЙ парольной фразы или любой другой, кроме "1"]

Важно! Команда luksDelKey является устаревшей. Она заменена на luksKillSlot.

cryptsetup luksErase dev/sdb

Важно! Эта операция удалит все существующие парольные фразы из всех слотов. Она необратима, информация восстановлению не подлежит! Парольная фраза при выполнении этой команды НЕ(!) запрашивается!

umount /dev/mapper/USB

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

dd if=/dev/urandom of=/home/user/my_secret.key bs=512 count=4

4+0 записей получено

4+0 записей отправлено

2048 байт (2,0 kB, 2,0 KiB) скопирован, 0,00214979 s, 953 kB/s

Важно! Далее выполните все подготовительные команды, связанные с подготовкой носителя, описанные выше.

Затем ключевой файл используется вместо пароля при создании LUKS-раздела:

cryptsetup luksFormat --hash=sha512 --key-size=512 --cipher=aes-xts-plain64 /dev/sdb /home/user/my_secret.key

Чтобы открыть такой раздел, выполните команду:

cryptsetup -d /home/user/my_secret.key luksOpen /dev/sdb USB

Подробнее см.:

man cryptsetup

Configuring LUKS: Linux Unified Key Setup

Encrypting drives using LUKS

₪ Back to home ₪

🄯 Rami Rosenfeld, 2022-2023. GNU FDL 1.3.