Как стать автором
Обновить

Паранойя без границ или шифруем LVM из файлов

Время на прочтение2 мин
Количество просмотров1.1K
После прочтения сегодняшнего топика из блога BSDельники о шифровании данных, мне пришла в голову мысль создать из нескольких файлов LVM-том и его-же зашифровать.
Не буду тянуть кота за хвост, а сразу покажу как я сделал.



В данном случае шифруются файлы на одном жёстком диске в одном разделе(/tmp), но никто не запрещает расположить файлы-контейнеты где угодно. Приступим!

Создадим 5 файлов, размером 50 Мб каждый, которые и будут являтся контейнерами:

/tmp # for i in `seq 1 5`; do dd if=/dev/zero of=safe.$i bs=1M count=50; done
50+0 records in
50+0 records out
52428800 bytes (52 MB) copied, 0.235608 s, 223 MB/s


Проверим:
/tmp # ls
-rw-r--r-- 1 root root 50M 2009-11-28 03:02 safe.1
-rw-r--r-- 1 root root 50M 2009-11-28 03:02 safe.2
-rw-r--r-- 1 root root 50M 2009-11-28 03:02 safe.3
-rw-r--r-- 1 root root 50M 2009-11-28 03:02 safe.4
-rw-r--r-- 1 root root 50M 2009-11-28 03:02 safe.5


Теперь превратим наши сейфы в устройства воспользовавшись losetup:
/tmp # for i in `seq 1 5`; do losetup /dev/loop$i /tmp/safe.$i; done

Теперь у нас есть 5 устройств размером 50 Мб каждый, чтобы хранить большие объёмы данных, объеденим их в один Logical Volume.

Если утилита pvcreate не доступна — инсталлируем её
apt-get install lvm2 (для убунту)

/tmp # pvcreate /dev/loop{1,2,3,4,5}
Physical volume "/dev/loop1" successfully created
/tmp # vgcreate vg0 /dev/loop{1,2,3,4,5}
Volume group "vg0" successfully created
/tmp # vgscan
Reading all physical volumes. This may take a while...
Found volume group "vg0" using metadata type lvm2
/tmp # lvcreate --size 200M --name lvopt vg0
Logical volume "lvopt" created


Теперь у нас есть LV размером 200Мб находящийся в /dev/vg0/lvopt
Шифруем его, например, с помощью twofish:
/tmp # cryptsetup -y create datasafe /dev/vg0/lvopt
Enter passphrase:
Verify passphrase:


Вот и всё теперь можно проверить, что получилось. Для начала отформатируем новое устройство в ext4:
mkfs.ext4dev /dev/mapper/datasafe
mke2fs 1.41.9 (22-Aug-2009)

Смонтируем устройство:
mount -t ext4 /dev/mapper/datasafe /mеdia/safe/



Заполним наш сейф данными, чтобы убедиться в работоспособности. Данные будем брать из /dev/zero
cat /dev/zero >> /media/safe/test
cat: write error: No space left on device


Теперь в LV находится файлик test занимающий весё доступное место, проверим:
df -h
Filesystem Size Used Avail Use% Mounted on
[....]
/dev/mapper/datasafe 194M 193M 0 100% /media/safe


Теперь размонтируем наш LV:
umount /media/safe/
cryptsetup remove datasafe


И попробуем прочитать содержимое устройста теперь:

less -f /dev/vg0/lvopt

Убеждаемся, что устройство зашифровано!

Файлы-контейнеры могут быть разного размера и быть расположены на каких угодно жёстких дисках, что должно затруднить их обнаружение, а так-же объединение их в одно устройство.
Теги:
Хабы:
+1
Комментарии6

Публикации

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн