Оглавление

Шифрование разделов

Linux with LUKS | Linux dm-crypt only | FreeBSD GELI | FBSD pwd only

Автор данного труда рассказывает о методах шифрования разделов диска, которые использует сам.

Linux

В данном руководстве используется Linux dm-crypt (device-mapper) на ядре 2.6. Шифровать будем раздел /dev/sdc1, это может быть любой раздел, диск, USB или файл, созданный losetup. Здесь мы будем использовать /dev/loop0. Смотрите file image partition. Device mapper использует метку для идентификации раздела, в данном примере sdc1, но это может быть любая другая строка.

Шифрование разделов диска с помощью LUKS

LUKS с dm-crypt очень удобен для шифрования разделов диска, он позволяет иметь несколько паролей для одного раздела а так-же с легкостью менять их. Что-бы проверить доступно-ли у вас использование LUKS, наберите: # cryptsetup --help, если насчет LUKS ничего не появилось, воспользуйтесь этим, Without LUKS. Для начала создайте раздел, если необходимо fdisk /dev/sdc.

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

# dd if=/dev/urandom of=/dev/sdc1          # Опционально. Только для параноиков
# cryptsetup -y luksFormat /dev/sdc1       # Это уничтожит все данные на sdc1
# cryptsetup luksOpen /dev/sdc1 sdc1
# mkfs.ext3 /dev/mapper/sdc1               # Создать файловую систему ext3
# mount -t ext3 /dev/mapper/sdc1 /mnt
# umount /mnt
# cryptsetup luksClose sdc1                # Отсоединить зашифрованный раздел

Присоединить

# cryptsetup luksOpen /dev/sdc1 sdc1
# mount -t ext3 /dev/mapper/sdc1 /mnt

Отсоединить

# umount /mnt
# cryptsetup luksClose sdc1

dm-crypt без LUKS

# cryptsetup -y create sdc1 /dev/sdc1      # Или любой другой раздел, типа /dev/loop0
# dmsetup ls                               # Проверить, покажет: sdc1 (254, 0)
# mkfs.ext3 /dev/mapper/sdc1               # Только если делается впервые!
# mount -t ext3 /dev/mapper/sdc1 /mnt
# umount /mnt/
# cryptsetup remove sdc1                   # Отсоединить зашифрованный раздел

Делайте тоже самое, (без создания fs), что-бы переподключить раздел. При вводе некорректного пароля команда mount не будет выполнена. В таком случае просто удалите отображение sdc1 (cryptsetup remove sdc1) и создайте поновой.

FreeBSD

Пара популярных модулей для шифрования дисков во FreeBSD, это gbde и geli. Geli более быстрый т.к использует аппаратное ускорение. Смотрите FreeBSD handbook Chapter 18.6 для более подробного описания. Для работы, geli должен быть загружен как модуль ядра, или встроен в него на стадии компиляции.
options GEOM_ELI
device crypto                                       # Или загрузить в качестве модуля:
# echo 'geom_eli_load="YES"' >> /boot/loader.conf   # Или kldload geom_eli

Использование пароля и ключа

Автор пользуется данными настройками для типичного шифрования диска, он использует пароль и ключ для шифрования "Master key - основного ключа". Что-бы смонтировать зашифрованный раздел, понадобится и пароль и ключ /root/ad1.key. "Master key" хранится вутри раздела и невидим. Следующий пример типичен для USB или файлового образа. I use those settings for a typical disk encryption, it uses a passphrase AND a key to encrypt the master key. That is you need both the password and the generated key /root/ad1.key to attach the partition. The master key is stored inside the partition and is not visible. See below for typical USB or file based image.

Создаем шифрованный раздел

# dd if=/dev/random of=/root/ad1.key bs=64 count=1  # Этот ключ шифрует Master key
# geli init -s 4096 -K /root/ad1.key /dev/ad1       # -s 8192 и OK для дисков
# geli attach -k /root/ad1.key /dev/ad1             # DO создает бэкап /root/ad1.key
# dd if=/dev/random of=/dev/ad1.eli bs=1m           # Опционально и занимает много времени
# newfs /dev/ad1.eli                                # Создать файловую систему
# mount /dev/ad1.eli /mnt                           # Монтирование шифрованного раздела

Attach

# geli attach -k /root/ad1.key /dev/ad1
# fsck -ny -t ffs /dev/ad1.eli                      # Если есть сомнения, проверьте ФС
# mount /dev/ad1.eli /mnt

Detach

Процедура размонтирования производится автоматически при выключении.

# umount /mnt
# geli detach /dev/ad1.eli

/etc/fstab

Монтирование шифрованного раздела можно сконфигурировать через /etc/fstab. Пароль будет запрошен при загрузке.
# grep geli /etc/rc.conf
geli_devices="ad1"
geli_ad1_flags="-k /root/ad1.key"
# grep geli /etc/fstab
/dev/ad1.eli         /home/private              ufs             rw      0       0

Только по паролю

Это более подходящий способ для шифрования флэшки или образа на основе файла, запрашивается только пароль. В данном случае не нужно волноваться о файлах ключей. Процедура напоминает вышеописанную, за исключением создания файлов ключей. Зашифруем образ размером 1 Гб, созданный из файла /cryptedfile.
# dd if=/dev/zero of=/cryptedfile bs=1M count=1000  # Создаем 1Гб файл
# mdconfig -at vnode -f /cryptedfile
# geli init /dev/md0                                # Зашифровать только по паролю
# geli attach /dev/md0
# newfs -U -m 0 /dev/md0.eli
# mount /dev/md0.eli /mnt
# umount /dev/md0.eli
# geli detach md0.eli
Теперь этот образ можно примонтировать на другую машину, просто введя пароль.
# mdconfig -at vnode -f /cryptedfile
# geli attach /dev/md0
# mount /dev/md0.eli /mnt

Оглавление