LUKS: Шифрование данных жесткого диска Linux с поддержкой NTFS в Linux

Акроним LUKS означает Linux Unified Key Setup, который является широко используемым методом дискового шифрования в ядре Linux и реализуется с помощью пакета cryptsetup.

Команда cryptsetup в командной строке шифрует объемный диск на лету, используя симметричный ключ шифрования, полученный из предоставленной фразы-пароля, которая предоставляется каждый раз при монтировании объемного диска, раздела и даже целого диска (даже USB-накопителя) в иерархии файловой системы и использует шифр aes-cbc-essiv:sha256.

Linux Hard Disk Encryption Using LUKS

Поскольку LUKS может шифровать целые блочные устройства (жесткие диски, USB-накопители, флеш-диски, разделы, группы томов и т. д.) на системах Linux, настоятельно рекомендуется для защиты съемных носителей данных, жестких дисков ноутбуков или файлов подкачки Linux и не рекомендуется для шифрования на уровне файлов.

NTFS (New Technology File System) – это проприетарная файловая система, разработанная Microsoft.

Ubuntu 14.04 полностью поддерживает шифрование LUKS и также имеет поддержку NTFS для Windows с помощью пакета ntfs-3g.

Чтобы доказать свою точку зрения в этом учебнике, я добавил новый жесткий диск (4-й) на компьютере с Ubuntu 14.04 (система ссылается на только что добавленный HDD как /dev/sdd), который будет разделен на два раздела.

  1. Один раздел (/dev/sdd1 – первичный) используется для шифрования LUKS.
  2. Второй раздел (/dev/sdd5 – расширенный) отформатирован в NTFS для доступа к данным как в системах Linux, так и в системах Windows.

Также разделы будут автоматически монтироваться в Ubuntu 14.04 после перезагрузки.

Шаг 1: Создание разделов диска

1. После того как ваш жёсткий диск физически добавлен к вашему устройству, используйте команду ls, чтобы перечислить все /dev/devices (четвёртый диск – /dev/sdd).

# ls /dev/sd*
List Partitions in Linux

2. Затем проверьте ваш недавно добавленный жёсткий диск с помощью команды fdisk.

$ sudo fdisk –l /dev/sdd
Check Linux Hard Disk

Поскольку на диск ещё не была записана файловая система, на нём ещё нет действительной таблицы разделов.

3. Следующие шаги разбивают жёсткий диск на два раздела с помощью утилиты диска cfdisk.

$ sudo cfdisk /dev/sdd

4. На следующем экране открывается интерактивный режим cfdisk. Выберите свой жёсткий диск Свободное место и перейдите к опции Новый, используя стрелки влево/вправо.

cfdisk Interactive Mode

5. Выберите тип вашего раздела как Основной и нажмите Enter.

Select Your Partition Type

6. Запишите желаемый размер раздела в МБ.

Write Down Partition Size

7. Создайте этот раздел в Начале свободного места на жёстком диске.

Create a Partition

8. Затем перейдите к опции Тип раздела и нажмите Enter.

Partition Type

9. На следующем запросе будет представлен список всех типов файловых систем и их числового кода (Hex-номер). Этот раздел будет зашифрован с помощью Linux LUKS, поэтому выберите код 83 и снова нажмите Enter, чтобы создать раздел.

Enter File System Type

10. Первый раздел создан, и предложение утилиты cfdisk возвращается к началу. Чтобы создать второй раздел, используемый как NTFS, выберите оставшееся Свободное место, перейдите к опции Новый и нажмите клавишу Enter.

Create New Partition

11. На этот раз раздел будет Логический расширенный. Так что перейдите к опции Логический и снова нажмите Enter.

Select Logical Partition Type

12. Снова введите размер раздела. Для использования оставшегося свободного места в качестве нового раздела оставьте значение по умолчанию и просто нажмите Enter.

Enter Size of Partition

13. Снова выберите код типа раздела. Для файловой системы NTFS выберите код тома 86.

Select Partition Type

14. После проверки и подтверждения разделов выберите Запись, ответьте yes на следующий вопрос интерактивного приглашения, затем Выйти, чтобы выйти из утилиты cfdisk.

Write Partition Table to Disk
Confirm Changes
Quit to leave cfdisk utility

Поздравляем! Ваши разделы успешно созданы и теперь готовы к форматированию и использованию.

15. Чтобы еще раз проверить таблицу разделов диска, выполните снова команду fdisk, которая покажет подробную информацию о таблице разделов.

$ sudo fdisk –l /dev/sdd
Confirm Parition Table

Шаг 2: Создание файловой системы раздела

Файловая система NTFS

16. Чтобы создать файловую систему NTFS на втором разделе, выполните команду mkfs.

$ sudo mkfs.ntfs /dev/sdd5
Create NTFS Filesystem

17. Чтобы сделать раздел доступным, его необходимо смонтировать в файловой системе на точку монтирования. Смонтируйте второй раздел на четвёртом жёстком диске в точку монтирования /opt с помощью команды mount.

$ sudo mount /dev/sdd5 /opt

18. Затем проверьте, доступен ли раздел и перечислен ли он в файле /etc/mtab, используя команду cat.

$ cat /etc/mtab
Check Partition Availability

19. Чтобы отмонтировать раздел, используйте следующую команду.

$ sudo umount /opt
EXT4 LUKS

20. Убедитесь, что пакет cryptsetup установлен в вашей системе.

$ sudo apt-get install cryptsetup		[On Debian Based Systems]

# yum install cryptsetup				[On RedHat Based Systems]

21. Теперь настало время отформатировать первый раздел на четвертом жестком диске с файловой системой ext4, выполнив следующую команду.

$ sudo luksformat  -t ext4  /dev/sdd1

Ответьте заглавной буквой YES на вопрос «Вы уверены?» и три раза введите желаемую фразу-пароль.

Format Partition

Примечание: В зависимости от размера вашего раздела и скорости HDD создание файловой системы может занять некоторое время.

22. Вы также можете проверить статус устройства раздела.

$ sudo cryptsetup luksDump  /dev/sdd1
Verify Partition Status

23. LUKS поддерживает максимум 8 добавленных паролей. Чтобы добавить пароль, используйте следующую команду.

$ sudo cryptsetup luksAddKey /dev/sdd1
Add a Password

Чтобы удалить пароль, используйте.

$ sudo cryptsetup luksRemoveKey /dev/sdd1
Remove a Password

24. Для активации этого зашифрованного раздела он должен иметь запись имени (быть инициализированным) в каталоге /dev/mapper с помощью пакета cryptsetup.

Для этого требуется следующий синтаксис командной строки:

$ sudo cryptsetup luksOpen  /dev/LUKS_partiton  device_name

Где “имя_устройства” может быть любым описательным именем, которое вам нравится! (Я назвал его моим crypted_volume). Фактическая команда будет выглядеть следующим образом.

$ sudo cryptsetup luksOpen  /dev/sdd1 crypted_volume
Active Encrypted Partition

25. Затем проверьте, есть ли ваше устройство в списке на /dev/mapper, каталоге, символической ссылке и статусе устройства.

$ ls /dev/mapper
$ ls –all /dev/mapper/encrypt_volume
Verify Encrypted Partition
$ sudo cryptsetup –v status encrypt_volume
Encrypted Partition Status

26. Теперь, чтобы сделать раздел устройства широко доступным, примонтируйте его на вашу систему под точкой монтирования с помощью команды mount.

$ sudo mount  /dev/mapper/crypted_volume  /mnt
Mount Encrypted Partition

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

27. Чтобы сделать его недоступным, просто отмонтируйте его с вашей системы и закройте устройство.

$ sudo umount  /mnt
$ sudo cryptsetup luksClose crypted_volume
Umount Encrypted Partition

Шаг 3: Автоматическое монтирование раздела

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

28. Сначала отредактируйте файл /etc/crypttab и добавьте следующие данные.

$ sudo nano /etc/crypttab
  1. Имя цели: Описательное имя для вашего устройства (см. выше пункт 22 на EXT4 LUKS).
  2. Исходный диск: Раздел жесткого диска, отформатированный для LUKS (см. выше пункт 21 на EXT4 LUKS).
  3. Файл ключа: Выберите ни один
  4. Опции: Укажите luks

Финальная строка будет выглядеть следующим образом.

encrypt_volume               /dev/sdd1          none       luks
Mount Partition Automatically

29. Затем отредактируйте /etc/fstab и укажите имя вашего устройства, точку монтирования, тип файловой системы и другие параметры.

$ sudo nano /etc/fstab

На последней строке используйте следующий синтаксис.

/dev/mapper/device_name (or UUID)	/mount_point     filesystem_type     options    dump   pass

И добавьте ваш специфический контент.

/dev/mapper/encrypt_volume      /mnt    ext4    defaults,errors=remount-ro     0     0
Add Partition Entry in Fstab

30. Чтобы получить UUID устройства, используйте следующую команду.

$ sudo blkid
Get Device UUID

31. Чтобы также добавить ранее созданный тип раздела NTFS, используйте тот же синтаксис, что и выше, на новой строке в файле fstab (здесь используется перенаправление добавления файлов в Linux).

$ sudo su -
# echo "/dev/sdd5	/opt	ntfs		defaults		0              0"  >> /etc/fstab
Add NTFS Partition in fstab

32. Чтобы проверить изменения, перезагрузите вашу машину, нажмите Enter после сообщения загрузки “Начало настройки сетевого устройства” и введите пароль вашего устройства.

Reboot Machine
Verify Partition is Mounted Automatically

Как видите, оба раздела диска были автоматически смонтированы в иерархию файловой системы Ubuntu. Как совет, не используйте автоматически зашифрованные тома из файла fstab на физически удаленных серверах, если у вас нет доступа к последовательности перезагрузки для предоставления пароля к зашифрованному тому.

Те же настройки можно применить ко всем типам съемных носителей, таким как USB-флешка, флэш-память, внешний жесткий диск и т. д., для защиты важных, секретных или чувствительных данных в случае прослушивания или кражи.

Source:
https://www.tecmint.com/linux-hard-disk-encryption-using-luks/