怎么在Stratis中开始加密
这篇文章将为大家详细讲解有关怎么在Stratis中开始加密,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
先决条件
加密需要 Stratis 2.1 或更高版本。这篇文章中的例子使用的是 Fedora 33 的预发布版本。Stratis 2.1 将用在 Fedora 33 的最终版本中。
你还需要至少一个可用的块设备来创建一个加密池。下面的例子是在 KVM 虚拟机上完成的,虚拟磁盘驱动器为 5GB(/dev/vdb
)。
在内核密钥环中创建一个密钥
Linux 内核密钥环用于存储加密密钥。关于内核密钥环的更多信息,请参考 keyrings
手册页(man keyrings
)。
使用 stratis key set
命令在内核钥匙圈中设置密钥。你必须指定从哪里读取密钥。要从标准输入中读取密钥,使用 -capture-key
选项。要从文件中读取密钥,使用 -keyfile-path
选项。最后一个参数是一个密钥描述。它将稍后你创建加密的 Stratis 池时使用。
例如,要创建一个描述为 pool1key
的密钥,并从标准输入中读取密钥,可以输入:
# stratis key set --capture-key pool1keyEnter desired key data followed by the return key:
该命令提示我们输入密钥数据/密码,然后密钥就创建在内核密钥环中了。
要验证密钥是否已被创建,运行 stratis key list
:
# stratis key listKey Descriptionpool1key
这将验证是否创建了 pool1key
。请注意,这些密钥不是持久的。如果主机重启,在访问加密的 Stratis 池之前,需要再次提供密钥(此过程将在后面介绍)。
如果你有多个加密池,它们可以有一个单独的密钥,也可以共享同一个密钥。
也可以使用以下 keyctl
命令查看密钥:
# keyctl get_persistent @s318044983# keyctl showSession Keyring 701701270 --alswrv 0 0 keyring: _ses 649111286 --alswrv 0 65534 \_ keyring: _uid.0 318044983 ---lswrv 0 65534 \_ keyring: _persistent.01051260141 --alswrv 0 0 \_ user: stratis-1-key-pool1key
创建加密的 Stratis 池
现在已经为 Stratis 创建了一个密钥,下一步是创建加密的 Stratis 池。加密池只能在创建池时进行。目前不可能对现有的池进行加密。
使用 stratis pool create
命令创建一个池。添加 -key-desc
和你在上一步提供的密钥描述(pool1key
)。这将向 Stratis 发出信号,池应该使用提供的密钥进行加密。下面的例子是在 /dev/vdb
上创建 Stratis 池,并将其命名为 pool1
。确保在你的系统中指定一个空的/可用的设备。
# stratis pool create --key-desc pool1key pool1 /dev/vdb
你可以使用 stratis pool list
命令验证该池是否已经创建:
# stratis pool listName Total Physical Propertiespool1 4.98 GiB / 37.63 MiB / 4.95 GiB ~Ca, Cr
在上面显示的示例输出中,~Ca
表示禁用了缓存(~
否定了该属性)。Cr
表示启用了加密。请注意,缓存和加密是相互排斥的。这两个功能不能同时启用。
接下来,创建一个文件系统。下面的例子演示了创建一个名为 filesystem1
的文件系统,将其挂载在 /filesystem1
挂载点上,并在新文件系统中创建一个测试文件:
# stratis filesystem create pool1 filesystem1# mkdir /filesystem1# mount /stratis/pool1/filesystem1 /filesystem1# cd /filesystem1# echo "this is a test file" > testfile
重启后访问加密池
当重新启动时,你会发现 Stratis 不再显示你的加密池或它的块设备:
# stratis pool listName Total Physical Properties
# stratis blockdev listPool Name Device Node Physical Size Tier
要访问加密池,首先要用之前使用的相同的密钥描述和密钥数据/口令重新创建密钥:
# stratis key set --capture-key pool1keyEnter desired key data followed by the return key:
接下来,运行 stratis pool unlock
命令,并验证现在可以看到池和它的块设备:
# stratis pool unlock# stratis pool listName Total Physical Propertiespool1 4.98 GiB / 583.65 MiB / 4.41 GiB ~Ca, Cr# stratis blockdev listPool Name Device Node Physical Size Tierpool1 /dev/dm-2 4.98 GiB Data
接下来,挂载文件系统并验证是否可以访问之前创建的测试文件:
# mount /stratis/pool1/filesystem1 /filesystem1/# cat /filesystem1/testfilethis is a test file
使用 systemd 单元文件在启动时自动解锁 Stratis 池
可以在启动时自动解锁 Stratis 池,无需手动干预。但是,必须有一个包含密钥的文件。在某些环境下,将密钥存储在文件中可能会有安全问题。
下图所示的 systemd 单元文件提供了一个简单的方法来在启动时解锁 Stratis 池并挂载文件系统。欢迎提供更好的/替代方法的反馈。你可以在文章末尾的评论区提供建议。
首先用下面的命令创建你的密钥文件。确保用之前输入的相同的密钥数据/密码来代替passphrase
。
# echo -n passphrase > /root/pool1key
确保该文件只能由 root 读取:
# chmod 400 /root/pool1key# chown root:root /root/pool1key
在 /etc/systemd/system/stratis-filesystem1.service
创建包含以下内容的 systemd 单元文件:
[Unit]Description = stratis mount pool1 filesystem1 file systemAfter = stratisd.service [Service]ExecStartPre=sleep 2ExecStartPre=stratis key set --keyfile-path /root/pool1key pool1keyExecStartPre=stratis pool unlockExecStartPre=sleep 3ExecStart=mount /stratis/pool1/filesystem1 /filesystem1RemainAfterExit=yes [Install]WantedBy = multi-user.target
接下来,启用服务,使其在启动时运行:
# systemctl enable stratis-filesystem1.service
现在重新启动并验证 Stratis 池是否已自动解锁,其文件系统是否已挂载。
关于“怎么在Stratis中开始加密”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
本文标题:怎么在Stratis中开始加密
文章出自:http://scyanting.com/article/jddped.html