[[Шифрование корневого раздела на SSD диске Ubuntu 14.04 (пароль)]]

Ubuntu

Шифрование корневого раздела на SSD диске Ubuntu 14.04 (пароль)

Модуль dm-crypt включен в ядро >=2.6.4

Статья рассматривает перенос Ubuntu на новый диск с зашифрованным корнем.
Диск SSD, без swap'a, с поддержкой TRIM

Дано:

  • /dev/sda - текущей диск на котором установлена Ubuntu.
  • /dev/sdb - новый чистый диск, который только что воткнули.
  • Ввод пароля будет осуществятся с клавиатуры при включении компьютера.

Так же к ознакомлению : Шифрование разделов dm-crypt Ubuntu 8.04

Подготовка

Диск

Разобьем диск следующим образом:

Имя    Флаги        Тип раздела  Тип ФС    [Метка]  Размер (МБ)
----------------------------------------------------------------
sdb1   Загрузочный  Основной     Linux              509,97      # Загрузочный ext2
sdb5                Основной     Linux              100002,96   # Зашифрованный корень
sdb6                Основной     Linux              395597,46   # Не зашифрованный раздел для файл помойки

Утилиты и модули

Понадобятся cryptsetup

sudo apt-get install cryptsetup

Модуль dm_crypt

sudo modprobe dm_crypt

Форматирование

Создание шифрованного раздела ROOT

sudo cryptsetup luksFormat /dev/sdb5
Для тех кто не силен в английском
A you sure? (Type uppercase yes):

правильный ответ большими буквами: YES

Задать пароль

Введите пароль для LUKS: 
Verify passphrase: 

Подключение

sudo cryptsetup luksOpen /dev/sdb5 root

Форматирование

sudo mkfs.ext2 /dev/sdb1
sudo mkfs.ext4 -E discard /dev/mapper/root

Перенос системы

Монтирование

sudo mkdir /tmp/root
sudo mount /dev/mapper/root /tmp/root/
sudo mkdir /tmp/root/boot
sudo mount /dev/sdb1 /tmp/root/boot/

Копирование

Скопировать корень системы на новый диск

sudo rsync -AaHSxv / /tmp/root/
Команда rsync скопирует данные с сохранением всех прав.
Копирование с ключом x, это значит, содержимое каталогов примантированных в текущей момент к корню не будет скопировано в корень новой системы.
Будьте внимательны если /boot, /usr, /home и т.п. каталоги у вас примантированны с других разделов.

Папка /tmp/root/dev/ сейчас пуста, создать устройства

sudo mknod /tmp/root/dev/console -m 0600 c 5 1
sudo mknod /tmp/root/dev/null -m 0666 c 1 5



FSTAB

Переход в окружение новой системы
sudo mount -t proc none /tmp/root/proc/
sudo mount -o bind /dev/ /tmp/root/dev/
sudo mount -o bind /sys/ /tmp/root/sys/
sudo chroot /tmp/root/ /bin/bash

Посмотрим UUID

sudo blkid

/dev/sdb1: UUID="179dde80-2397-49ab-afd1-a156e2d8d3c2" TYPE="ext2" 
/dev/sdb5: UUID="33c0f114-23c3-43ad-832e-3170d4d43c47" TYPE="crypto_LUKS" 
/dev/mapper/root: UUID="c4e1b954-e7e1-4bc0-bd17-22e594592151" TYPE="ext4" 

Внесем изменения

/etc/fstab

...

UUID=c4e1b954-e7e1-4bc0-bd17-22e594592151 /      ext4    errors=remount-ro  0 1
UUID=179dde80-2397-49ab-afd1-a156e2d8d3c2 /boot  ext2    noauto,noatime     1 2

/etc/crypttab

root UUID=33c0f114-23c3-43ad-832e-3170d4d43c47 none luks,discard

В Ubuntu опция discard, в других дистрибутивах может быть allow-discards, см. OPTIONS
man crypttab 



INITRAMFS

По прежнему находимся в окружении новой системы

Добавить модули (зависят от выбранных алгоритмов шифрования)

/etc/initramfs-tools/modules

dm_mod
dm_crypt
cryptoloop
sha256
sha512
aes
cbc
xts

Создать

/etc/initramfs-tools/conf.d/cryptroot

target=root,source=UUID=33c0f114-23c3-43ad-832e-3170d4d43c47,key=none,rootdev

/etc/default/cryptdisks

CRYPTDISKS_ENABLE=Yes
CRYPTDISKS_MOUNT=""
CRYPTDISKS_CHECK=blkid
CRYPTDISKS_PRECHECK=

БАГ №1
update-initramfs не включил в образ утилиту /sbin/cryptsetup
https://bugs.launchpad.net/ubuntu/+source/cryptsetup/+bug/1256730
Поэтому, надо определить переменную в сеансе
export CRYPTSETUP=y

либо

/usr/share/initramfs-tools/hooks/cryptroot

# Include cryptsetup modules, regardless of _this_ machine
# configuration
#if [ -n "$CRYPTSETUP" ] && [ "$CRYPTSETUP" != "n" ]; then
setup="yes"
#fi

БАГ №2
http://cyberjunky.nl/2014/03/31/fix-ssd-trim-on-ubuntu-14-04-lts/
Опция из /etc/crypttab не подцепляются
Костыль

/usr/share/initramfs-tools/scripts/local-top/cryptroot

cryptdiscard="yes"

Обновление

sudo update-initramfs -u -k all



GRUB

По прежнему находимся в окружении новой системы

Установка загрузчика на sdb

sudo cat /proc/mounts > /etc/mtab
sudo grub-install  /dev/sdb

Обновление

sudo update-grub

Проверим UUID

grep c4e1b954-e7e1-4bc0-bd17-22e594592151 /boot/grub/grub.cfg



Завершение

Выход из виртуального окружения

exit

Размонтирование

cd /
sudo umount /tmp/root/dev/
sudo umount /tmp/root/sys/
sudo umount /tmp/root/proc/
sudo umount /tmp/root/boot/
sudo umount /tmp/root/
sudo cryptsetup luksClose root

Перезагрузка

sudo reboot

Не забыть в BIOS выбрать загрузку с диска sdb.

Проверка опций

# sudo dmsetup table /dev/mapper/root --showkeys
0 249534464 crypt aes-xts-plain64 d584f6036e2e4c33cc646da51044a63457531379641c62f5005da2e50cca2af0 0 8:5 4096 1 allow_discards

Проверка TRIM

# sudo fstrim / -v
/: 120553218048 bytes were trimmed



Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
154 -15 = ?
 
howto/ubuntu/ubuntu_dmcrypt_root_ssd.txt · Последние изменения: 2014/09/04 16:41 — lexa
Gentoo Linux Driven by DokuWiki