RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Шифруем разделы, виртуальные диски и Swap в FreeBSD [2009]
Для шифрования мы будем использовать класс GEOM-ELI, который появился во FreeBSD, начиная с версии 6.0. GEOM-ELI поддерживает три алгоритма шифрования: AES, 3DES, Blowfish. И алгоритмы хэширования:
Параметр-Kозначает использование ключа на отдельном файле. Используется только с командой geli init. Использование:-K/path/to/key
Параметр-kтак же означает использование ключа на отдельном файле, но используется только при расшифровании (авторизации) зашифрованного раздела с командой geli attach. Использование:-k/path/to/key
Параметр-Pиспользуется только с командой geli init и означает не использовать пароль.
Параметр-pиспользуется только с командой geli attach. Означает не использовать пароль при расшифровании раздела.
Параметр-lдлина ключа. По умолчанию используется 128 для AES, 128 Blowfish и 192 3DES. Для просмотра статуса и списка используемых geli устройств используйте команды:
geli status и geli list
Добавляем поддержку GEOM eli
Ядро необходимо скомпилировать со следующими опциями:
options GEOM_ELI device crypto
Или добавить модуль в автозагрузку:
echo 'geom_eli_load="YES"' >> /boot/loader.conf
Загружаем модуль без перезагрузки системы:
kldload geom_eli
1. Шифрование раздела
Шифрование раздела производится командой:
geli init[параметры] имя_устройства
Зашифруем и примонтируем USB флэшку /dev/da2
dd if=/dev/random of=/root/da2.key bs=64 count=1# генерируем ключ geli init -s 4096 -K /root/da2.key /dev/da2# зашифровываем geli attach -k /root/da2.key /dev/da2# авторизируем зашифрованный диск. После выполнения данной команды будет создан /dev/da2.eli dd if=/dev/random of=/dev/da2.eli bs=1m# перезатираем содержимое /dev/da2 случайными данными. Опционально. Для параноиков. newfs /dev/da2.eli# создаем файловую систему mount /dev/da2.eli /mnt # монтируем
Размонтируем и отсоединим /dev/da2.
umount /mnt geli detach /dev/da2.eli
При выключении система автоматически размонтирует и отсоединит устройства.
теперь при подсоединении посредством geli attach необходимо указывать ключ -k путем к ключу:
geli attach -k /root/md0.key /dev/md0
Шифрование ключем
генерируем случайный ключ:
dd if=/dev/random of=/root/md0.key bs=64 count=1
зашифровываем:
geli init -P -s 4096 -K /root/md0.key /dev/md0
теперь при подсоединении посредством geli attach необходимо указывать ключ -k путем к ключу и ключ -p:
geli attach -p -k /root/md0.key /dev/md0
3. Шифрование Swap
До настоящего момента раздел подкачки не был зашифрован. Таким образом, на нем могут содержаться пароли или какая-либо иная важная информация в открытом виде. Чтобы избавиться от этого, заполним раздел подкачки случайными данными:
dd if=/dev/random of=/dev/ad0s1b bs=1m
Находим в /etc/fstab строчку, отвечающую за раздел подкачки и добавляем к ней суффикс .eli
# Device Mountpoint FStype Options Dump Pass# /dev/ad0s1b.eli none swap sw 0 0 По умолчанию geli зашифрует раздел алгоритмом AES с длиной ключа 256 бит. Для изменения добавьте /etc/rc.conf
geli_swap_flags="-a blowfish -l 128 -s 4096 -d"
Теперь во время загрузки системы будет генерироваться какой-то случайный ключ, которым будет производиться шифрование. После перезагрузки наберите команду swapinfo. Если увидели что-то подобное:
Device 1K-blocks Used Avail Capacity /dev/ad0s1b.eli 542720 0 542720 0%
Значит все ОК и ваш раздел подкачки успешно зашифрован. The end