Для шифрования мы будем использовать класс GEOM-ELI, который появился во FreeBSD, начиная с версии 6.0. GEOM-ELI поддерживает три алгоритма шифрования: AES, 3DES, Blowfish. И алгоритмы хэширования:
HMAC/MD5 HMAC/SHA1 HMAC/RIPEMD160 HMAC/SHA256 HMAC/SHA384 HMAC/SHA512 Внимание! Некоторые важные команды и параметрыgeli init [параметры] - шифрование раздела.geli attach [параметры] - расшифрование (авторизация) раздела. Параметр -K означает использование ключа на отдельном файле. Используется только с командой geli init. Использование: -K /path/to/key Параметр -k так же означает использование ключа на отдельном файле, но используется только при расшифровании (авторизации) зашифрованного раздела с командой geli attach. Использование: -k /path/to/key Параметр -P используется только с командой geli init и означает не использовать пароль. Параметр -p используется только с командой geli attach. Означает не использовать пароль при расшифровании раздела. Параметр -e определяет алгоритм шифрования. Возможные варианты: blowfish, eas, 3des. Параметр -a определяет алгоритм хэширования. Возможные варианты: hmac/md5, hmac/sha1, hmac/ripemd160, hmac/sha256, hmac/sha384, hmac/sha512. Параметр -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.elidd 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 При выключении система автоматически размонтирует и отсоединит устройства.grep geli /etc/rc.conf geli_devices="da2" geli_da2_flags="-k /root/da2.key" cat /etc/fstab | grep eli /dev/da2.eli /home/private ufs rw 0 0 2. Шифрование виртуального диска паролем 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 /dev/md0.eli mdconfig -d -u 0 Теперь, когда нам необходимо примонтировать виртуальный диск:mdconfig -at vnode -f /cryptedfile geli attach /dev/md0 mount /dev/md0.eli /mnt Примеры: Шифрование ключем и паролем генерируем случайный ключ:dd if=/dev/random of=/root/md0.key bs=64 count=1 зашифровываем:
geli init -s 4096 -K /root/md0.key /dev/md0 теперь при подсоединении посредством 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.confgeli_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
Источник: http://tuxnotes.ru/articles.php?a_id=23