如何在DigitalOcean块存储卷上创建加密文件系统

介绍

DigitalOcean Volumes是可扩展的,基于SSD的区块存储设备。

卷在休息时被加密,这意味着 Volume 上的数据无法在其存储集群之外读取。当您将 Volume 附加到 Droplet 时,Droplet 将提供一个解密的区块存储设备,并通过孤立的网络传输所有数据。

为了获得额外的安全性,您还可以在您的 Volume 上创建一个文件系统(LUKS 加密磁盘)(https://gitlab.com/cryptsetup/cryptsetup/blob/master/README.md)。

本教程涵盖了如何:

  • 在您的卷中创建一个包含文件系统的密码保护的加密磁盘。 * 手动安装加密文件系统用于使用,然后卸载并在完成后重新安装。

前提条件

要遵循本教程,您将需要:

<$>[警告] 警告: 此过程对 Volume 上任何数据都具有破坏性. 请确保在重新定义现有 Volume 之前,要么从新 Volume 开始,要么从 备份您的数据开始。

步骤 1 – 创建加密磁盘

cryptsetup是一个用于管理LUKS卷除其他加密格式之外的实用程序,首先使用cryptsetup在您的卷上初始化加密磁盘。

1sudo cryptsetup -y -v luksFormat /dev/disk/by-id/scsi-0DO_Volume_volume-lon1-01

请确保将volume-lon1-01替换为你的卷名(LINK0)。-y旗将要求你在被要求创建时两次输入你的密码短语。

输出将要求您确认在卷上重写数据,在所有封面中输入YES,然后按ENTER继续。

1[secondary_label Output]
2WARNING!
3========
4This will overwrite data on /dev/disk/by-id/scsi-0DO_Volume_volume-lon1-01 irrevocably.
5
6Are you sure? (Type uppercase yes): YES

接下来,输出将提示您为加密磁盘创建一个密码短语. 输入一个独特的、强大的密码短语并通过第二次输入来验证它。

1[secondary_label Output]
2. . .
3Enter passphrase:
4Verify passphrase:
5Command successful.

如果您需要,您可以在未来使用cryptsetup luksChangeKey命令更改此密码,您还可以使用cryptsetup luksAddKey每台设备添加多达8个额外的密码。

在此时,您的磁盘被创建并加密,然后解密并将其绘制到 标签以便更容易参考。

1sudo cryptsetup luksOpen /dev/disk/by-id/scsi-0DO_Volume_volume-lon1-01 secure-volume

一旦你输入它,卷将被映射到 /dev/mapper/secure-volume

为了确保一切工作,检查加密磁盘的细节。

1cryptsetup status secure-volume

您将看到类似于此的输出,表示 Volume 标签和类型。

1[secondary_label Output]
2/dev/mapper/secure-volume is active.
3  type:    LUKS1
4  cipher:  aes-xts-plain64
5  keysize: 256 bits
6  device:  /dev/sda
7  offset:  4096 sectors
8  size:    209711104 sectors
9  mode:    read/write

此时,您有一个受密码保护的加密磁盘,下一步是在该磁盘上创建一个文件系统,以便操作系统可以使用它来存储文件。

步骤2 - 创建和组装文件系统

首先,让我们看看Droplet上的当前可用磁盘空间。

1df -h

您将看到类似于此的输出,取决于您的 Droplet 配置:

 1[secondary_label Output]
 2Filesystem Size Used Avail Use% Mounted on
 3udev 2.0G 0 2.0G 0% /dev
 4tmpfs 396M 5.6M 390M 2% /run
 5/dev/vda1 78G 877M 77G 2% /
 6tmpfs 2.0G 0 2.0G 0% /dev/shm
 7tmpfs 5.0M 0 5.0M 0% /run/lock
 8tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
 9/dev/vda15 105M 3.4M 101M 4% /boot/efi
10tmpfs 396M 0 396M 0% /run/user/1000

目前,/dev/mapper/secure-volume 未出现在此列表中,因为 Volume 尚未被 Droplet 访问。

使用mkfs.xfs实用程序(m a** k** e ** f** ile ** s** 系统)在卷上创建一个 XFS文件系统。

1sudo mkfs.xfs /dev/mapper/secure-volume

一旦创建了文件系统,您可以安装(https://andsky.com/tech/tutorials/how-to-partition-and-format-digitalocean-block-storage-volumes-in-linux# mounting-the-filesystems),这意味着在您的Droplet上为操作系统提供。

创建一个 mount point,这是文件系统将附加的地方. 一个好的建议为一个 mount point 在 /mnt 目录中的空目录,所以我们将使用 `/mnt/secure。

1sudo mkdir /mnt/secure

然后安装文件系统。

1sudo mount /dev/mapper/secure-volume /mnt/secure

要确保它工作,请再次检查您的Droplet上的可用磁盘空间。

1df -h

您现在将看到/dev/mapper/secure-volume列表。

 1[secondary_label Output]
 2Filesystem Size Used Avail Use% Mounted on
 3udev 2.0G 0 2.0G 0% /dev
 4tmpfs 396M 5.6M 390M 2% /run
 5/dev/vda1 78G 877M 77G 2% /
 6tmpfs 2.0G 0 2.0G 0% /dev/shm
 7tmpfs 5.0M 0 5.0M 0% /run/lock
 8tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
 9/dev/vda15 105M 3.4M 101M 4% /boot/efi
10tmpfs 396M 0 396M 0% /run/user/1000
11/dev/mapper/secure-volume 100G 33M 100G 1% /mnt/secure

这意味着您的加密文件系统已附加并可用于使用。

当您不再需要访问 Volume 上的数据时,您可以卸载文件系统并锁定加密磁盘。

1sudo umount /mnt/secure
2sudo cryptsetup luksClose secure-volume

您可以用「df -h」验证文件系统不再可用. 为了使 Volume 上的数据再次可用,您将通过打开磁盘的步骤(「cryptsetup luksOpen...」),创建一个安装点,并安装文件系统。

为了避免每次想要使用 Volume 时都经历此手动过程,您可以配置文件系统在您的 Droplet 启动时自动安装。

步骤 3 – 自动将文件系统安装在启动上

在这个最后一步中,我们将创建一个密钥并将其添加为密码,然后使用该密钥来配置 Volume 进行解密和安装,因为 Droplet 正在启动。

/root/.secure_key 中创建一个密钥文件. 此命令将创建一个具有随机内容的 4 KB 文件:

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

调整此密钥文件的权限,以便只有 root 用户才能读取。

1sudo chmod 0400 /root/.secure-key

然后添加密钥作为加密磁盘的密码。

1cryptsetup luksAddKey /dev/disk/by-id/scsi-0DO_Volume_volume-lon1-01 /root/.secure-key

您将被提示使用一个密码,您可以输入您第一次创建加密磁盘时设置的密码。

/etc/crypttab 是定义系统启动时要设置加密磁盘的配置文件。

1sudo nano /etc/crypttab

将下列行添加到文件底部以绘制启动时的卷。

1[label /etc/crypttab]
2. . .
3secure-volume /dev/disk/by-id/scsi-0DO_Volume_volume-lon1-01 /root/.secure-key luks

/etc/crypttab中的行格式是device_name device_path key_path options 在这里,设备名称是secure-volume(或您选择的名称),路径是/dev/disk/by-id/...,关键文件是我们刚刚在/root/.secure_key创建的,选项指定了luks加密。

保存并关闭文件。

/etc/fstab 是一个用于自动安装的配置文件. 打开此文件进行编辑。

1sudo nano /etc/fstab

将下列行添加到文件底部,以便在启动时自动安装磁盘。

1[label /etc/fstab]
2. . .
3/dev/mapper/secure-volume /mnt/secure xfs defaults,nofail 0 0

/etc/fstab 中的前三个参数总是 device_path mount_point file_system_type`. 在这里,我们有相同的设备路径和安装点,就像在步骤 2 中一样,我们指定了 XFS 文件系统。

保存和关闭文件. 您的加密文件系统现在设置为自动安装,当您的 Droplet 启动. 您可以通过重新启动您的 Droplet 来测试这一点,但要小心任何正在运行的服务。

结论

默认情况下,DigitalOcean Volumes是加密的,当它们不附加到Droplet时。 在本教程中,您通过将文件系统放在加密磁盘上加密磁盘上,添加了一个额外的安全层。

您可以在 Getting Started with DigitalOcean Block Storage 系列中了解更多关于 DigitalOcean 区块存储量。

Published At
Categories with 技术
comments powered by Disqus