Luks partition setup
Содержание |
Настройка динамически шифруемого 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).
- Шифрование "на лету" кушает вычислительные ресурсы компьютера.