Документация по ОС FreeBSD Пятница, 10.04.2020, 07:06
Приветствую Вас Гость | 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-раздела используя GEOM ELI [2011]
ВВОДНАЯ

В домашнем сервере установлено в зеркале два 1 Тб жёстких диска. Файловая система - ZFS(подробности установки):
$ gpart show -l | grep -E "(GPT | swap)"
=> 34 1953525101 ad4 GPT (932G)
 296 8388608 2 swap0 (4.0G)
=> 34 1953525101 ad6 GPT (932G)
 296 8388608 2 swap1 (4.0G)

Решил имеющиеся swap-партиции зашифровать используя GEOM-класс ELI. Недолгие поиски по хэндбуку привели к соответствующему разделу.

Начали...

Предварительно надо подготовиться: включить соответствующую функциональность либо прописав соотв.модули для /boot/loader.conf:
geom_eli_load="YES"

либо скомпилировав и установив ядро с соответствующими опциями:
device crypto
options GEOM_ELI

Если будут подгружаються модули ядра, то, чтобы не перегружаться для их загрузки, загрузим их сами:
$ kldload geom_eli

Смотрим, что у нас там со swap-ом:
$ swapinfo
Device 1K-blocks Used Avail Capacity
/dev/gpt/swap0 4194304 0 4194304 0%
/dev/gpt/swap1 4194304 0 4194304 0%
Total 8388608 0 8388608 0%

На данный момент своп девственно чист. Но, возможно, там что-то могло остаться из нежелательного, поэтому будет очень хорошо, если эти партиции "зачистим": запишем "белый шум" (случайныеданные). Для этого как раз устройство /dev/random и предусмотрено. :)
Но оба swap-раздела подключены, поэтому перед зачисткой отключаем их:
$ swapoff /dev/gpt/swap0
$ swapoff /dev/gpt/swap1

и зачищаем:
$ dd if=/dev/random of=/dev/gpt/swap0 bs=1m
dd: /dev/gpt/swap0: end of device
4097+0 records in
4096+0 records out
4294967296 bytes transferred in 180.356677 secs (23813742 bytes/sec)
$ dd if=/dev/random of=/dev/gpt/swap1 bs=1m
dd: /dev/gpt/swap1: end of device
4097+0 records in
4096+0 records out
4294967296 bytes transferred in 180.273258 secs (23824761 bytes/sec)

Добавляем в /etc/rc.conf параметры шифрования:
geli_swap_flags="-a hmac/sha256 -e blowfish -l 128 -s 4096 -d"

В данному случае в качестве hash-функции используется hmac/sha256, а алгоритм шифрования - blowfish. Список поддерживаемых можно посмотреть в "манах" geli.
В /etc/fstab к именам прописанных swap-партиций добавляем ".eli" - идентификатор зашифрованного раздела ELI, чтобы получилось так:
$ cat /etc/fstab
# DEVICE MOUNTPOINT FSTYPE OPTIONS DUMP Pass#
/dev/gpt/swap0.eli none swap sw 0 0
/dev/gpt/swap1.eli none swap sw 0 0

Перегружаемся и проверяем результат:
$ swapinfo
Device 1K-blocks Used Avail Capacity
/dev/gpt/swap0.eli 3728268 0 3728268 0%
/dev/gpt/swap1.eli 3728268 0 3728268 0%
Total 7456536 0 7456536 0%

Стоит заметить, что часть места используется для нужд ELI, поэтому объём свободного места в результате несколько уменьшился: 8388608 - 7456536 = 932072. Т.е. свободное место уменьшилось на 932072 блока, что составило примерно 910 Мб. Это стоит учесть при создании swap-партиций.

P.S. В случае достаточно активного использования системой свопа для корректного шифрования пришлось бы все операции делать не сразу с обеими партициями, а по одной.



Источник: http://www.lissyara.su/?id=2155
Категория: Безопасность | Добавил: oleg (29.01.2011) | Автор: Fomalhaut
Просмотров: 843 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

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

Copyright MyCorp © 2020