10.6. 配置 NBDE 客户端以自动解锁 LUKS 加密卷


使用 Clevis 框架,您可以在所选 Tang 服务器可用时配置客户端来自动解锁 LUKS 加密卷。这会创建一个 NBDE (网络绑定磁盘加密)部署。

先决条件

  • Tang 服务器正在运行且可用。

步骤

  1. 要自动解锁现有的 LUKS 加密卷,请安装 clevis-luks 子软件包:

    # dnf install clevis-luks
  2. 识别 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]
  3. 使用 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:

    此命令执行四个步骤:

    1. 使用与 LUKS 主密钥相同的无序状态测量法创建新的密钥。
    2. 使用 Clevis 加密新密钥.
    3. 将 Clevis JWE 对象存储在 LUKS2 标头令牌中,或者使用 LUKSMeta(如果使用非默认的 LUKS1 标头)。
    4. 启用与 LUKS 一起使用的新密钥。
    注意

    绑定过程假定至少有一个可用的 LUKS 密码插槽。clevis luks bind 命令占用了其中一个插槽。

    现在可以使用您的现有密码和 Clevis 策略来解锁卷。

  4. 要启用早期引导系统来处理磁盘绑定,请在已安装的系统上使用 dracut 工具。在 RHEL 中,Clevis 生成一个没有特定于主机配置选项的通用 initrd(初始 RAM 磁盘),没有向内核命令行自动添加 rd.neednet=1 等参数。如果您的配置依赖于在早期引导期间需要网络的 Tang pin ,请在检测到 Tang 绑定时使用 --hostonly-cmdline 参数和 dracut add rd.neednet=1

    1. 安装 clevis-dracut 软件包:

      # dnf install clevis-dracut
    2. 重新生成初始 RAM 磁盘:

      # dracut -fv --regenerate-all --hostonly-cmdline
    3. 或者,在 /etc/dracut.conf.d/ 目录中创建 .conf 文件,并将 hostonly_cmdline=yes 选项添加到该文件中。然后,您可以使用 without -hostonly-cmdlinedracut,例如:

      # echo "hostonly_cmdline=yes" > /etc/dracut.conf.d/clevis.conf
      # dracut -fv --regenerate-all
    4. 您还可以通过使用安装了 Clevis 的系统上的 grubby 工具,确保在早期引导时 Tang pin 的网络可用:

      # grubby --update-kernel=ALL --args="rd.neednet=1"

验证

  1. 验证 Clevis JWE 对象是否已成功放入 LUKS 标头中,使用 clevis luks list 命令:

    # clevis luks list -d /dev/sda2
    1: tang '{"url":"http://tang.srv:port"}'
  2. 检查绑定是否在早期引导时可用,例如:

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

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.