В домашнем сервере установлено в зеркале два 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:
либо скомпилировав и установив ядро с соответствующими опциями:
device crypto
options 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. В случае достаточно активного использования системой свопа для корректного шифрования пришлось бы все операции делать не сразу с обеими партициями, а по одной.