CloudLite

8 (495) 784-61-39

Array
(
    [ELEMENT_CODE] => Kak_sozdat_shifrovannyj_LUKS_razdel_na_Linux
)

ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ

Как создать шифрованный LUKS раздел на Linux

Перед вами подробная инструкция по созданию зашифрованного раздела стандарта LUKS с помощью ключа на сервере Linux.

LUKS - это стандарт для шифрования жесткого диска Linux. Расшифровать данные на диске возможно только при наличии доступа к секретному ключу и паролю.

Плюсы LUKS:

совместимость через стандартизацию;
защита от атак с низкой энтропией;
возможность аннулирования секретной фразы;
БЕСПЛАТНО

Выбор диска для шифрования
Команда fdisk позволит проверить, какие диски существуют на сервере и доступны для шифрования:

fdisk -l


Disk /dev/sda: 10 GiB, 10737418240 bytes, 20971520 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes

/ 512 bytes I/O size (minimum/optimal): 512 bytes

/ 512 bytes Disklabel type: dos

Disk identifier: 0x0b2b4352





Device Boot Start End Sectors Size Id Type

/dev/sda1 * 2048 999423 997376 487M 83 Linux




/dev/sda2 1001470 20898437 19896968 9.5G 5 Extended

/dev/sda5 1001472 16775167 15773696 7.5G 8e Linux LVM

/dev/sda6 16777216 20898437 4121222 2G 8e Linux LVM



[...]



Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes

/ 512 bytes I/O size (minimum/optimal): 512 bytes

/ 512 bytes Disklabel type: dos




Disk identifier: 0x2b00729b

Device Boot Start End Sectors Size Id Type

/dev/sdb1 2048 41943039 41940992 20G 83 Linux


Для примера используем устройство /dev/sdb.

 

Внимание: добавление диска и создание разделов в Linux.

 

Диск для шифрования диск должен быть отмонтирован командой umount, в противном случае есть риск повреждений операционной системы. Диск отформатируется, и данные исчезнут.

 

Разметка диска

Включите утилиту parted и укажите в качестве аргумента имя диска:

parted <имя_диска>

Например:

parted /dev/sdb

Нужно разметить таблицу разделов как GPT:

(parted) mklabel gpt

Должно появиться предупреждение, что данные будут стерты, наберите Yes:



Warning: The existing disk label on /dev/sdb will be destroyed and all data on

this disk will be lost. Do you want to continue?

Yes/No? Yes


Теперь создайте один основной раздел с номером 1 на весь диск:

(parted) mkpart primary 1 -1

Выйдите из утилиты parted:

(parted) quit

Для создания 2048-битного ключа нужно указать его расположение:

sudo dd if=/dev/urandom of=<файл_ключа> bs=1024 count=2

например:

sudo dd if=/dev/urandom of=/root/secret.key bs=1024 count=2

Скорректируйте права файла, разрешив только чтение владельцу:

sudo chmod 0400 <файл_ключа>

Например:

sudo chmod 0400 /root/secret.key

Как создать и инициализировать LUKS-раздел

Обычно утилита для шифрования дисков уже установлена на Linux по умолчанию. В противном случае установите ее при любого пакетного менеджера, например apt-get:

sudo apt-get install cryptsetup

В случае попытки несанкционированного доступа к вашему диску, третьим лицам будет необходимо иметь ключ для расшифрования данных на диске. Не следует сообщать путь до ключа никому!

С помощью созданного ключа создайте LUKS-раздел:

cryptsetup luksFormat <имя_диска><номер_раздела> <файл_ключа>

Внимание: это пример с использованием ключа, также актуален способ с ключевой фразой.

Например:

cryptsetup luksFormat /dev/sdb1 /root/secret.key

Вы увидите предупреждение об уничтожении данных, большим регистром наберите YES:



WARNING!

========

This will overwrite data on /dev/sdb1 irrevocably.








Are you sure? (Type uppercase yes): YES



Свяжите ключ с разделом, что впоследствии позволит его авторизовать и скрыть подсказку пароля:

cryptsetup luksAddKey <имя_диска><номер_раздела> <файл_ключа> --key-file=<файл_ключа>

Например:

cryptsetup luksAddKey /dev/sdb1 /root/secret.key --key-file=/root/secret.key

До начала использования LUKS-раздела его следует корректно отобразить и отформатировать. Используйте опцию luksOpen для создания устройства ввода-вывода и взаимодействия с разделом:

cryptsetup luksOpen <имя_диска><номер_раздела> <устройство-ВВ> --key-file=<файл_ключа>

Например:

cryptsetup luksOpen /dev/sdb1 secret --key-file=/root/secret.key

Устройство ввода-вывода LUKS будет доступно в /dev/mapper/secret.

 

Теперь укажите размер раздела LUKS:

cryptsetup resize <устройство-ВВ>

Например:

cryptsetup resize secret

Использование опции resize без дополнительных переменных предполагает, что размер базового раздела будет занят максимальный.

 

Создайте файловую систему, например ext4:

mkfs.ext4 /dev/mapper/<устройство-ВВ>

Например:

mkfs.ext4 /dev/mapper/secret

Теперь проконтролируйте состояние устройства с помощью такой команды:

cryptsetup -v status <устройство-ВВ>

Например:

cryptsetup -v status secret

Для просмотра информации заголовка LUKS активизируйте опцию luksDump:

cryptsetup luksDump <имя_диска><номер_раздела>

например:

cryptsetup luksDump /dev/sdb1

 

Как монтировать LUKS-раздел

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

 

sudo mkdir -p /secret
sudo chmod 755 /secret

Примонтируйте устройство LUKS:

mount /dev/mapper/<устройство-ВВ> /secret

Например:

 mount /dev/mapper/secret /secret

 

Для проверки корректности примонтирования диска используйте команду:

df -h

 

Монтирование в автоматическом режиме

 

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

 

Однако в некоторых случаях актуально автоматизированное использование ключа. Узнайте UUID для зашифрованного раздела:

ls -l /dev/disk/by-uuid

Найдите UUID, соответствующий диску. В нашем примере это 550e8400-e29b-41d4-a716-446655440000.

 

Проведите экспорт переменной:

export UUID="<UUID>"

Например:

export UUID="550e8400-e29b-41d4-a716-446655440000"

Добавьте ссылку на ключ в файл /etc/crypttab:

sudo echo "secret UUID=${UUID} <файл_ключа> luks" >> /etc/crypttab

Например:

sudo echo "secret UUID=${UUID} /root/secret.key luks" >> /etc/crypttab

Теперь создайте запись в файле /etc/fstab для автоматического монтирования:

sudo echo "/dev/mapper/<устройство-ВВ> <точка_монтирования> auto" >> /etc/fstab

Например:

sudo echo "/dev/mapper/secret /secret auto" >> /etc/fstab

Проведите монтирование:

sudo mount -a

Не нашли ответа на Ваш вопрос? Напишите нам!

techsupport@cloudlite.ru - служба техподдержки

sales@cloudlite.ru - вопросы по услугам, оплате, документам и партнерству

partner@cloudlite.ru - партнерская программа