从安全角度来看,加密您的敏感数据以保护其免受窥探和黑客攻击非常重要。 Linux 统一密钥设置(LUKS)是一个很棒的工具,也是 Linux 磁盘加密的通用标准。因为它将所有相关的设置信息存储在分区头中,所以可以轻松迁移数据。
要使用 LUKS 配置加密磁盘或分区,您需要使用 cryptsetup 实用程序。不幸的是,加密磁盘的缺点之一是,每次系统重启或磁盘重新挂载时,您都必须手动提供密码。
但是,网络绑定磁盘加密 (NBDE) 可以自动安全地解锁加密磁盘,而无需任何用户干预。它在多个 Linux 发行版中可用,从 Red Hat Enterprise Linux 7.4、CentOS 7.4 和 Fedora 24 以及每个版本的更高版本开始。
NBDE 通过以下技术实现
Tang 为 Clevis 客户端提供加密密钥。根据 Tang 开发人员的说法,这提供了一种安全、无状态、匿名的密钥托管服务替代方案。
由于 NBDE 使用客户端-服务器架构,因此您必须同时配置客户端和服务器。您可以使用本地网络上的虚拟机作为 Tang 服务器。
服务器安装
使用 sudo 安装 Tang
sudo yum install tang -y
启用 Tang 服务器
sudo systemctl enable tangd.socket --now
Tang 服务器在端口 80 上工作,必须添加到 firewalld。添加适当的 firewalld 规则
sudo firewall-cmd --add-port=tcp/80 --perm
sudo firewall-cmd --reload
服务器现在应该已安装。
客户端安装
在此示例中,假设您已向系统添加了一个名为 /dev/vdc
的新 1GB 磁盘。
使用 fdisk 或 parted 创建主分区
sudo fdisk /dev/vdc
完成以下步骤以安装客户端。
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x4a6812d4.
Command (m for help):
输入 n 以创建新分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
按 Enter 键选择主分区
Using default response p
Partition number (1-4, default 1):
按 Enter 键选择默认分区号
First sector (2048-2097151, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151):
按 Enter 键选择最后一个扇区
Using default value 2097151
Partition 1 of type Linux and of size 1023 MiB is set
Command (m for help): wq
键入 wq 以保存更改并退出 fdisk
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
运行 partprobe
以通知系统分区表更改
sudo partprobe
使用 sudo 安装 cryptsetup 软件包
sudo yum install cryptsetup -y
使用 cryptsetup luksFormat
命令加密磁盘。系统提示时,您需要键入 YES,并选择并输入密码以加密磁盘
sudo cryptsetup luksFormat /dev/vdc1
WARNING!
========
This will overwrite data on /dev/vdc1 irrevocably.
Are you sure? (Type uppercase yes):
Enter passphrase for /dev/vdc1:
Verify passphrase:
使用 cryptsetup luksOpen
命令将加密分区映射到逻辑设备。例如,使用 encryptedvdc1
作为名称。您还需要再次输入密码
sudo cryptsetup luksOpen /dev/vdc1 encryptedvdc1
Enter passphrase for /dev/vdc1:
加密分区现在可在 /dev/mapper/encryptedvdc1
中使用。
在加密分区上创建 XFS 文件系统
sudo mkfs.xfs /dev/mapper/encryptedvdc1
为挂载加密分区创建一个目录
sudo mkdir /encrypted
使用 cryptsetup luksClose
命令锁定分区
cryptsetup luksClose encryptedvdc1
使用 sudo 安装 Clevis 软件包
sudo yum install clevis clevis-luks clevis-dracut -y
修改 /etc/crypttab 以在启动时打开加密卷
sudo vim /etc/crypttab
添加以下行
encryptedvdc1 /dev/vdc1 none _netdev
修改 /etc/fstab 以在重启或启动时自动挂载加密卷
sudo vim /etc/fstab
添加以下行
/dev/mapper/encryptedvdc1 /encrypted xfs _netdev 1 2
在此示例中,假设 Tang 服务器的 IP 地址为 192.168.1.20
。如果愿意,您也可以使用主机名或域名。
运行以下 clevis
命令
sudo clevis bind luks -d /dev/vdc1 tang '{"url":"http://192.168.1.20"}'
The advertisement contains the following signing keys:
rwA2BAITfYLuyNiIeYUMBzkhk7M
Do you wish to trust these keys? [ynYN] Y
Enter existing LUKS password:
键入 Y 以接受 Tang 服务器的密钥,并为初始设置提供现有的 LUKS 密码。
通过 systemctl 启用 clevis-luks-askpass.path,以防止在非 root 分区上提示输入密码。
sudo systemctl enable clevis-luks-askpass.path
客户端已安装。现在,每当您重启服务器时,加密磁盘都应该通过从 Tang 服务器检索密钥来自动解密和挂载。
如果 Tang 服务器因任何原因不可用,您需要手动提供密码才能解密和挂载分区。
1 条评论