20 сентября, 2007

Шифрование файловой системы в Debian - Ubuntu - Linux

Вы уже позаботились о безопасности данных на вашем ноутбуке?
Самое время это сделать.
Да, статья посвящена в первую очередь владельцам ноутбуков, которые не хотят, чтобы их данные были прочитаны третьими лицами.

Для начала приготовим к процедурам жесткий диск: разобьем его.
Я сделал это так:
  • /dev/sda1 swap 1.2GiB
  • /dev/sda2 reiserfs 12GiB
  • /dev/sda3 reiserfs 4GiB

Сразу отвечаю почему я разметил все разделы в reiserfs. Это шустрая fs, она быстро работает с маленькими файлами, очень удобно для ноутбуков. Но если вы собираетесь хранить фильмы и большие изображения, или музыку в корневом разделе, то советую разметить этот раздел в ext3, но лучше создать отдельный раздел для таких вещей, например /dev/sda4/ ext3 36GiB
/dev/sda1 весит 1.2 Гигабайта, так как я программирую под СУБД Oracle, она требует не меньше гига свопа, но Вы можете создать своп с 700мб памяти
В /dev/sda2 будет лежать наша будущая зашифрованная системы, в которой будут храниться Ваша почта (Evolution, Icedove, Thunderbird), кэш браузера (Epiphany, Iceweasel, Firefox), логи мессенджеров (Pidgin, GAIM, jabber, psi) и прочая конфиденциальная информация, которую сможет прочитать только владелец ноутбука
/dev/sda3 будем использовать как временную fs
О том, что разделы на жестком диске бывают активными, основными и логическими я не буду рассказывать рецепты - солите, перчите, гуглите (что-то мне подсказывает, что можно использовать панель поиска с надписью Google на блоге сверху). Могу только предупредить что ОС возможно установить только в основной раздел.

Итак, установите Debian или Ubuntu на раздел /dev/sda3 с минимальной конфигурацией (без Окружения или server версию), потом Вы сможете установить иксы X11, офисные и прочие пакеты. Как правильно установить Debian?

Загрузитесь в свежеустановленную систему.
Далее все танцы с бубном будут производится от root'а, поэтому:

~$ su -


Устанавливаем дополнительные пакеты

~# aptitude install cryptsetup reiserfsprogs


cryptsetup - инструмент для управления модулем dm-crypt
dm-crypt - модуль ядра, входит в его состав linux начиная с версии 2.6.4

~# mkdir /media/sda2
~# mount /dev/sda2 /media/sda2


создайте в /media/sda2 любой файл с любым содержанием
можно заполнить диск произвольным методом

~# if=/dev/urandom of=/dev/sda2


Криптуем
~# cryptsetup -y create root /dev/sda2


dm-crypt отобразит зашифрованный диск в /dev/mapper/root
Поскольку это блочное устройство мы просто его форматируем как жесткий диск

~# mkfs -t reiserfs /dev/mapper/root


Перед тем как скопировать временный дистрибутив с диска /dev/sda3 нужно смонтировать его в удобном месте и скопировать в зашифрованную fs (/dev/mapper/root)

~# mkdir /mnt/enc_fs
~# mount /dev/mapper/root /mnt/enc_fs/


нужно изменить порядок загрузки, начнем с fstab

~# nano /etc/fstab


/dev/mapper/root / reiserfs defaults,errors-ro 0 1


~# nano /etc/crypttab


root /dev/sda2 none cipher=aes-cbc-essiv:sha256


[
~# nano /etc/kernel-img.conf

ramdisk = /usr/sbin/mkinitrd

]

~# cp -axv / /mnt/enc_fs


переходим к зашифрованной файловой системе

~# chroot /mnt/enc_fs /bin/bash


монтируем файловые системы ядра
~# mount sysfs /sys -t sysfs
~# mount proc /poc - proc
[~# mount /dev/sda2 /boot]


добавляем следующие строки в /etc/mkinitrd/modules
sha256
aes_i586


~# nano /boot/grub/menu.lst


kopt=root=/dev/mapper/root devfs=mount ro


~# dpkg-reconfigure linux-image-2.6.18.4-686



Вот и всё. Для восстановления разделов пользуйте утилиты gpart и testdisk


3 комментария:

virens комментирует...

Статься очень хорошая - думаю, что наконец сделаю себе шифрованный диск со всеми паролями и прочими конфиденциальными вещами. Спасибо!

Unknown комментирует...

@virens
Вообще все оказывается намного банальнее. При установке системы в разделе разбивки диска есть пункт "Использовать весь диск с шифрованием данных LVM". Повторяет всю суть статьи, но не требует усилий от пользователя.

Unknown комментирует...

root /dev/sda2 none cipher=aes-cbc-essiv:sha256

Truecrypt-овцы когда то писали, что CBC-block mode дескать не очень надежен, и поэтому использовали сначала LRW, а сейчас XTS-block mode. Как их использовать в данном примере (если ядро их уже поддерживает - LRW in 2.6.20 and XTS in 2.6.24)?