Документация по ОС FreeBSD Пятница, 26.04.2024, 16:16
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Мои статьи [0]
Установка и настройка [281]
X Window [25]
Man pages [30]
Ports & Packages [26]
cvs [18]
Multimedia [20]
Нововсти в мире Unix [0]
RFC [4]
RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Безопасность [52]
Работа с железом [58]
Книги по FreeBSD [17]
Сеть [505]
Программирование [40]
FireWall [58]
Темы экзамена BSDA [14]
Официальные темы экзамена BSDA, включая подробноые описания и советы по обучению.

Главная » Статьи » Безопасность

Шифруем разделы, виртуальные диски и Swap в FreeBSD [2009]
Для шифрования мы будем использовать класс 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.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


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

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.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


Источник: http://tuxnotes.ru/articles.php?a_id=23
Категория: Безопасность | Добавил: oleg (09.09.2009)
Просмотров: 974 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024