Ключевые слова:crypt, mount, fs, disk, linux, (найти похожие документы)
From: dmitrio
Date: Mon, 23 Feb 2004 14:31:37 +0000 (UTC)
Subject: Шифрование дисковых разделов в Linux
Оригинал: http://www.linuxshop.ru/forum/viewtopic.php?p=4190#4190
Криптование/разкриптование рутовой партици и swap
По материалам http://forums.gentoo.org/viewtopic.php?t=31363
-----------------
Подготовка
-----------------
1. Рабочая система с раздельной /boot партицией.
Если система не работает на обычной файловой системе, то криптование
ничего не исправит.
2. loop-AES исходники, скачать можно здесь http://sourceforge.net/projects/loop-aes/
Прочитать loop-AES README что бы знать где копать если что нибудь
пойдет не правильно.
3. исходники для util-linux-2.11y.
Получить можно на любом ядреном сайте типа ftp://ftp.kernel.org/pub/utils/util-linux.
4. Knoppix или Knoppix lite нарезанный компакт.
Получить можно на http://www.knoppix.net
и необходимо убедится что вы можете загрузится с этого компакта. В
knoppix уже есть поддержка loop-AES.
5. !!!BACKUP YOU DATA
СДЕЛАЙТЕ КОПИЮ ВАШИХ ДАННЫХ!!!
------------------
Установка
------------------
1. Пересобрать ядро с установками:
CONFIG_MODULES=y
CONFIG_BLK_DEV_LOOP=n ([y] or [m] НЕ РАБОТАЕТ),
CONFIG_BLK_DEV_RAM=y,
CONFIG_BLK_DEV_RAM_SIZE=4096,
CONFIG_BLK_DEV_INITRD=y,
CONFIG_MINIX_FS=Y (это потому что ramdisk is minix),
CONFIG_DEVFS=Y (dev file system support (EXPERIMENTAL)=Y)
CONFIG_PROC_FS=Y
(остаток по желанию)
Файловая система должна быть включена в ядре как [Y] потому как ядро
не сможет получить доступа к модулям с зашифрованной файловой системы,
до тех пор пока не будет знать ключ расшифровки.
остальное можно оставить в виде модулей - по желанию так сказать
2.Перейти в каталог /usr/src и развернуть loop-AES.хххх.tar файл
(loop-AES-v1.7a.tar.bz2 в нашем случае)
перейти в новообразованный каталог и запустить make.
в результате получим драйвера к loop device которые знают как
шифровать/расшифоровать файловую систему
3. Скопируйте util-linux-2.11y.tar
(следите за совпадением diff от loop-AES и util-linux)
в loop-AES каталог и разверните, затем переместитесь во вновь
созданный каталог (cd util-linux-2.11y)
ПОДМОНТИРОВАТЬ ВАШУ ЗАГРУЗОЧНУЮ ПАРТИЦИЮ К /BOOT
теперь несколько команд
patch -p1 <../util-linux-2.11y.diff
#~~~~~~~~~~~~~~Пример~~~~~~~~~~~~~~~~~~~~~~~~~~
#patch -p1 <../util-linux-2.11y.diff
#patching file mount/Makefile
#patching file mount/aes.c
#patching file mount/aes.h
#patching file mount/lomount.c
#patching file mount/losetup.8
#patching file mount/loumount.c
#patching file mount/mount.8
#patching file mount/mount.c
#patching file mount/rmd160.c
#patching file mount/rmd160.h
#patching file mount/sha512.c
#patching file mount/sha512.h
#patching file mount/swapon.8
#patching file mount/swapon.c
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export CFLAGS=-O2
export LDFLAGS='-static -s'
./configure
make SUBDIRS="lib mount"
cd mount
install -m 4755 -o root mount umount /bin
install -m 755 losetup swapon /sbin
rm -f /sbin/swapoff && ( cd /sbin && ln -s swapon swapoff )
rm -f /usr/share/man/man8/{mount,umount,losetup,swapon,swapoff}.8.gz
install -m 644 mount.8 umount.8 losetup.8 /usr/share/man/man8
install -m 644 swapon.8 swapoff.8 /usr/share/man/man8
rm -f /usr/share/man/man5/fstab.5.gz
install -m 644 fstab.5 /usr/share/man/man5
cp -p /lib/modules/`uname -r`/block/loop.o /boot/loop-`uname -r`.o
4. В loop-AES каталоге отредактировать переменные в файле
build-initrd.sh
BOOTDEV
BOOTTYPE
CRYPTROOT
ROOTYPE
CIPHERTYPE
USEDEVFS=1 (включена поддержка devfs в ядре )
USEPIVOT=1
с необходимыми значениями, (остальное оставить по умолчанию)
BOOTDEV=/dev/ide/host2/bus0/target0/lun0/part1 (это будет /dev/hde1)
CRYPTROOT=/dev/ide/host0/bus0/target0/lun0/part10 (это будет /dev/hda10)
(посмотреть можно ls -aR /dev/ide/) затем выполнить
sh build-initrd
этой командой создается ramdisk что бы потом можно было присоеденить
криптованную систему при загрузке и передать пароль ядру
#~~~~~~~~Пример~~~~~~~~~~~~~~~~~
#build-initrd.sh
#15+0 входных записей
#15+0 выходных записей
#32 inodes
#15 blocks
#Firstdatazone=5 (5)
#Zonesize=1024
#Maxsize=268966912
#
#Файловая система 1K-блоков Испол Доступно Исп%Подключено к
#/usr/src/loop-AES-v1.7a/tmp-i-13211 10 7 3 70% /usr/src/loop-AES-v1.7a/tmp-d-13211
#-rw------- 1 root root 1888 2003-04-17 02:33 /boot/initrd.gz
#Copying /sbin/losetup to /boot
#Copying /sbin/insmod to /boot
#Copying /lib/libc.so.6 to /boot
#Copying /lib/ld-linux.so.2 to /boot
#Done.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5. Загрузится с Knoppix CD с параметром knoppix 2
для получения root терминала, мы не грузим то что не надо и ускоряем
процесс. после этого отдать команду на исполнение:
losetup -e AES256 -T /dev/loop0 /dev/hda2 (здесь указать вашу корневую партицию)
и впечатать вашу парольную фразу (и желательно не забыть ее! хе-хе)
dd if=/dev/hda2 of=/dev/loop0 bs=64k conv=notrunc
(партиция должна быть неприкрепленной UNMOUNTED, выполнение займет
немного времени, прямо пропорционально рамеру партиции)
#~~~~~~Пример~~~~~~~~~~~~~
# использовали time для замера времени
#
#time dd if=/dev/hda6 of=/dev/loop0 bs=64k conv=notrunc
#96012+1 входных записей
#96012+1 выходных записей
#
#real 9m56.848s
#user 0m0.610s
#sys 2m4.030s
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6. Затем создаем директорию
mkdir /mnt/gentoo
mkdir /mnt/gentoo/boot
теперь подмонтировать надо бы
mount /dev/hda2 /mnt/gentoo
mount /dev/hda1 /mnt/gentoo/boot
теперь меняем корневой раздел
chroot /mnt/gentoo /bin/bash
редактируем fstab, так что бы корневой раздел указывал на
/dev/loop5 вместо /dev/hdaENCRYPTED
7. Перейдем в раздел /boot/grub и добавим в grub.conf строки:
title=Encrypted
root (hd0,0)
kernel /boot/bzImage-crypt root=/dev/ram0 init=/linuxrc
initrd /boot/initrd.gz
Note: init=/linuxrc, not init=/boot/linuxrc.
8. Перезагрузится (не забыть вытащить knoppix CD)
в GRUB выбрать Encrypted Root
и когда попросит выдать ему парольную фразу.
9. Если что то не работает то прочитать README loop-AES файл и
загрузится с knoppix CD и переделать losetup с пункта 6.
(dd if=/dev/hda2 of=/dev/loop0 bs=64k conv=notrun ПОВТОРЯТЬ НЕ НАДО)
Для расшифровки файловой системы надо
1) Загрузиться с Knoppix
2) losetup -e AES256 /dev/loop0 /dev/hdaENCRYPTED (ваша рутовая партиция)
Для проверки можно выполнить
2.5)
mount /dev/loop0 /mnt/222 (подмонтировать директорию)
2.6)
ls /mnt/222 (должны увидеть свои файлы)
2.7)
umount /mnt/222 (отмонтировать директорию)
3)
dd if=/dev/loop0 of=/dev/hdaENCRYPTED bs=64k conv=notrunc
Как зашифровать своп
1) отмоунтить своп
swapoff -a
2) изменить fstab значения как это описано в loop-AES readme
/dev/hdaSWAP none swap sw,loop=/dev/loop6,encryption=AES128 0 0
3) здесь указать пароль 20 и более символов
losetup -e AES256 /dev/loop0 /dev/hdaSWAP
4) здесь криптуется физический раздел
dd if=/dev/hdaSWAP of=/dev/loop6 bs=64k conv=notrunc
5) отмоунтить своп от loop
losetup -d /dev/loop0
6) активируем своп (автоматически будет подключатся к указанному loop device)
swapon -a
7) просмотр свопа - в начале будет идти масса нулей
od -xa /dev/hdaSWAP | less