Как создать зашифрованную файловую систему на блочном хранилище DigitalOcean

Вступление

DigitalOcean Volumes являются масштабируемыми блочными устройствами хранения на основе SSD. Тома позволяют вам создавать и расширять емкость хранилища вашей инфраструктуры без необходимости изменять размер капель.

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

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

Этот урок охватывает как:

  • Создайте на томе защищенный паролем зашифрованный диск с файловой системой.

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

  • Автоматически монтировать файловую систему при загрузке Droplet.

Предпосылки

Чтобы следовать этому уроку, вам понадобится:

  • Https://www.digitalocean.com/community/tutorials/how-to-use-block-storage-on-digitalocean#creating-and-attaching-volumes[Volume Attached] к https: //www.digitalocean. ком / сообщества / учебники / как к создать-ваш-первых digitalocean-капельку [капелька].

Шаг 1 - Создание зашифрованного диска

+ cryptsetup + - это утилита, используемая для управления томами LUKS в дополнение к другим зашифрованным форматам. Для начала используйте + cryptsetup + для инициализации зашифрованного диска на томе.

sudo cryptsetup -y -v luksFormat /dev/disk/by-id/scsi-0DO_Volume_

Обязательно замените ++ на https://www.digitalocean.com/community/tutorials/how-to-partition-and-format-digitalocean-block-storage-volumes-in-linux#working-with-volumes -on-digitalocean [название вашего тома]. Флаг + -y + потребует от вас ввода вашей парольной фразы дважды, когда вас попросят ее создать. Флаг + -v + добавляет дополнительные удобочитаемые выходные данные для проверки успешности выполнения команды.

Вывод попросит вас подтвердить перезапись данных на томе. Введите + YES прописными буквами, затем нажмите` + ENTER` для продолжения.

OutputWARNING!
========
This will overwrite data on /dev/disk/by-id/scsi-0DO_Volume_ irrevocably.

Are you sure? (Type uppercase yes):

Далее вывод предложит вам создать фразу-пароль для зашифрованного диска. Введите уникальный надежный пароль и подтвердите его, введя его еще раз. Эта фраза * не подлежит восстановлению *, поэтому храните ее в безопасном месте.

Output. . .
Enter passphrase:
Verify passphrase:
Command successful.

Если вам нужно, вы можете изменить эту фразу-пароль в будущем с помощью команды + cryptsetup luksChangeKey +. Вы также можете добавить до 8 дополнительных парольных фраз на устройство с помощью + cryptsetup luksAddKey +.

На этом этапе ваш диск создан и зашифрован. Затем расшифруйте и сопоставьте его с https://www.digitalocean.com/community/tutorials/an-introduction-to-storage-terminology-and-concepts-in-linux#how-linux-manages-storage-devices [ярлык] для облегчения ссылки. Здесь мы помечаем его + secure-volume +, но вы можете пометить его как угодно.

sudo cryptsetup luksOpen /dev/disk/by-id/scsi-0DO_Volume_

Вам будет предложено ввести пароль. После того, как вы введете его, том будет теперь отображаться в + / dev / mapper / secure-volume +.

Чтобы убедиться, что все работает, проверьте данные зашифрованного диска.

cryptsetup status

Вы увидите вывод, как этот, с указанием метки и типа тома.

Output/dev/mapper/ is active.
 type:    LUKS1
 cipher:  aes-xts-plain64
 keysize: 256 bits
 device:  /dev/sda
 offset:  4096 sectors
 size:    209711104 sectors
 mode:    read/write

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

Шаг 2 - Создание и монтирование файловой системы

Давайте сначала посмотрим на текущее доступное дисковое пространство в Droplet.

df -h

Вы увидите вывод, похожий на этот, в зависимости от конфигурации вашей капли:

OutputFilesystem      Size  Used Avail Use% Mounted on
udev            2.0G     0  2.0G   0% /dev
tmpfs           396M  5.6M  390M   2% /run
/dev/vda1        78G  877M   77G   2% /
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/vda15      105M  3.4M  101M   4% /boot/efi
tmpfs           396M     0  396M   0% /run/user/1000

В данный момент + / dev / mapper / + не отображается в этом списке, потому что Том еще не доступен для Droplet. Чтобы сделать его доступным, нам нужно создать и смонтировать файловую систему.

Используйте утилиту + mkfs.xfs + ( m a k e f ile s ystem) для создания https://en.wikipedia.org/wiki/ Файловая система XFS [XFS] на томе.

sudo mkfs.xfs /dev/mapper/

После создания файловой системы вы можете https://www.digitalocean.com/community/tutorials/how-to-partition-and-format-digitalocean-block-storage-volumes-in-linux#mounting-the-filesystems [смонтировать] его, что означает сделать его доступным для операционной системы вашего Droplet.

Создайте точку mount, к которой будет прикреплена файловая система. Хорошей рекомендацией для точки монтирования является пустой каталог в каталоге + / mnt +, поэтому мы будем использовать + / mnt / +.

sudo mkdir /mnt/

Затем смонтируйте файловую систему.

sudo mount /dev/mapper/ /mnt/

Чтобы убедиться, что это сработало, снова проверьте доступное дисковое пространство на вашей капле.

df -h

Теперь вы увидите + / dev / mapper / + в списке.

OutputFilesystem                 Size  Used Avail Use% Mounted on
udev                       2.0G     0  2.0G   0% /dev
tmpfs                      396M  5.6M  390M   2% /run
/dev/vda1                   78G  877M   77G   2% /
tmpfs                      2.0G     0  2.0G   0% /dev/shm
tmpfs                      5.0M     0  5.0M   0% /run/lock
tmpfs                      2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/vda15                 105M  3.4M  101M   4% /boot/efi
tmpfs                      396M     0  396M   0% /run/user/1000

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

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

sudo umount /mnt/
sudo cryptsetup luksClose

С помощью + df -h + вы можете проверить, что файловая система больше не доступна. Чтобы снова сделать данные на томе доступными, вы должны выполнить шаги, чтобы открыть диск (+ cryptsetup luksOpen …​ +), создать точку монтирования и смонтировать файловую систему.

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

Шаг 3 - Автоматическое монтирование файловой системы при загрузке

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

Создайте файл ключа в + / root / .secure_key +. Эта команда создаст файл размером 4 КБ со случайным содержимым:

sudo dd if=/dev/urandom of=/root/.secure-key  bs=1024 count=4

Настройте права доступа к этому ключевому файлу, чтобы он мог быть прочитан только пользователем * root *.

sudo chmod 0400 /root/.secure-key

Затем добавьте ключ в качестве пароля для зашифрованного диска.

cryptsetup luksAddKey /dev/disk/by-id/scsi-0DO_Volume_ /root/.secure-key

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

+ / etc / crypttab + - это файл конфигурации, который определяет зашифрованные диски для настройки при запуске системы. Откройте этот файл с помощью + nano + или вашего любимого текстового редактора.

sudo nano /etc/crypttab

Добавьте следующую строку в конец файла, чтобы отобразить том при загрузке.

/ И т.д. / crypttab

. . .
/dev/disk/by-id/scsi-0DO_Volume_ /root/.secure-key  luks

Формат строк в + / etc / crypttab +: + имя_устройства имя_устройства key_path options +. Здесь имя устройства - + secure-volume + (или имя, которое вы выбрали вместо этого), путь - + / dev / disk / by-id / +, файл ключа - это то, что мы только что создали в + / root / .secure_key + `, а опции определяют + luks + `шифрование.

Сохраните и закройте файл.

+ / etc / fstab + - это файл конфигурации для автоматизации монтирования. Откройте этот файл для редактирования.

sudo nano /etc/fstab

Добавьте следующую строку в конец файла, чтобы автоматически смонтировать диск при загрузке.

/ И т.д. / Fstab

. . .
/dev/mapper/ /mnt/ xfs  defaults,nofail 0 0

Первые три аргумента строк в + / etc / fstab + всегда являются + device_path mount_point file_system_type +. Здесь у нас тот же путь к устройству и точка монтирования, что и на шаге 2, и мы указываем файловую систему XFS. Вы можете прочитать о других полях на справочной странице + fstab + (+ man fstab +).

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

Заключение

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

Вы можете узнать больше о томах блочных хранилищ DigitalOcean в серии Getting Started with Block Storage Storage.

Related