网站搜索

如何在 Fedora Linux 中使用 LUKS 加密驱动器


在本文中,我们将简要介绍块加密、Linux 统一密钥设置 (LUKS),并描述在 Fedora Linux 中创建加密块设备的说明。

块设备加密

块设备加密用于通过加密来保护块设备上的数据,并且要解密数据,用户必须提供密码或密钥才能访问。这提供了额外的安全机制,因为即使设备已与系统物理分离,它也可以保护设备的内容。

卢克斯简介

LUKSLinux 统一密钥设置)是 Linux 中块设备加密的标准,它通过建立数据的磁盘格式和密码/密钥管理策略来工作。它将所有必要的设置信息存储在分区标头(也称为LUKS标头)中,从而允许您无缝传输或迁移数据。

LUKS 利用内核设备映射器子系统和 dm-crypt 模块来提供保存设备数据加密和解密的低级映射。您可以使用 cryptsetup 程序执行用户级任务,例如创建和访问加密设备。

准备块设备

以下说明显示了安装后创建和配置加密块设备的步骤。

安装cryptsetup包。

dnf install cryptsetup-luks

接下来,在加密之前用随机数据填充设备,因为这将显着提高使用以下命令的加密强度。

dd if=/dev/urandom of=/dev/sdb1	           [slow with high quality random data ]
OR
badblocks -c 10240 -s -w -t random -v /dev/sdb1  [fast with high quality random data]

警告:上述命令将清除设备上的所有现有数据。

格式化加密设备

接下来,使用cryptsetup命令行工具将设备格式化为dm-crypt/LUKS加密设备。

cryptsetup luksFormat /dev/sdb1

运行该命令后,系统将提示您输入 YES(大写)以提供两次密码,以便格式化设备以供使用,如以下屏幕截图所示。

要验证操作是否成功,请运行以下命令。

cryptsetup isLuks /dev/sdb1 && echo Success

您可以查看设备的加密信息摘要。

cryptsetup luksDump /dev/sdb1

创建映射以允许访问解密内容

在本节中,我们将配置如何访问加密设备的解密内容。我们将使用内核设备映射器创建映射。建议为此映射创建一个有意义的名称,例如 luk-uuid(其中 <uuid> 替换为设备的 LUKS UUID通用唯一标识符)。

要获取加密设备 UUID,请运行以下命令。

cryptsetup luksUUID /dev/sdb1

获取UUID后,您可以创建如图所示的映射名称(系统将提示您输入之前创建的密码)。

cryptsetup luksOpen /dev/sdb1 luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c

如果命令成功,则会出现一个名为 /dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c 的设备节点,它代表解密的设备。

刚刚创建的块设备可以像任何其他未加密的块设备一样进行读取和写入。您可以通过运行以下命令查看有关映射设备的一些信息。

dmsetup info /dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c

在映射设备上创建文件系统

现在我们将了解如何在映射设备上创建文件系统,这将允许您像任何其他块设备一样使用映射设备节点。

要在映射设备上创建 ext4 文件系统,请运行以下命令。

mkfs.ext4 /dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c

要挂载上述文件系统,请为其创建一个挂载点,例如 /mnt/encrypted-device,然后按如下方式挂载它。

mkdir -p /mnt/encrypted-device
mount /dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c /mnt/encrypted-device/

将映射信息添加到 /etc/crypttab 和 /etc/fstab

接下来,我们需要配置系统以自动设置设备的映射并在启动时挂载它。

您应该在 /etc/crypttab 文件中添加映射信息,格式如下。

luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c  UUID=59f2b688-526d-45c7-8f0a-1ac4555d1d7c   none

在上面的格式中:

  • luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c – 是映射名称
  • UUID=59f2b688-526d-45c7-8f0a-1ac4555d1d7c – 是设备名称

保存文件并关闭它。

接下来,将以下条目添加到 /etc/fstab 中,以在系统启动时自动挂载映射设备。

/dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c  /mnt/encrypted-device  ext4 0 0

保存文件并关闭它。

然后运行以下命令来更新 systemd 从这些文件生成的单元。

systemctl daemon-reload

备份 LUKS 标头

最后,我们将介绍如何备份 LUKS 标头。这是避免丢失加密块设备中所有数据的关键步骤,以防包含 LUKS 标头的扇区因用户错误或硬件故障而损坏。此操作允许数据恢复。

备份 LUKS 标头。

mkdir /root/backups  
cryptsetup luksHeaderBackup --header-backup-file luks-headers /dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c 

并恢复 LUKS 标头。

cryptsetup luksHeaderRestore --header-backup-file /root/backups/luks-headers /dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c 

就这样!在本文中,我们解释了如何在 Fedora Linux 发行版中使用 LUKS 加密块设备。您对本主题或指南有任何疑问或意见,请使用下面的反馈表联系我们。