文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Tang+luks实现磁盘自动加解密

2023-09-10 09:21

关注

文章目录


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:


参考:
红帽官网文档: https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/8/html/security_hardening/configuring-automated-unlocking-of-encrypted-volumes-using-policy-based-decryption_security-hardening

luks自动加密和挂载磁盘: https://zhaosongbin.blog.csdn.net/article/details/131450726

来源地址:https://blog.csdn.net/zhaosongbin/article/details/131637908

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯