Не секрет, что на сегодняшний день шифрование данных – единственный, пожалуй, способ, как-то их сохранить. Сегодня мы узнаем, как создать шифрованный раздел в Linux при помощи стандарта luks (Linux Unified Key Setup). Буду приводить для примера скриншоты из операционки CentOS Linux.
Итак, прежде всего заготовим раздел, который будем шифровать. В рамках своей виртуальной машины я создал новый диск, подключил его к интерфейсу SATA, в системе появилось устройство /dev/sdb
Создадим на нем основной раздел:
# fdisk /dev/sdb
Создали 1 раздел (sdb1), отвели ему всё свободное место.
Отлично, теперь отформатируем раздел /dev/sdb1 с использованием средств криптозащиты по парольной фразе. Нам будет предложено ввести пароль. Повторим его дважды, чтобы не ошибиться.
# cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb1
По умолчанию используется алгоритм AES 256bit. При необходимости можно выбрать другой алгоритм, указав ключи -c алгоритм -s длина ключа
# cryptsetup -c aes -s 1024 --verbose --verify-passphrase luksFormat /dev/sdb1
Затем активируем криптоконтейнер под именем safe:
# cryptsetup luksOpen /dev/sdb1 safe
В результате чего у нас создается новое блочное устройство в каталоге /dev/mapper/ с именем safe.
Создаем файловую систему:
# mkfs.ext3 /dev/mapper/safe
Готово.
Что делать, если мы хотим, чтобы наш раздел активировался каждый раз при старте системы (разумеется, спрашивая парольную фразу)?
Отредактируем файл /etc/crypttab, который похож на /etc/fstab
# vim /etc/crypttab
Допишем туда строку:
safe /dev/sdb1 none
А в файл /etc/fstab следующее:
/dev/mapper/safe /safe ext3 defaults 0 0
Готово.
Так, ситуация. Мы создали криптованый раздел. Знаем ключ. Можно ли сделать так, чтобы раздел был доступен не только по нашему ключу, но и по другому. То есть хотим дать доступ “Васе”, чтобы он мог работать наравне с нами. Легко.
Добавим ещё один ключ в криптоконтейнер.
Всего можно создать до 8-ми ключей, каждый из которых помещается в свой слот.
Показать занятые слоты можно так:
# cryptsetup luksDump /dev/sdb1
Как видим, заняты слоты 0 и 1. Вместо паролей можно использовать и ключевые файлы.
Показать статус криптоконтейнера можно так:
# cryptsetup status safe
Практический пример.
Цель: Защитить USB устройство от назойливых глаз.
Подключим флешку к нашей системе:
Флешка определилась как девайс sdc. Это значит, что появилось устройство /dev/sdc. Если на флешке были разделы fat или ntfs, то лучше информацию куда-нибудь скинуть, потому как после шифрования устройства всё пропадёт.
Итак, можем разметить флешку с помощью fdisk, можем оставить как есть.
# cryptsetup luksFormat /dev/sdc
Вводим парольную фразу.
Теперь подключим наше шифрованное устройство, чтобы разметить его под новую файловую систему:
# cryptsetup luksOpen /dev/sdc flash
Теперь у нас спросят парольную фразу, после ввода которой в системе появится новое устройство /dev/mapper/<имя>, в нашем случае flash.
Создадим файловую систему на этом устройстве:
# mkfs.ext3 /dev/mapper/flash
Готово. Ну чтож, пора создать ключи, по которым будет осуществляться доступ к устройству. Ключей можно заготовить несколько (всего до 8-ми слотов, хотя 0-ой слот уже занят под парольную фразу, но его можно удалить).
# dd if=/dev/urandom of=~/keyfile.key bs=1 count=256
Таким образом создадим файл в 256 байт, забитый случайными числами. Проверить это можно так:
# xxd ~/keyfile.key
Действительно. полный рэндом. Теперь осталось добавить этот ключ в нашу флешку.
Отключим пока криптоконтейнер.
# cryptsetup luksClose flash
Добавляем ключ:
# cryptsetup luksAddKey /dev/sdc ~/keyfile.key
Нам предложат ввести парольную фразу, чтобы удостовериться, что у нас есть доступ к этому хранилищу.
Убедиться в том, что добавился новый слот можно командой:
# cryptsetup luksDump /dev/sdc
Отлично! Теперь сохраним ключ в надежное местечко.. Он нам понадобится для доступа к контейнеру.
Пример 1.
Пользователь “A” хочет закинуть на флешку файл, зная парольную фразу:
Разлочили по паролю, создав девайс mydisk, далее примонтировали mydisk в домашний каталог. Создали текстовый файл hello.txt с содержимым. Отключили контейнер.
Пример 2.
Пользователь “B” хочет прочитать файл с флешки, имея ключевой файл:
Разлочили по ключевому файлу, создали устройство flashka. Смонтировали его в домашний каталог пользователя sergey, прочитали файл – всё ок!
Ну а для посторонних людей – эта флешка будет нечитаема совершенно. Стойкость ей обеспечивает AES с длиной ключа 256 бит. Можно и большую длину ключа, но и этого хватит.
Comments: