Как создать шифрованный раздел в системе Ubuntu 12.04

Posted by

Цель данной заметки в следующем, в системе есть неиспользуемый жесткий диск, флешка и уже на его основе сделать зашифрованный раздел применительно к моей системе Ubuntu 12.04.5 Server amd64 задействовав с поддержкой . Поясню для всех, LUKS – (аббревиатура: Linux Unified Key Setup) – упрощенный стандарт использования шифрования на дисках. Работа LUKS строится следующим образом, в заголовок партиции добавляется информация об алгоритме шифрования, который человеку не надо помнить, а также возможность задавать несколько паролей доступа к устройству и возможность менять его без обнуления/форматирования устройства.

Информация по смонтированному диску в систему:

ekzorchik@srv-mon:~$ sudo fdisk -l /dev/sdb

Disk /dev/sdb: 8589 MB, 8589934592 bytes

Установим необходимые пакеты для работы с шифрованием:

ekzorchik@srv-mon:~$ sudo apt-get install cryptsetup libcryptsetup4 lvm2 -y

Первое создадим раздел ориентированный на работу LVM:

ekzorchik@srv-mon:~$ sudo fdisk /dev/sdb -b 2048

n,p,1,enter,+7G,t,8e,p,w

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

ekzorchik@srv-mon:~$ sudo dd if=/dev/urandom of=/root/keyfile bs=1024 count=4

[sudo] password for ekzorchik:

4+0 records in

4+0 records out

4096 bytes (4.1 kB) copied, 0.000462886 s, 8.8 MB/s

Дадим права на данный ключ только пользователю root и с правами только на чтение:

ekzorchik@srv-mon:~$ sudo chmod 0400 /root/keyfile

Добавим для созданного раздела заголовок, что он будет работать как шифрованный:

ekzorchik@srv-mon:~$ sudo cryptsetup -y -v luksFormat /dev/sdb1

WARNING!

========

This will overwrite data on /dev/sdb1 irrevocably.

Are you sure? (Type uppercase yes): YES — вводим заглавными буквами

Enter LUKS passphrase:712mbddr@

Verify passphrase:712mbddr@

Command successful.

Добавим данный ключ файл при шифровании раздела:

ekzorchik@srv-mon:~$ sudo cryptsetup luksAddKey /dev/sdb1 /root/keyfile

[sudo] password for ekzorchik:712mbddr@

(вводим пароль, под которым будет производиться доступ к созданному разделу)

Enter any passphrase:712mbddr@

ekzorchik@srv-mon:~$

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

ekzorchik@srv-mon:~$ sudo cryptsetup luksDump /dev/sdb1

LUKS header information for /dev/sdb1

Version: 1

Cipher name: aes

Cipher mode: cbc-essiv:sha256

Hash spec: sha1

Payload offset: 4096

MK bits: 256

MK digest: 3d b4 8a df be 3e 30 c4 ec 68 00 32 3c f4 c5 c7 40 07 91 31

MK salt: 17 09 2f 33 a0 e7 93 3b fc 1f cd bd a7 57 83 a3

77 9f 6c 13 f2 f1 7e 8e 67 fa 74 53 ae c2 20 aa

MK iterations: 41500

UUID: e6e959f7-e53f-443f-823b-314846421cdd

Key Slot 0: ENABLED

Iterations: 178650

Salt: 39 f5 10 db ff 6a dc d8 66 43 fe f3 ec 39 84 94

1e 1b c7 99 e3 f5 bf f0 fa f5 d0 93 f0 20 af a9

Key material offset: 8

AF stripes: 4000

Key Slot 1: ENABLED

Iterations: 183735

Salt: ad 84 9d 20 ea d2 cf a5 57 2f bd cc 4d 61 26 70

6e 7a 8d 0b 69 78 94 75 14 2b 56 57 9e 98 8a 0b

Key material offset: 264

AF stripes: 4000

Key Slot 2: DISABLED

Key Slot 2: DISABLED

Key Slot 3: DISABLED

Key Slot 4: DISABLED

Key Slot 5: DISABLED

Key Slot 6: DISABLED

Key Slot 7: DISABLED

Если нужно удалить ключ, то:

ekzorchik@srv-mon:~$ sudo cryptsetup luksKillSlot /dev/sdb1 1

Enter any remaining LUKS passphrase:<указываем_пароль_712mbddr@>

Также можно узнать – зашифрован диск или нет, с помощью просмотра заголовка диска:

ekzorchik@srv-mon:~$ sudo hexdump -C /dev/sdb1 | head

[sudo] password for ekzorchik:

00000000 4c 55 4b 53 ba be 00 01 61 65 73 00 00 00 00 00 |LUKS….aes…..|

00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |…………….|

00000020 00 00 00 00 00 00 00 00 63 62 63 2d 65 73 73 69 |……..cbc-essi|

00000030 76 3a 73 68 61 32 35 36 00 00 00 00 00 00 00 00 |v:sha256……..|

00000040 00 00 00 00 00 00 00 00 73 68 61 31 00 00 00 00 |……..sha1….|

00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |…………….|

00000060 00 00 00 00 00 00 00 00 00 00 10 00 00 00 00 20 |…………… |

00000070 3d b4 8a df be 3e 30 c4 ec 68 00 32 3c f4 c5 c7 |=….>0..h.2<…|

00000080 40 07 91 31 17 09 2f 33 a0 e7 93 3b fc 1f cd bd |@..1../3…;….|

00000090 a7 57 83 a3 77 9f 6c 13 f2 f1 7e 8e 67 fa 74 53 |.W..w.l…~.g.tS|

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

Далее подмонтирую шифрованный раздел открыв его на произвольную метку, в моем случае я ее именую, как mydata:

ekzorchik@srv-mon:~$ sudo cryptsetup luksOpen /dev/sdb1 mydata

Enter passphrase for /dev/sdb1:712mbddr@

ekzorchik@srvmon:~$

Проверяю, что мое устройство с назначенной меткой видится в каталоге /dev/mapper/:

ekzorchik@srv-mon:~$ ls /dev/mapper/

control mydata srv—mon—vg-root srv—mon—vg-swap_1

Далее я создам новую файловую систему на подмонтированном шифрованном разделе:

ekzorchik@srv-mon:~$ sudo mkfs.ext4 /dev/mapper/mydata

Далее я создам директорию в системе, на которую буду монтировать шифрованный раздел с файловой системой под него:

ekzorchik@srv-mon:~$ sudo mkdir /media/mydata

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

ekzorchik@srv-mon:~$ sudo mount /dev/mapper/mydata /media/mydata

Далее проверю состояние назначенной шифрованной метки на раздел:

ekzorchik@srv-mon:~$ sudo cryptsetup status mydata

/dev/mapper/mydata is active and is in use.

type: LUKS1

cipher: aes-cbc-essiv:sha256

keysize: 256 bits

device: /dev/sdb1

offset: 4096 sectors

size: 14675968 sectors

mode: read/write

Для того, чтобы после перезагрузки шифрованный раздел получал метку автоматические добавим строку в файл /etc/crypttab:

Синтаксис: <target name> <source device> <key file> <options>

Но предварительно нужно узнать идентификатор дискового раздела /dev/sdb1:

ekzorchik@srv-mon:~$ sudo lsblk -o name,uuid,mountpoint | grep sdb

sdb

└─sdb1 e6e959f7-e53f-443f-823b-314846421cdd

Далее чтобы метка монтировалась на каталог в системе автоматически при загрузке системы делаю так:

ekzorchik@srv-mon:~$ sudo nano /etc/fstab

/dev/mapper/mydata /media/mydata ext4 rw 0 0

Сохраняем внесенные изменения.

ekzorchik@srv-mon:~$ sudo nano /etc/crypttab

mydata /dev/disk/by-uuid/e6e959f7-e53f-443f-823b-314846421cdd /root/keyfile luks

Сохраняем внесенные изменения.

После изменения /etc/crypttab файла, нужно переобновить initramfs:

ekzorchik@srv-mon:~$ sudo update-initramfs -u -k all

update-initramfs: Generating /boot/initrd.img-3.13.0-35-generic

update-initramfs: Generating /boot/initrd.img-3.11.0-15-generic

А уже после можно перезагрузить систему и проверить, как система автоматически монтирует зашифрованный том:

ekzorchik@srvmon:~$ sudo reboot

Проверяю, смонтировался ли каталог, ответ ниже – «ДА».

ekzorchik@srv-mon:~$ df -h | grep mydata

/dev/mapper/mydata 6.8G 16M 6.4G 1% /media/mydata

На заметку:

Иногда может понадобиться срочно, закрыть шифрованный раздел, делается это так:

ekzorchik@srv-mon:~$ sudo umount /media/mydata/

[sudo] password for ekzorchik:

ekzorchik@srv-mon:~$ sudo cryptsetup luksClose mydata

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

Либо указывая пароль к шифрованному разделу:

ekzorchik@srv-mon:~$ sudo cryptsetup luksOpen /dev/sdb1 mydata

Enter passphrase for /dev/sdb1:<указываем пароль на шифрованный раздел>,в моем случае это: 712mbddr@

Либо указываем путь к файлу с ключом:

ekzorchik@srv-mon:~$ sudo cryptsetup —key-file /root/keyfile luksOpen /dev/sdb1 mydata

И монтируем на каталог предопределенный в файле /etc/fstab:

ekzorchik@srv-mon:~$ sudo mount –a

Работает. Вот как с помощью нескольких команд можно превратить небольшой раздел диска в шифрованный криптоконтейнер, защищенный как специфическим паролем (сложным) или на основе ключа файла. Второй способ конечно же более интересный и позволяет избавиться от запоминания того множества паролей которые Системный администратор и так вынужден помнить наизусть, в тоже время я являюсь противником того, что пароли нужно записывать и хранить. Правильней же организовывать доступ по ключам. На этом я хотел бы подвести итог это заметки и попрощаться так сказать до новый встреч. Следите за обновлениями. Удачи, с уважением автор блога ekzorchik.

One comment

  1. Спасибо за заметку, все пошагово работает. Многое объяснили. Вот бы побольше таких реальных заметок было на блогах.

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

5 × 3 =