Перенос /home на зашифрованный раздел.

Этот пост не столько инструкция, сколько заметка.

Итак, нам нужно: немного свободного места:

$ sudo vgdisplay 
--- Volume group ---
VG Name               vg
Free  PE / Size       2976 / 11,62 GiB

Установленый пакет cryptsetup:

$ sudo aptitude install cryptsetup

Я использую luks шифрование из-за того, что оно работает примерно так:

  1. Вводим ключевую фразу.
  2. Фраза расшифровывает ключ.
  3. Ключом расшифровываем диск.

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

Итак, приступим:

1. Создадим раздел который будем шифровать:

sudo lvcreate -n crypthome -L11G

2. Установим luks на раздел:

$ sudo cryptsetup luksFormat /dev/mapper/vg-crypthome 
WARNING!
========
This will overwrite data on /dev/mapper/vg-crypthome         irrevocably.
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase: 
Verify passphrase:

3. Создадим специальное, расшифрованное устройсво, чтобы система могла писать:

$ sudo cryptsetup luksOpen /dev/mapper/vg-crypthome crypto
Enter passphrase for /dev/mapper/vg-crypthome:

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

$ sudo mkfs.ext4 /dev/mapper/crypto

5. Создадим запись в /etc/crypttab:

crypto /dev/mapper/vg-crypthome none luks

6. Создадим запись в /etc/fstab (закоментировав старую):

/dev/mapper/crypto /home ext4 defaults 0 2

7. Создаём точку монтирования для переноса данных с нешифрованного раздела на зашифрованный:

$ sudo mkdir /mnt/home
$ sudo mount /dev/mapper/crypto /mnt/home

8. Перенесём данные:

$ sudo rsync -av /home/* /mnt/home

9. Ещё раз запустим rsync. Выключим все приложения, сделаем rsync ещё раз.

10.1. Перед перезагрузкой обновим initramfs, чтобы включить туда модули необходимые для работы с шифрованными разделами (aes, dm-crypt):

$ sudo update-initramfs -u -k all

10.2. Перезагружаем машину. Убеждаемся, что всё работает, благодаря тому, то появляется приглашение с вводом ключевой фразы. Когда появится окно логина в систему, переключаемся на первую консоль, логинимся под рутом. Монтируем старый /home.

# mount /dev/mapper/vg-home /mnt/home

11. Выполняем последнее копирование данных со старого домика:

# rsync -av /mnt/home/* /home

12. Отмонтируем старый домик, переключаемся на 7 консоль (Иксовую). Логинимся. Вуаля, теперь наш домик зашифрован.

В принципе можно было произвести подмену /home и без перезагрузки, но так проще.

Если производить такую подмену, то нужно будет завершить все процессы пользователя, проверить не использует ли кто /home/$USER при помощи lsof, завершить и эти процессы. Затем выйти в 1 терминал, произвести финальный rsync, отмонтировать разделы, перемонтировать их и запустить X-сервер с уже новым разделом.

В следующей заметке я опишу алгоритм ресайза зашифрованного раздела. У меня под /home на нетбуке было выделено 100Гб места, однако файлов там было всего 9Гб. В общем диску простаивать зря не стоит, поэтому буду увеличивать диск.

Если у вас остались вопросы, напишите мне письмо.