VK Cloud logo
Обновлена18 августа 2023 г. в 12:48

Шифрование диска при помощи cryptsetup

Настройте шифрование диска виртуальной машины с помощью cryptsetup для Linux.

Подготовительные шаги

Выполните подготовительные шаги, чтобы создать тестовую виртуальную машину Linux под управлением CentOS 7.9, а также дополнительный диск, который будет зашифрован.

  1. Создайте ВМ Linux из образа CentOS 7.9.

  2. Создайте и подключите диск к ВМ.

  3. Подключитесь к ВМ.

  4. Выведите список дисков и найдите имя нужного диска (например, /dev/vdb):

    sudo fdisk -l
  5. Если на диске нет файловой системы, отформатируйте его.

    1. Проверьте, что на диске нет файловой системы:

      lsblk -f
    2. Отформатируйте диск:

      sudo mkfs.ext4 /dev/vdb
    3. Проверьте результат форматирования:

      lsblk -f
  6. Настройте монтирование диска.

    1. Создайте директорию для монтирования диска /volumes/disk1:

      1sudo mkdir /volumes
      2sudo mkdir /volumes/disk1
    2. Добавьте в файл /etc/fstab строку с параметрами монтирования диска:

      sudo sed -i '$a /dev/vdb /volumes/disk1 auto defaults 0 0' /etc/fstab
    3. Выведите содержимое файла и убедитесь, что строка добавлена:

      cat /etc/fstab
  7. Перезапустите виртуальную машину:

    sudo reboot
  8. Проверьте, что диск примонтирован в указанную директорию:

    lsblk

1. Установите cryptsetup

Выполните команду для установки:

sudo yum install -y cryptsetup cryptsetup-reencrypt

2. Зашифруйте диск

  1. Сделайте диск не загрузочным.

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

    1sudo lsof /volumes/disk1
    2sudo systemctl stop volumes-disk1.mount
  3. Посмотрите размер текущей файловой системы:

    sudo e2fsck -f /dev/vdb

    Пример результата выполнения команды:

    1e2fsck 1.42.9 (28-Dec-2013)
    2Pass 1: Checking inodes, blocks, and sizes
    3Pass 2: Checking directory structure
    4Pass 3: Checking directory connectivity
    5Pass 4: Checking reference counts
    6Pass 5: Checking group summary information
    7/dev/vdb: 88/655360 files (3.4% non-contiguous), 60910/2621440 blocks
  4. Измените размер файловой системы до минимально возможного:

    sudo resize2fs -M /dev/vdb

    Пример результата выполнения команды:

    1resize2fs 1.42.9 (28-Dec-2013)
    2Resizing the filesystem on /dev/vdb to 24971 (4k) blocks.
    3The filesystem on /dev/vdb is now 24971 blocks long.
  5. Запустите шифрование диска:

    sudo cryptsetup-reencrypt /dev/vdb --new --reduce-device-size 4096S
  6. Введите и подтвердите ключевую фразу:

    1Enter new passphrase:
    2Verify passphrase:
  7. Дождитесь завершения процесса шифрования:

    Finished, time 00:23.401, 3875 MiB written, speed 165.6 MiB/s
  8. Проверьте работу с зашифрованным диском:

    1. Выполните команду:

      sudo cryptsetup open /dev/vdb vdb_crypt
    2. Введите ключевую фразу и нажмите Enter.

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

    sudo resize2fs /dev/mapper/vdb_crypt
  10. Измените имя устройства для монтирования:

sudo sed 's#/dev/vdb#/dev/mapper/vdb_crypt#' -i /etc/fstab
  1. Выведите содержимое файла fstab и убедитесь, что запись изменена:

    cat /etc/fstab
  2. Примонтируйте диск:

    sudo mount /volumes/disk1
  3. Добавьте информацию о зашифрованном разделе в /etc/crypttab:

    1. Получите root доступ:

      sudo -s
    2. Выполните команду:

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

3. Измените параметры загрузчика

Настройте загрузчик, чтобы ключевая фраза для расшифровки диска запрашивалась при загрузке системы. Для ввода ключевой фразы используйте VNC-консоль виртуальной машины.

  1. Измените настройки загрузчика grub. Удалите настройку console=ttyS0,115200 в параметрах загрузчика:

    sudo sed 's#console=ttyS0,115200 ##' -i /etc/default/grub
  2. Просмотрите файл grub и убедитесь, что настройка удалена:

    cat /etc/default/grub
  3. Выполните конфигурирование загрузчика:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  4. Перезагрузите ВМ.

4. Получите доступ к ВМ

  1. Перейдите в VNC-консоль виртуальной машины. В выводе консоли при загрузке операционной системы появится приглашение ввести ключевую фразу:

    Please enter passphrase for disk vdb_crypt on /volumes/disk1:
  2. Введите ключевую фразу и нажмите Enter.

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