10.9. 使用 PKCS modprobe pin 配置 LUKS 加密卷的解锁
您可以使用与 PKCS modprobe 兼容的设备配置 LUKS 加密卷的解锁,可以是智能卡或硬件安全模块(HSM)。
使用 Clevis PKCS modprobe pin 自动解锁加密卷也需要在 /etc/crypttab
文件中更改,该文件将 systemd
管理器配置为使用 AF_UNIX
套接字等待键phrase 解锁卷,而不是通过控制台提示用户。
Clevis PKCS modprobe 单元文件在 /run/systemd/clevis-pkcs11.sock
文件中配置套接字,以发送和接收有关磁盘解锁的信息。对于通过 Clevis PKCS modprobe pin 解锁的磁盘,您必须将套接字文件配置为密钥文件。
先决条件
- PKCSGRESS 设备已经配置并可以访问。
-
已安装
clevis-pin-pkcs11
软件包。 -
clevis luks bind
命令至少有一个可用的 LUKS 密码插槽。
步骤
识别 PBD 的 LUKS 加密卷。在以下示例中,块设备是指 /dev/sda2 :
lsblk
# 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]
Copy to Clipboard Copied! 确定您要用来解锁卷的 PKCShmac 设备的 URI,例如:
pkcs11-tool -L | grep uri
$ pkcs11-tool -L | grep uri uri : pkcs11:model=PKCS%2315%20emulated;manufacturer=piv_II;serial=42facd1f749ece7f;token=clevis uri : pkcs11:model=PKCS%2315%20emulated;manufacturer=OpenPGP%20project;serial=000f06080f4f;token=OpenPGP%20card%20%28User%20PIN%29
Copy to Clipboard Copied! 使用
clevis luks bind
命令将卷绑定到 PKCSGRESS 设备,例如:clevis luks bind -d /dev/sda2 pkcs11 '{"uri":"pkcs11:model=PKCS%2315%20emulated;manufacturer=OpenPGP%20project;serial=000f06080f4f;token=OpenPGP%20card%20%28User%20PIN%29;id=%03;object=Authentication%20key;type=public"}'
# clevis luks bind -d /dev/sda2 pkcs11 '{"uri":"pkcs11:model=PKCS%2315%20emulated;manufacturer=OpenPGP%20project;serial=000f06080f4f;token=OpenPGP%20card%20%28User%20PIN%29;id=%03;object=Authentication%20key;type=public"}' … Do you wish to initialize /dev/sda2? [yn] y Enter existing LUKS password:
Copy to Clipboard Copied! 这个命令执行以下步骤:
- 使用与 LUKS 主密钥相同的无序状态测量法创建新的密钥。
- 使用 Clevis 加密新密钥.
- 将 Clevis JWE 对象存储在 LUKS2 标头令牌中,或者使用 LUKSMeta(如果使用非默认的 LUKS1 标头)。
- 启用与 LUKS 一起使用的新密钥。
(可选):如果您的场景需要指定要使用的模块,请添加 module-path URI 参数:
clevis luks bind -d /dev/sda2 pkcs11 '{"uri":"pkcs11:module-path=/usr/lib64/libykcs11.so.2";model=PKCS%2315%20emulated;manufacturer=OpenPGP%20project;serial=000f06080f4f;token=OpenPGP%20card%20%28User%20PIN%29;id=%03;object=Authentication%20key;type=public}'
# clevis luks bind -d /dev/sda2 pkcs11 '{"uri":"pkcs11:module-path=/usr/lib64/libykcs11.so.2";model=PKCS%2315%20emulated;manufacturer=OpenPGP%20project;serial=000f06080f4f;token=OpenPGP%20card%20%28User%20PIN%29;id=%03;object=Authentication%20key;type=public}'
Copy to Clipboard Copied! 启用
clevis-luks-pkcs11-askpass.socket
单元:systemctl enable --now clevis-luks-pkcs11-askpass.socket
# systemctl enable --now clevis-luks-pkcs11-askpass.socket
Copy to Clipboard Copied! 在文本编辑器中打开
/etc/crypttab
文件,并识别包含您要被 PKCS modprobe pin 解锁的 LUKS 加密卷的行,例如:luks-6e38d5e1-7f83-43cc-819a-7416bcbf9f84 UUID=6e38d5e1-7f83-43cc-819a-7416bcbf9f84 - -
luks-6e38d5e1-7f83-43cc-819a-7416bcbf9f84 UUID=6e38d5e1-7f83-43cc-819a-7416bcbf9f84 - -
Copy to Clipboard Copied! 使用
/run/systemd/clevis-pkcs11.sock
文件路径和keyfile-timeout
选项替换短划线:luks-6e38d5e1-7f83-43cc-819a-7416bcbf9f84 UUID=6e38d5e1-7f83-43cc-819a-7416bcbf9f84 /run/systemd/clevis-pkcs11.sock keyfile-timeout=30s
luks-6e38d5e1-7f83-43cc-819a-7416bcbf9f84 UUID=6e38d5e1-7f83-43cc-819a-7416bcbf9f84 /run/systemd/clevis-pkcs11.sock keyfile-timeout=30s
Copy to Clipboard Copied! keyfile-timeout
选项为发生解锁错误,系统需要通过控制台手动输入密码短语时提供 fall-through 机制。- 保存更改,退出编辑器。
要启用早期引导系统来处理磁盘绑定(解锁根文件系统),请在已安装的系统上使用
dracut
工具:dracut -fv --regenerate-all
# dracut -fv --regenerate-all
Copy to Clipboard Copied! 重新启动系统。
在以下引导过程中,系统会提示输入 PKCS modprobe 设备 PIN,并仅在输入正确的 PIN 时解密相应的加密的磁盘。
验证
您可以使用以下命令来加密和解密文本信息,而不是手动测试引导过程:
echo "top secret" | clevis encrypt pkcs11 '{"uri":"pkcs11:module-path=/usr/lib64/libykcs11.so.2?pin-value=<PIN>"}' | clevis decrypt
# echo "top secret" | clevis encrypt pkcs11 '{"uri":"pkcs11:module-path=/usr/lib64/libykcs11.so.2?pin-value=<PIN>"}' | clevis decrypt
Copy to Clipboard Copied! 将 &
lt;PIN&
gt; 替换为 PIN 值。您必须输入这个 PIN 值来解密消息。要验证 Clevis JWE 对象是否已成功放入 LUKS 标头中,请使用
clevis luks list
命令,例如:clevis luks list -d /dev/sda2
# clevis luks list -d /dev/sda2 1: pkcs11 '{"uri": "pkcs11:model=PKCS%2315%20emulated;manufacturer=piv_II; serial=0a35ba26b062b9c5;token=clevis;id=%02;object=Encryption%20Key? module-path=/usr/lib64/libykcs11.so.2"}'
Copy to Clipboard Copied!