介绍
DigitalOcean Volumes是可扩展的,基于SSD的区块存储设备。
卷在休息时被加密,这意味着 Volume 上的数据无法在其存储集群之外读取。当您将 Volume 附加到 Droplet 时,Droplet 将提供一个解密的区块存储设备,并通过孤立的网络传输所有数据。
为了获得额外的安全性,您还可以在您的 Volume 上创建一个文件系统(LUKS 加密磁盘)(https://gitlab.com/cryptsetup/cryptsetup/blob/master/README.md)。
本教程涵盖了如何:
- 在您的卷中创建一个包含文件系统的密码保护的加密磁盘。 * 手动安装加密文件系统用于使用,然后卸载并在完成后重新安装。
前提条件
要遵循本教程,您将需要:
- A Volume attached to a Droplet.
<$>[警告] 警告: 此过程对 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 区块存储量。