文章目录
1、描述
Tang 是一个将数据绑定到网络状态的服务器。当系统绑定到某个安全网络时,它会使包含数据的系统变得可用。Tang 是无状态的,不需要 TLS 或身份验证。与基于 escrow 的解决方案不同,服务器存储所有加密密钥并了解以前使用的每个密钥,Tang 从不与任何客户端密钥进行交互,因此不会从客户端获得任何识别信息。
Clevis 是一个自动化解密的可插拔框架。在 NBDE 中,Clevis 提供 LUKS 卷的自动解锁。clevis 软件包提供了该功能的客户端。
Clevis pin 是 Clevis 框架的一个插件。其中一个 pins 是实现与 NBDE 服务器进行交互的插件 - Tang。
Clevis 和 Tang 是通用的客户端和服务器组件,提供网络绑定加密。在 RHEL 中,它们与 LUKS 一起使用,以加密和解密 root 和非 root 存储卷,以完成网络绑定磁盘加密。
客户端和服务器端组件都使用 José 库来执行加密和解密操作。
当您开始调配 NBDE 时,Tang 服务器的 Clevis pin 将获得 Tang 服务器发布的非对称密钥的列表。或者,由于密钥是非对称的,因此 Tang 的公钥列表可以分发到带外,以便客户端能够在不访问 Tang 服务器的情况下进行操作。此模式称为 脱机调配。
Tang 的 Clevis pin 使用其中一个公钥来生成唯一的强加密的加密密钥。使用此密钥加密数据后,密钥将被丢弃。Clevis 客户端应将此调配操作生成的状态存储在方便的位置。这种加密数据的过程就是 调配步骤。
LUKS 版本 2(LUKS2)是 RHEL 中的默认磁盘加密格式,因此 NBDE 的调配状态作为令牌存储在 LUKS2 标头中。luksmeta 软件包对 NBDE 的调配状态的利用仅用于使用 LUKS1 加密的卷。
Tang 的 Clevis pin 支持 LUKS1 和 LUKS2,不需要规范。Clevis 可以加密纯文本文件,但您必须使用 cryptsetup 工具来加密块设备。如需更多信息,请参阅 使用 LUKS 加密块设备。
当客户端准备好访问其数据时,它会加载再调配步骤中生成的元数据,并响应恢复加密密钥。此过程是 恢复步骤。
在 NBDE 中,Clevis 使用 pin 绑定 LUKS 卷,以便能自动解锁它。成功完成绑定流程后,可以使用提供的 Dracut 解锁程序解锁磁盘
NBDE采用C/S架构,其中Tang 负责向 Clevis 客户端提供加密密钥,为密钥托管服务提供了一个安全、无状态、匿名的替代方案。我们可在本地网络中部署一个本地 Tang 服务器提供密钥服务。
Clevis 框架:可插拔的框架工具,自动解密和解锁 LUKS 卷
Tang 服务器:将加密密钥绑定到网络状态的服务
2、Tang服务器安装
安装 tang 软件包及其依赖项
$ yum install tang -y
tang服务器的默认端口为80,如有占用,请修改端口
选择一个未被占用的端口,例如== 7500/tcp==,并允许 tangd 服务绑定到该端口
一个端口一次只能由一个服务使用,因此尝试使用已占用的端口会出现 ValueError: Port already defined 错误消息
$ semanage port -a -t tangd_port_t -p tcp 7500
配置防火墙,开放7500端口
$ firewall-cmd --add-port=7500/tcp --perm$ firewall-cmd --runtime-to-permanent$ firewall-cmd --reload
启用tang服务
$ systemctl enable tangd.socket
如有修改端口,请执行以下命令
## 创建覆盖文件$ systemctl edit tangd.socket## 修改配置文件$ vim /etc/systemd/system/tangd.socket.d/override.conf [Socket]ListenStream=## 修改的端口ListenStream=7500## 重新载入修改$ systemctl daemon-reload## 检查您的配置是否正常工作$ systemctl show tangd.socket -p Listen## 启动Tang服务$ systemctl restart tangd.socket
3、客户端
3.1、依赖安装
$ yum install cryptsetup -y$ yum install clevis clevis-luks clevis-dracut -y
3.2、创建加密磁盘分区
例如:我们现在对现有的 /home目录进行加密
执行lsblk ,我们可以看到home目录对应的磁盘是sda3,全路径即是:/dev/sda3
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 477G 0 disk ├─sda1 8:1 0 600M 0 part /boot/efi├─sda2 8:2 0 1G 0 part /boot├─sda3 8:3 0 397.7G 0 part /home├─sda4 8:4 0 70G 0 part /└─sda5 8:5 0 7.7G 0 part [SWAP]sdb 8:16 1 7.5G 0 disk └─sdb1 8:17 1 7.5G 0 part
我们需要去umount home目录
umount 可能报错:目录繁忙。
解决方案:关闭正在执行的任务,任何执行目录、存储目录涉及到home的任务。
$ umount /home
再次执行lsblk ,我们可以看到磁盘sda3的挂载home没有了
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 477G 0 disk ├─sda1 8:1 0 600M 0 part /boot/efi├─sda2 8:2 0 1G 0 part /boot├─sda3 8:3 0 397.7G 0 part ├─sda4 8:4 0 70G 0 part /└─sda5 8:5 0 7.7G 0 part [SWAP]sdb 8:16 1 7.5G 0 disk └─sdb1 8:17 1 7.5G 0 part
3.3、luks加密
安装加密软件,一般服务器自带
$ yum install cryptsetup -y
cryptsetup [其他参数] luksFormat 需要加密的磁盘
常用参数:
参数名称 | 描述 |
---|---|
–cipher | 加密方式 |
–key-size | 密钥长度 |
–hash | 散列算法 |
–iter-time | 迭代时间,单位为毫秒。值越大,暴力破解越难,打开加密盘的时间也越久 |
我们这里使用默认值,执行的过程中,命令会警告你将会清除磁盘上的所有数据,并要求你输入两次密码
注意:下面的YES必须输入大写的
$ cryptsetup luksFormat /dev/sda3WARNING!========这将覆盖 /dev/sda3 上的数据,该动作不可取消。Are you sure? (Type 'yes' in capital letters): YES输入 /dev/sda3 的口令:确认密码:
3.4、打开luks加密盘
命令如下:
cryptsetup 加密类型Open 加密磁盘 映射名称
执行该命令后就会将 /dev/sda3 解密,并映射成 /dev/mapper/home
$ cryptsetup luksOpen /dev/sda3 home输入 /dev/sda3 的口令:
3.5、操作和配置luks加密盘
## 在加密的分区上创建一个 XFS 文件系统$ mkfs.xfs /dev/mapper/home## 锁定分区$ cryptsetup luksClose home
4、开机自动解密和挂载加密盘
设置开机自动解密 luks 分区:
$ vim /etc/crypttab# home /dev/sda3 none _netdev
注释老的home自动挂载,设置新的 home 自动挂载点:
$ vim /etc/fstab# # /etc/fstab# Created by anaconda on Tue Jun 20 10:39:43 2023## Accessible filesystems, by reference, are maintained under '/dev/disk/'.# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.## After editing this file, run 'systemctl daemon-reload' to update systemd# units generated from this file.#UUID=715d159b-2612-439d-8da9-4f003aebe3be / xfs defaults 0 0UUID=fbbb9210-1b17-485b-b95d-5e550e3b7be8 /boot xfs defaults 0 0UUID=D918-3920 /boot/efi vfat umask=0077,shortname=winnt 0 2# 注释掉老的home挂载信息# UUID=7ee7cabf-8627-46b0-b40c-2c329926e775 /home xfs defaults 0 0UUID=de06acc9-4238-4de4-bc67-b754c2c0e993 none swap defaults 0 0#配置新的home挂载信息/dev/mapper/home /home xfs _netdev 1 2~
运行以下 clevis 命令,连接Tang服务器,自动解密磁盘
$ clevis luks bind -d /dev/vdc1 tang '{"url":"http://192.168.1.1"}'The advertisement contains the following signing keys:rwA2BAITfYLuyNiIeYUMBzkhk7MDo you wish to trust these keys? [ynYN] YEnter existing LUKS password:
luks自动加密和挂载磁盘: https://zhaosongbin.blog.csdn.net/article/details/131450726
来源地址:https://blog.csdn.net/zhaosongbin/article/details/131637908