云网牛站
所在位置:首页 > Linux安全 > 在Red Hat、Fedora系统中使用Stratis加密的方法

在Red Hat、Fedora系统中使用Stratis加密的方法

2020-11-10 10:07:45作者:夏蓝稿源:云网牛站

Stratis在其官方网站上描述为“易于使用的Linux本地存储管理”,本文以Red Hat Enterprise Linux 8及Fedora系统为例,说明初步使用Stratis加密的方法。当前Stratis 2.1版引入了对加密的支持,现在教您开始使用Stratis进行加密。

 

先决条件

加密需要Stratis 2.1或更高版本,本文中的示例使用的是Fedora 33发行版,也适合在Red Hat中。另外,Stratis 2.1在Fedora 33的最终发行版中提供。参考安装Fedora 33指导:附Fedora 33安装全过程截图

您还需要至少一个可用的块设备来创建加密池,下面显示的示例在具有5GB虚拟磁盘驱动器(/dev/vdb)的KVM虚拟机上完成。

 

在内核密钥环中创建密钥

Linux内核密钥环用于存储加密密钥。使用stratis key set命令在内核密钥环中设置密钥,您必须指定从何处读取密钥。要从标准输入中读取键,请使用–capture-key选项。要从文件中检索密钥,请使用–keyfile-path <file>选项。最后一个参数是键说明,稍后在创建加密的Stratis池时将使用它。

例如,要使用描述pool1key创建一个密钥,并从标准输入中读取该密钥,您将输入:

# stratis key set --capture-key pool1key

Enter desired key data followed by the return key:

该命令提示我们键入密钥数据/密码,然后在内核密钥环中创建密钥。

要验证是否创建了密钥,请运行stratis密钥列表:

# stratis key list

Key Description

pool1key

这验证了pool1key已创建。请注意,这些键不是持久性的。如果重新启动主机,则需要再次提供密钥,然后才能访问加密的Stratis池。

如果您有多个加密池,则它们可以具有单独的密钥,也可以共享相同的密钥。

也可以使用以下keyctl命令查看这些键:

# keyctl get_persistent @s

# keyctl show

在Red Hat、Fedora系统中使用Stratis加密的方法

 

创建加密的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 list 

在Red Hat、Fedora系统中使用Stratis加密的方法

在上面显示的示例输出中,~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 list

Name   Total Physical   Properties

# stratis blockdev list

Pool Name   Device Node   Physical Size   Tier

要访问加密池,请首先使用与先前使用的相同的密钥描述和密钥数据/密码重新创建密钥:

# stratis key set --capture-key pool1key

Enter desired key data followed by the return key:

接下来,运行stratis pool unlock命令,并验证您现在可以看到该池及其阻止设备:

# stratis pool unlock

# stratis pool list

# stratis blockdev list

在Red Hat、Fedora系统中使用Stratis加密的方法

接下来,挂载文件系统并确认您可以访问之前创建的测试文件:

# mount /stratis/pool1/filesystem1 /filesystem1/

# cat /filesystem1/testfile 

this is a test file

 

使用系统单元文件在启动时自动解锁Stratis池

引导时可以自动解锁Stratis池,而无需手动干预。但是,包含密钥的文件必须可用。在某些环境中,将密钥存储在文件中可能是安全问题。

下面显示的systemd单元文件提供了一种在启动时解锁Stratis池并挂载文件系统的简单方法。参考Systemd入门教程

首先使用以下命令创建密钥文件,确保将密码短语替换为您之前输入的相同密钥数据/密码短语:

# 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 system

After = stratisd.service

[Service]

ExecStartPre=sleep 2

ExecStartPre=stratis key set --keyfile-path /root/pool1key pool1key

ExecStartPre=stratis pool unlock

ExecStartPre=sleep 3

ExecStart=mount /stratis/pool1/filesystem1 /filesystem1

RemainAfterExit=yes

[Install]

WantedBy = multi-user.target

接下来,启用服务,使其在引导时运行:

# systemctl enable stratis-filesystem1.service

现在重新启动,并验证Stratis池已被自动解锁并且其文件系统已安装。

 

相关主题

5个Linux加密工具:VeraCrypt,CipherShed,CryFS,GnuPG,Encfs介绍

精选文章
热门文章