Перенос системы на зашифрованный раздел Luks | OTUS
Запланируйте обучение с выгодой в Otus!
-15% на все курсы до 22.11 Забрать скидку! →
Выбрать курс

Перенос системы на зашифрованный раздел Luks

Linux_Deep_10-5020-614c43.10_site.png

Был солнечный тёплый день, когда мне поручили зашифровать все сервера. А это более 50 разных машин: на Centos, debian и ubuntu. Яростно погуглив, порыскав по форумам, я не нашёл однозначного решения. Помогли инструкции по переносу машин с диска на диск и инструкции запуска системы с флешки. Всё получилось, и вот уже несколько десятков машин крутятся с такой схемой.

Итак, то же нужно сделать?

Представляю вашему вниманию самописную инструкцию по переносу на зашифрованный раздел c использованием ESX 6.0. Её можно использовать и для переноса системы, если не брать в расчёт шифрование.

1. Подготовка к переносу

Сначала подключаем диск нужного размера:

https://cdn.otus.ru/media/public/2d/04/image001-20774-2d0430.png

1.1 Разбиваем диск на 2 и более разделов

/boot должен быть отдельно. Он, как вы догадались, не будет зашифрован. Диск не обязательно должен совпадать с исходным размером:

https://cdn.otus.ru/media/public/15/48/image004-20774-154838.png

Форматируем /boot mkfs.ext4 /dev/sda1

Создаём зашифрованный раздел cryptsetup luksFormat /dev/sdb2

image022.png

Важно: YES большими буквами! В принципе указание об этом будет, но на басурманском языке.

1.2 Инициализируем раздел

cryptsetup luksOpen /dev/sdb sdb2_crypt и не забываем дописывать аргумент или удивляемся, что сделано не так.

image025.png

1.3 Далее я создал LVM на него и положил систему

Тут всё просто:

pvcreate /dev/mapper/sda2_crypt

Указываем зашифрованный диск:

vgcreate crypto /dev/mapper/sda2_crypt

1.4 Создаём раздел под корневой раздел

lvcreate -l 100FREE% -n название раздела, название группы или как на картинке немного по-другому:

image032.png

1.5 Создаём раздел для файла подкачки

lvcreate -L 2G -n swap название группы

image033.png Проверяем:

image034.png

lvscan

1.6 Форматируем LVM

mkfs.ext4 /dev/crypto/vol1
mkfs.ext4 /dev/crypto/SWAP

Если нет swap, создаём и подключаем. Размер выбираем так, что если памяти выделено 2 Гб то swap должен быть от 2 до 4 Гб.

1.7 Создаём swap

fallocate -l 4G /swapdir/swapfile

Проверяем , что он создан:

ls  -lh /swapdir/swapfile

1.8 Настраиваем права

chmod 600 /swapdir/swapfile

Делаем из файла swap:

mkswap /swapdir/swapfile

1.9 Подключаем в систему

swapon /swapdir/swapfile

Проверяем:

swapon –s

Теперь самое интересное — всё то, что нажито непосильным трудом!

2. Приступаем к переносу!

2.1 Создаём папки

mkdir /mnt/new
mkdir /mnt/old
mkdir /mnt/boot

2.2 Монтируем

Текущий корневой раздел монтируем в папку old.

mount /dev/sda1 /mnt/old

2.3 Новый LVM раздел

mount /dev/crypto/vol1/ /mnt/new/

2.4 Раздел загрузки

mount /dev/sdb1 /mnt/boot

2.5 Копируем корневой раздел

rsync -av /mnt/old/ /mnt/new/

2.6 Копируем загрузку

rsync -av /mnt/old/boot/ /mnt/boot/

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

3.1 Монтируем систему

Mount –bind /sys /mnt/new/sys
Mount –bind /dev /mnt/new/dev
Mount –bind /proc /mnt/new/proc

image041.png

3.2 Меняем корневой раздел

chroot /mnt/new

Посмотреть все UUID. Ваши будут отличаться от представленных:

image042.png

blkid

3.3 Монтирование дисков в новой системе

image045.png

vim /etc/fstab
/dev/mapper/crypto-vol1 / ext4 noatime,errors=remount-ro 0 1
 UUID="3efdf7e2-4bff-4fd6-b95a-60bb60ece16c"  /boot      ext4  default 0 1
 UUID=”09f94ec7-cb53-4bdf-9c20-d10b9b358719”  /swap        swap   sw     0 0

3.4 Монтируем Luks, чтобы загружался при загрузке

vim /etc/crypttab

image047.png

3.5 UUID крипто диска прописываем:

sda2_crypt UUID=0a6accdb-9968-403a-b8bd-f9be6d3aaaec none luks

!!!Рекомендую сделать снапшот или бекап перед этим этапом!!!

4 Загрузка

4.1 Редактируем GRUB

image049.png

Vim /etc/default/grub
GRUB_ENABLE_CRYPTODISK=y

4.2 Устанавливаем GRUB на диск, с которого будет грузится:

grub-install /dev/sdb

Могут быть сообщения об ошибках lvm, игнорируем их.

4.3 Обновляем GRUB

update-grub

4.4 Обновляем образ

update-initramfs -k all –u

4.5 Делаем EXIT

exit

Из корневого раздела /mnt/new

4.6 Отмонтируем

umount /mnt/new/sys
umount /mnt/new/dev
umount /mnt/new/proc
umount /mnt/new
umount /mnt/boot

4.7 Выключаемся

poweroff

4.8 Меняем диск загрузки, грузимся

После смены дисков, их названия изменятся. Например, были sdb — станет sda и наоборот.

Тестировалось на debian 8 и Ubuntu 16.04 для centos немного другая схема вместо grub-update , grub-mkconfig , а вместо update-initramfs dracut.

5. Варианты шифрования

CBC:# cryptsetup -y --cipher aes-cbc-essiv:sha256 --key-size 256 luksFormat /dev/sdx
LRW:# cryptsetup -y --cipher aes-lrw-benbi --key-size 384 luksFormat /dev/sdx
XTS:# cryptsetup -y --cipher aes-xts-plain --key-size 512 luksFormat /dev/sdx

Вот и всё! Надеюсь, сильно не наврал! Если что — пишите в комментариях! Полезные ссылки: — Вики о шифрованииШифрование дисков в Linux

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто
Черная пятница в Otus! ⚡️
Скидка 15% на все курсы до 22.11 →