В последнее время начал активно использовать на служебном ноутбуке Linux Debian 5 версии. Удобно и поэкспериментировать иногда, и для работы достаточно хорошо подходит – Gnome, Office 2007 запускается под wine, jdk для Cisco ASDM, VMWare Workstation и много другого необходимого софта.

Так как ноутбук вещь такая что украсть ее не так сложно как настольный ПК, озаботился я шифрованием жесткого диска, так как куча приватной информации хранится на ноутбуке – приватные ключи для доступа к корпоративной сети, служебная переписка, личная переписка и мало ли еще какой приватной информации которую очень не хотелось бы отдавать в чужие руки. Приступим.

Шаг 1.
Для начала необходимо установить ПО для обеспечения возможности шифрования:

apt-get install cryptsetup
apt-get install mdadm
apt-get install lvm2

В ядре должна быть включена поддержка LVM – в ядре из дистрибутива дело обстоит именно так.
Моя таблица разделов выглядит так:
/dev/sda1 * 1 26 204800 7 HPFS/NTFS
/dev/sda2 26 10077 80737678+ 83 Linux
/dev/sda3 10078 19457 75344850 83 Linux

/dev/sda3 – мой корневой раздел, его я шифровать небуду, ни к чему, поэтому я зашифрую /dev/sda2 и буду монтировать как /home. Т.е. шифроваться будут пользовательские данные а все остальное – нет, ноутбук все-таки, и тратить в дороге батарею понапрасну на мой взгляд излишество. Да и за производительность тоже хочется побороться – все таки шифрование хоть и незначительно но снижает скорость записи/чтения на жесткий диск.

Шаг 2.
Зашифруем намеченое, файловую систему (ФС):
cryptsetup luksFormat /dev/sda2
И команда выполнится с ошибкой. Не знаю почему, но в Debian по-умолчанию нет команды /sbin/udevsettle.
Поэтому делаем симлинк и выполняем команду:
ln -s /sbin/udevadm /sbin/udevsettle
cryptsetup luksFormat /dev/sda2

WARNING!
========
This will overwrite data on /dev/sda2 irrevocably.

Are you sure? (Type uppercase yes):

Система прости набрать в верхнем регистре слово YES. Набираем и создаем.
Далее, проверим, как и что создалось.

cryptsetup luksDump /dev/sda2
LUKS header information for /dev/sda2

Version: 1
Cipher name: aes
Cipher mode: cbc-essiv:sha256
Hash spec: sha1
Payload offset: 1032
MK bits: 128
MK digest: 10 77 b5 0a 9a 92 d2 e1 73 5f c8 49 ad e0 f9 4c 8d d5 38 8a
MK salt: 08 9b 01 2e 0a f3 f0 12 22 69 3e 0b 0e cd 8f 58
aa a2 ce bf 5a c8 bb b1 97 e2 fc 2f da d6 93 bb
MK iterations: 10
UUID: 776317fc-a9b9-454e-8d8f-f9e168e0ad9a

Копируем куда-либо UUID: 776317fc-a9b9-454e-8d8f-f9e168e0ad9a, он нам еще пригодится.

Подключаем зашифрованый раздел и создаем на нем ФС:
cryptsetup luksOpen /dev/sda2 luks
Enter LUKS passphrase:
key slot 0 unlocked.
Command successful.

Там где появляется запрос “Enter LUKS passphrase:” вводим пароль который воодили при создании зашифрованого раздела.
Создаем ФС:

mke2fs -j /dev/mapper/luks

Правим конфигурационные файлы, для того что бы при загрузке системы зашифрованый раздел подключался автоматически и спрашивал пароль.
nano /etc/crypttab
Добавляем строчку типа:
luks /dev/disk/by-uuid/776317fc-a9b9-454e-8d8f-f9e168e0ad9a none luks
где 776317fc-a9b9-454e-8d8f-f9e168e0ad9a - ваш UUID, который я рекомендовал запомнить чуть выше по тексту.

nano /etc/fstab
Добавляем строчку
/dev/mapper/luks /home ext3 defaults 0 0

Указываем что монтируем раздел в /home

Осталось примонтировать этот раздел во временную точку, убедится что работает и можно переносить данные и перезагружаться:
/etc/init.d/cryptdisks start
mount /dev/mapper/luks /mnt

После перезагрузки система спросит пароль на этапе монтирования дисков и если введенный пароль окажется правильным то будет доступна домашняя директория.