Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #90, ИЮНЬ 2006 г.

Нам есть, что скрывать

Михаил Емельченков

Хакер, номер #090, стр. 090-104-2


Теперь компилируем и устанавливаем ядро в /boot:

# mount /boot

# make

# make modules_install install

Для простоты настройки сконфигурируем все пункты не модулями, а монолитом. Если ты решишь сделать модульную сборку, то не забудь предварительно подгрузить соответствующие модули с помощью modprobe. После перезагрузки необходимо установить user-space утилиты. Для этого воспользуйся командой:

debian# apt-get install cryptsetup

gentoo# emerge device-mapper cryptsetup

После этого удостоверься, что device mapper запущен:

# ls –L /dev/mapper/control

/dev/mapper/control

Проверь также, что появился crypt target:

# /sbin/dmsetup targets

crypt v1.1.0

striped v1.0.2

linear v1.0.1

error v1.0.1

Шифрование root-раздела

Я рассмотрю шифрование корневого раздела только для дистрибутива Gentoo, в Debian все происходит схожим образом. Для шифрования корневого раздела необходимо, чтобы /boot-директория располагалась на отдельном разделе. Linux не поддерживает загрузку с шифрованных разделов напрямую. Вместо этого необходимо использовать initrd (RAM-диск, который грузится до монтирования корневого раздела).

Для корректной работы с udev потребуется собрать multipath-tools:

# emerge multipath-tools

Необходимо создать и примонтировать initrd. Для этого монтируем /boot-раздел и создаем пустой файл initrd:

# mount /boot

# touch /boot/initrd

Заполняем нулями файл /boot/initrd и придаем ему размер 4 Мб:

# dd if=/dev/zero of=/boot/initrd bs=1M count=4

Создаем loopback-устройство для работы с файлом:

# /sbin/losetup /dev/loop0 /boot/initrd

Создаем на нем файловую систему Ext2:

# /sbin/mke2fs /dev/initrd

# mkdir /mnt/initrd

Монтируем loopback-устройство на каталог диска:

# mount /dev/loop0 /mnt/initrd

Создаем дерево директорий и файлы скриптов:

# cd /mnt/initrd

# mkdir etc dev lib bin proc new

# touch linuxrc devmap_mknod.sh

# chmod +x linuxrc devmap_mknod.sh

Где linuxrc - скрипт, отвечающий за непосредственную загрузку, а devmap_mknod.sh - скрипт, который создает необходимые устройства. Оба файла находятся на диске, прилагаемом к журналу. Копируем необходимые файлы:

# cp /bin/{sh,cat,mount,umount,mkdir,chroot,cryptsetup,sleep,mknod,sed,rm} ./bin

Для каждого файла узнаем требуемые библиотеки и копируем их в директорию lib:

# ldd /bin/sh

linux-gate.so.1 => (0xffffe000)

libdl.so.2 => /lib/libdl.so.2 (0xb7f65000)

libc.so.6 => /lib/libc.so.6 (0xb7e51000)

/lib/ld-linux.so.2 (0xb7f73000)

# cp /lib/{libc.so.6,ld-linux.so.2} ./lib

Создаем необходимые устройства, без которых не удастся загрузить систему (если ты используешь другой раздел с корневой файловой системой, то необходимые параметры mknod можно посмотреть с помощью "ls -l /dev/drive". Например, для /dev/hda3 команда будет выглядеть так: "mknod /mnt/initrd/dev/hda3 b 3 3"):

# mknod /mnt/initrd/dev/console c 5 1

# mknod /mnt/initrd/dev/null c 1 3

# mknod /mnt/initrd/dev/sda2 b 8 2

# mknod /mnt/initrd/dev/tty c 5 0

Проверим работоспособность всех программ в initrd:

# chroot /mnt/initrd /bin/sh

Назад на стр. 090-104-1  Содержание  Вперед на стр. 090-104-3
Hosted by uCoz