|
 |
ОС Linux
Система, ядро, утилиты | |
ОС Linux -> Система, ядро, утилиты
->Шифрование дисковых разделов в Linux
Шифрование дисковых разделов в Linux
Подготовка- Рабочая система с отдельным разделом /boot. Если система не работает на обычной файловой системе, то шифрование ничего не исправит.
- Исходные коды loop-AES, скачать можно здесь http://sourceforge.net/projects/loop-aes/ Прочитайте loop-AES README, чтобы знать, что делать, если что-нибудь пойдет неправильно.
- Исходные коды util-linux-2.11y. Получить можно на любом сайте, распространяющем ядро Linux, например ftp://ftp.kernel.org/pub/utils/util-linux.
- CD с Knoppix или Knoppix lite Получить можно на http://www.knoppix.net Необходимо убедиться, что вы можете загрузится с этого диска. В knoppix уже есть поддержка loop-AES.
- !!!СДЕЛАЙТЕ РЕЗЕРВНУЮ КОПИЮ ВАШИХ ДАННЫХ!!!
Установка- Пересоберите ядро с установками:
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] (а не [M],-прим.ред.), потому что ядро не сможет получить доступа к модулям с зашифрованной файловой системы до тех пор, пока не будет знать ключ расшифровки. Остальное можно оставить в виде модулей (по желанию) - Перейдите в каталог /usr/src и распакуйте loop-AES.хххх.tar (loop-AES-v1.7a.tar.bz2 в нашем случае) Перейдите в новообразованный каталог и запустите make. В результате будут собраны драйвера к loop device, которые знают как шифровать/расшифровать файловую систему
- Скопируйте 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
- В каталоге 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.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Загрузитесь с Knoppix CD с параметром knoppix 2 для получения root-терминала (мы не грузим то, что не надо и ускоряем процесс). После этого дайте команду на исполнение:
losetup -e AES256 -T /dev/loop0 /dev/hda2 (здесь указать вашу корневую партицию)
и наберите вашу парольную фразу (и, желательно, не забудьте ее!) dd if=/dev/hda2 of=/dev/loop0 bs=64k conv=notrunc
(рездел должен быть неподмонтированным, копирование займет немного времени, прямо пропорционально рамеру раздела) #~~~~~~Пример~~~~~~~~~~~~~
# использовали 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
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Затем создайте директорию
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 - Перейдите в раздел /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.
- Перезагрузитесь (не забудьте извлечь диск с Knoppix) В GRUB выберете Encrypted Root и введите парольную фразу по запросу загрузчика
- Если что-то не работает, прочитайте файл README в loop-AES, загрузитесь с Knoppix CD и переделайте losetup (пункт 6). dd if=/dev/hda2 of=/dev/loop0 bs=64k conv=notrun ПОВТОРЯТЬ НЕ НАДО
Для расшифровки файловой системы надо - Загрузиться с Knoppix CD
- losetup -e AES256 /dev/loop0 /dev/hdaENCRYPTED (ваш раздел root)
Для проверки можно выполнить mount /dev/loop0 /mnt/222 (подмонтировать директорию)
ls /mnt/222 (должны увидеть свои файлы)
umount /mnt/222 (отмонтировать директорию)
- dd if=/dev/loop0 of=/dev/hdaENCRYPTED bs=64k conv=notrunc
Как зашифровать swap- Отключите swap-раздел
swapoff -a
- измените значения в fstab, как это описано в loop-AES readme
/dev/hdaSWAP none swap sw,loop=/dev/loop6,encryption=AES128 0 0
- losetup -e AES256 /dev/loop0 /dev/hdaSWAP
(потребуется указать пароль длиной 20 и более символов) - Зашифруйте физический раздел
dd if=/dev/hdaSWAP of=/dev/loop6 bs=64k conv=notrunc
- отключите swap от loop
losetup -d /dev/loop0
- активируйтем swap (автоматически будет подключатся к указанному loop device)
swapon -a
- Просмотрите swap - в начале будет идти масса нулей
od -xa /dev/hdaSWAP | less
Оригинал: http://www.linuxshop.ru/forum/viewtopic.php?p=4190#4190 Статья взята с сайта OpenNet.
комментарии к статье (0)
Ссылки по теме:
Запись дисков CD-R/RW из консоли
Архитектура UNIX и Windows
История о том, как я настраивал USB flash-memory-drive в Linux
Установка Linux на устройство, которое не поддерживается дистрибутивом
Утилита lsof - инструмент администратора
| |
|