Шифрование дисков

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

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

Далее резберем пример шифрования диска с данными на CentOS 7. Сам диск /dev/vdb примонтирован в /volumes/disk1 при помощи dm-crypt.

1. Устанавливаем необходимые утилиты:

# yum install -y cryptsetup cryptsetup-reencrypt


2. Останавливаем все процессы, использующие данный диск:

# lsof /volumes/disk1
# systemctl stop XXX
# systemctl stop YYY


3. Для надежности проверяем файловую систему:

# e2fsck -f  /dev/vdb
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vdb: 88/655360 files (3.4% non-contiguous), 60910/2621440 blocks

4. Уменьшаем файловую систему до минимально возможного размера:

# resize2fs -M /dev/vdb

resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vdb to 24971 (4k) blocks.
The filesystem on /dev/vdb is now 24971 blocks long.


5. Используем утилиту cryptsetup-reencrypt для перешифрования устройства:

# cryptsetup-reencrypt /dev/vdb --new  --reduce-device-size 4096S
Enter new passphrase:
Verify passphrase:
Progress:  20.6%, ETA 00:33, 2112 MiB written, speed 245.6 MiB/s

Будет запрошена ключевая фраза для шифрования. Введенное значение следует запомнить.

6. Проверяем работу с  зашифрованным диском:

# cryptsetup open /dev/vdb vdb_crypt
Enter passphrase for /dev/vdb:


7. Расширяем файловую систему до размера диска:

# resize2fs /dev/mapper/vdb_crypt


8. Изменяем имя устройства для монтирования:

# sed 's#/dev/vdb#/dev/mapper/vdb_crypt#' -i /etc/fstab


9. Проверяем монтирование файловой системы:

# mount /volumes/disk1


10. Для автоматического монтирования при загрузке системы добавляем информацию о зашифрованном разделе в /etc/crypttab:

UUID=$(blkid -s UUID -o value  /dev/vdb)
echo "vdb_crypt UUID=${UUID} none luks,discard" >> /etc/crypttab


Ключевая фраза для расшифровки диска (passphrase) будет запрашиваться при загрузке системы. Ввести кодовую фразу можно при помощи VNC-доступа в консоль виртуальной машины.


Доступ в VNC можно получить через интерфейс панели Horizon:

1. Раздел виртуальные машины → пункт меню «Консоль». 


Для корректной работы консоли виртуальной машины через VNC необходимо изменить настройки загрузчика grub, удалив строку "console=ttyS0,115200" из параметров загрузки:

sed 's#console=ttyS0,115200 ##' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg


2. Перезагружаем машину. При загрузке будет запрошена ключевая фраза для расшифровки диска:

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