10.6. 配置 NBDE 客户端以自动解锁 LUKS 加密卷
使用 Clevis 框架,您可以在所选 Tang 服务器可用时配置客户端来自动解锁 LUKS 加密卷。这会创建一个 NBDE (网络绑定磁盘加密)部署。
先决条件
- Tang 服务器正在运行且可用。
步骤
要自动解锁现有的 LUKS 加密卷,请安装
clevis-luks
子软件包:# dnf install clevis-luks
识别 PBD 的 LUKS 加密卷。在以下示例中,块设备是指 /dev/sda2 :
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 12G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 11G 0 part └─luks-40e20552-2ade-4954-9d56-565aa7994fb6 253:0 0 11G 0 crypt ├─rhel-root 253:0 0 9.8G 0 lvm / └─rhel-swap 253:1 0 1.2G 0 lvm [SWAP]
使用
clevis luks bind
命令将卷绑定到 Tang 服务器:# clevis luks bind -d /dev/sda2 tang '{"url":"http://tang.srv"}' The advertisement contains the following signing keys: _OsIk0T-E2l6qjfdDiwVmidoZjA Do you wish to trust these keys? [ynYN] y You are about to initialize a LUKS device for metadata storage. Attempting to initialize it may result in data loss if data was already written into the LUKS header gap in a different format. A backup is advised before initialization is performed. Do you wish to initialize /dev/sda2? [yn] y Enter existing LUKS password:
此命令执行四个步骤:
- 使用与 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
软件包:# dnf install clevis-dracut
重新生成初始 RAM 磁盘:
# dracut -fv --regenerate-all --hostonly-cmdline
或者,在
/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
您还可以通过使用安装了 Clevis 的系统上的
grubby
工具,确保在早期引导时 Tang pin 的网络可用:# grubby --update-kernel=ALL --args="rd.neednet=1"
验证
验证 Clevis JWE 对象是否已成功放入 LUKS 标头中,使用
clevis luks list
命令:# clevis luks list -d /dev/sda2 1: tang '{"url":"http://tang.srv:port"}'
检查绑定是否在早期引导时可用,例如:
# 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 …
其他资源
-
在您的系统上
clevis-luks-bind (1)
和dracut.cmdline (7)
手册页 - RHEL 安装程序引导选项文档中的 网络引导选项
- 在初始 ramdisk (initrd) (Red Hat 启用 Sysadmin)中查找 Linux 网络配置