Luks partition setup

Материал из KLUG
Перейти к: навигация, поиск

Содержание

Настройка динамически шифруемого LUKS раздела

Краткое пошаговое руководство по созданию и началу работы с LUKS разделом

Вступление

Использование динамического шифрования позволяет предотвратить доступ к данным при утере или несанкционированном доступе к ноутбуку, дисковому накопителю данных компьютера или флеш-накопителю, при минимальном влиянии на удобство работы.
Для Linux стандартным программным средством для реализации динамического шифрования данных на блочных устройствах является Linux Unified Key Setup (LUKS).

Важное замечание: Для выполнения большинства команд этой статьи необходимы полномочия пользователя root - тщательно проверяйте все команды, ошибки могут дорого стоить! Например очень внимательным нужно быть при указании имен устройств.

Подготовка

Для примера имеется такая разбивка жесткого диска:

root@localhost:/home/someuser# fdisk -l /dev/sda

Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000defd3
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        2432    19535008+  83  Linux
/dev/sda2            2433        2556      996030   82  Linux swap / Solaris
/dev/sda3            2557        3784     9863910   83  Linux
/dev/sda4            3785       14593    86823292+  83  Linux

Предположим, раздел /dev/sda3 (9Gb) у нас не задействован и мы хотим отформатировать его в LUKS раздел для своих ценных файлов.

Paздел /dev/sda3 мог уже ранее использоваться как обычным образом отформатированный раздел с файловой системой, либо, если жесткий диск новый и раздел никогда ранее не использовался - он наверняка содержит сплошные нули. Если вы не пренебрегаете никакой возможностью усилить безопасность, то можете заполнить весь раздел хаотичными данными, чтобы низкоуровневый анализ не позволил даже отличить зашифрованные данные от остального "мусора". Однако для абсолютного большинства случаев данная процедура избыточна.

Если вы все-таки хотите предварительно заполнить дисковый раздел хаосом, выполните следующую команду (я не стал дожидаться пока утилита dd заполнит раздел полностью и выдаст сообщение об ошибке записи, что нормально):

root@localhost:/home/someuser# dd if=/dev/urandom of=/dev/sda3

Итак, есть дисковый раздел. Теперь нам нужна программа для работы с LUKS - cryptsetup. Если она еще не установлена, установите ее любым из способов, предусмотренным вашим дистрибутивом Linux.
В нашем примере для Ubuntu (подразумеваем что есть подключение к интернет или есть локальный репозиторий пакетов) выполняем:

root@localhost:/home/someuser# apt-get install cryptsetup

Также в ядре необходима поддержка device-mapper - это низкоуровневый драйвер для работы с блочными устройствами. Если у вас дистрибутивное ядро, то этот драйвер уже включен как модуль ядра (невероятно если это не так) и подгрузится автоматически, если же у вас самосборное ядро - проверьте что вы включили поддержку device-mapper и при необходимости пересоберите ядро, иначе ничего не получится.

На этом все с приготовлениями.

Форматируем, монтируем и готовим к использованию LUKS раздел

Следующая команда форматирует раздел /dev/sda3 в LUKS раздел, алгоритмом AES с длиной ключа 256 бит. Введите, подтвердите и запомните парольную фразу, только не записывайте ее, по крайней мере в небезопасном месте (если забудете парольную фразу, то не сможете получить доступ к своим файлам):

root@localhost:/home/someuser# cryptsetup -c aes -s 256 luksFormat /dev/sda3

WARNING!
========
This will overwrite data on /dev/sda3 irrevocably.

Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
Command successful.

LUKS раздел теперь есть, и с помощью парольной фразы можем его подключить, чтобы увидель наконец в системе "обычное" блочное устройство. Следующая команда подключает LUKS раздел /dev/sda3 как устройство с именем cryptdev, которое появится в каталоге /dev/mapper:

root@localhost:/home/someuser# cryptsetup luksOpen /dev/sda3 cryptdev
Enter LUKS passphrase:
key slot 0 unlocked.
Command successful.

Есть. Имя устройства cryptdev выбрано произвольно. Для системы /dev/mapper/cryptdev - самое обычное блочное устройство, каким было бы /dev/sda3 если бы мы его использовали обычным образом. Посмотрим на него:

root@localhost:/home/someuser# ls -l /dev/mapper/cryptdev
brw-rw---- 1 root disk 254,  0 2008-12-11 00:52 cryptdev

Теперь это просто дисковый раздел, и чтобы хранить данные его надо отформатировать в какую-нибудь файловую систему. В данном случае форматируем в ext3:

root@localhost:/home/someuser# mkfs.ext3 /dev/mapper/cryptdev
mke2fs 1.41.3 (12-Oct-2008)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
616512 inodes, 2465720 blocks
123286 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2524971008
76 block groups
32768 blocks per group, 32768 fragments per group
8112 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

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

root@localhost:/home/someuser# mkdir /mnt/private
root@localhost:/home/someuser# mount /dev/mapper/cryptdev /mnt/private
root@localhost:/home/someuser# df -Th /mnt/private
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/mapper/cryptdev ext3    9,3G  150M  8,7G   2% /mnt/private

Проверяем, устраивают ли нас права доступа, владелец и группа каталога, при необходимости изменяем:

root@localhost:/home/someuser# ls -ld /mnt/private
drwxr-xr-x 3 root root 4096 2008-12-11 00:54 /mnt/private
root@localhost:/home/someuser# chown someuser.someuser /mnt/private
root@localhost:/home/someuser# chmod 700 /mnt/private
root@localhost:/home/someuser# ls -ld /mnt/private
drwx------ 3 someuser someuser 4096 2008-12-11 00:54 /mnt/private

На этом все настройки закончены. Отмонтируем каталог обычным образом:

root@localhost:/home/someuser# umount /mnt/private
root@localhost:/home/someuser# df -Th /mnt/private
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda1     ext3     19G  3,1G   15G  18% /

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

root@localhost:/home/someuser# ls -l /dev/mapper/cryptdev
brw-rw---- 1 root disk 254,  0 2008-12-11 00:54 cryptdev

Отключаем устройство /dev/mapper/cryptdev:

root@localhost:/home/someuser# cryptsetup luksClose /dev/mapper/cryptdev
root@localhost:/home/someuser# ls -l /dev/mapper/cryptdev
ls: cannot access /dev/mapper/cryptdev: No such file or directory

Теперь данные закрыты.

Использование LUKS

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

Изначально данные недоступны, так что подключаем /dev/sda3 как LUKS устройство (конечно же вводим парольную фразу) и монтируем к каталогу:

root@localhost:/home/someuser# cryptsetup luksOpen /dev/sda3 cryptdev
Enter LUKS passphrase:
key slot 0 unlocked.
Command successful
root@localhost:/home/someuser# mount /dev/mapper/cryptdev /mnt/private

Все, в вашем распоряжении 9Gb свободного места в каталоге /mnt/private. Использование ничем не отличается от обычной файловой системы.

Отключаем в обратном порядке, но уже нет необходимости вводить парольную фразу:

root@localhost:/home/someuser# umount /mnt/private
root@localhost:/home/someuser# cryptsetup luksClose /dev/mapper/cryptdev

Все, данные снова в безопасности.

Заметки

  • Шифровать можно не только дисковый раздел. Если "лишнего" дискового раздела нет, можно использовать обычный файл, подключенный как loop-устройство.
  • Подключение/отключение LUKS раздела легко автоматизируется простым скриптом. Но парольную фразу для подключения всегда придется вводить вручную.
  • Драйвер dev-mapper устойчив к сбоям, но не забывайте делать резервные копии (их можно шифровать с помощью GnuPG).
  • Шифрование "на лету" кушает вычислительные ресурсы компьютера.
Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты