10.6. 配置 NBDE 客户端以自动解锁 LUKS 加密卷
使用 Clevis 框架,您可以在所选的 Tang 服务器可用时配置客户端来自动解锁 LUKS 加密卷。这创建一个 NBDE (网络绑定磁盘加密)部署。
先决条件
- Tang 服务器正在运行且可用。
流程
要自动解锁现有的 LUKS 加密卷,请安装
clevis-luks
子软件包:yum install clevis-luks
# yum install clevis-luks
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 识别 PBD 的 LUKS 加密卷。在以下示例中,块设备是指 /dev/sda2 :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
clevis luks bind
命令将卷绑定到 Tang 服务器:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令执行四个步骤:
- 使用与 LUKS 主密钥相同的无序状态测量法创建新的密钥。
- 使用 Clevis 加密新密钥.
- 将 Clevis JWE 对象存储在 LUKS2 标头令牌中,或者使用 LUKSMeta(如果使用非默认的 LUKS1 标头)。
- 启用与 LUKS 一起使用的新密钥。
注意绑定过程假定至少有一个可用的 LUKS 密码插槽。
clevis luks bind
命令占用了其中一个插槽。现在可以使用您的现有密码和 Clevis 策略来解锁卷。
要启用早期引导系统来处理磁盘绑定,请在已安装的系统上使用
dracut
工具。在 RHEL 中,Clevis 生成一个没有特定于主机配置选项的通用initrd
(初始 RAM 磁盘),没有向内核命令行自动添加rd.neednet=1
等参数。如果您的配置依赖于在早期引导期间需要网络的 Tang pin ,请在检测到 Tang 绑定时使用--hostonly-cmdline
参数和dracut
addrd.neednet=1
:安装
clevis-dracut
软件包:yum install clevis-dracut
# yum install clevis-dracut
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新生成初始 RAM 磁盘:
dracut -fv --regenerate-all --hostonly-cmdline
# dracut -fv --regenerate-all --hostonly-cmdline
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,在
/etc/dracut.conf.d/
目录中创建 .conf 文件,并将hostonly_cmdline=yes
选项添加到该文件中。然后,您可以使用 without-hostonly-cmdline
的dracut
,例如:echo "hostonly_cmdline=yes" > /etc/dracut.conf.d/clevis.conf dracut -fv --regenerate-all
# echo "hostonly_cmdline=yes" > /etc/dracut.conf.d/clevis.conf # dracut -fv --regenerate-all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您还可以通过使用安装了 Clevis 的系统上的
grubby
工具,确保在早期引导时 Tang pin 的网络可用:grubby --update-kernel=ALL --args="rd.neednet=1"
# grubby --update-kernel=ALL --args="rd.neednet=1"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证 Clevis JWE 对象是否已成功放入 LUKS 标头中,使用
clevis luks list
命令:clevis luks list -d /dev/sda2
# clevis luks list -d /dev/sda2 1: tang '{"url":"http://tang.srv:port"}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查绑定是否在早期引导时可用,例如:
lsinitrd | grep clevis-luks
# lsinitrd | grep clevis-luks lrwxrwxrwx 1 root root 48 Jan 4 02:56 etc/systemd/system/cryptsetup.target.wants/clevis-luks-askpass.path -> /usr/lib/systemd/system/clevis-luks-askpass.path …
Copy to Clipboard Copied! Toggle word wrap Toggle overflow