怎样在 Linux 上使用 LUKS 加密块设备

有时您可能想要加密您的硬盘,以便当有人将您的硬盘驱动器连接到他们的计算机时,他们需要提供用户凭据来安装驱动器。 在 Linux 中,可以加密单个块设备。 在本文中,我们将学习怎样使用 LUKS 在 Linux 中加密块设备。 LUKS 是 Linux 加密层,可用于加密整个根分区、逻辑卷或特定分区。

本教程涵盖以下 Linux 发行版

  • Debian
  • Ubuntu
  • RHEL
  • CentOS
  • 洛奇Linux
  • 阿尔玛Linux

安装 cryptsetup-luks 包

Cryptsetup 实用工具带有 cryptsetup-luks 包,用于在 Linux 系统中设置块设备加密。 可以使用以下命令进行安装。

Ubuntu/Debian

$ apt-get install cryptsetup

RHEL/CentOS/Rocky Linux/Almalinux

$ dnf install cryptsetup-luks

准备一个 LUKS 分区

安装实用工具后,准备一个用于加密的分区。 要列出所有可用的分区和块设备,请运行以下命令。

$ fdisk -l
$ blkid

现在使用 cryptsetup luksFormat 命令在分区中设置加密。 在这 example,分区 sdb 用于加密。 您可以根据您的环境做出自己的假设。

$ cryptsetup -y -v luksFormat /dev/sdb

上面执行的命令将删除分区上的所有数据

现在我们需要在上述步骤中创建一个挂载到 LUKS 加密分区的逻辑设备映射器设备。 在这 example, 加密 是为打开的 LUKS 分区的映射名称提供的名称。

以下命令将创建一个卷并设置密码或初始密钥。 请记住,密码短语无法恢复。

$ cryptsetup luksOpen /dev/sdb encrypted

设置分区密码

可以使用以下命令找到分区的映射详细信息。

$ ls -l /dev/mapper/encrypted

加密驱动器

使用以下命令查看映射状态。 将您的映射名称替换为 加密.

$ cryptsetup -v status encrypted

显示加密状态

cryptsetup 和 luksDump 命令可用于检查设备是否已成功格式化以进行加密。 在这 example, sdb 分区正在用于确认。

$ cryptsetup luksDump /dev/sdb

喜欢转储

LUX分区格式

将零写入 LUKS 加密分区将使用零分配块大小。 使用以下命令将加密块设备设置为零。

$ dd if=/dev/zero of=/dev/mapper/encrypted

在加密驱动器中分配空间

dd 命令可能需要一些时间才能执行。 使用 pv 命令检查进度。

$ pv -tpreb /dev/zero | dd of=/dev/mapper/encrypted bs=128M

查看进度

注意:更换 加密 使用您的设备映射名称。

现在用您想要的文件系统格式化新分区。 在这 example,使用ext4文件系统。

$ mkfs.ext4 /dev/mapper/encrypted

代替 加密 使用您的设备映射器名称。

格式化加密设备

挂载新的文件系统。 在这 example, 新文件系统挂载在 /encrypted

$ mkdir /encrypted
$ mount /dev/mapper/encrypted /encrypted

替换设备映射器名称 加密 使用您自己的映射器名称。

$ df -h
$ cd /encrypted
$ ls -l

在 Linux 上成功加密设备

所以我们成功地使用 LUKS 在 Linux 上创建了一个加密分区。

怎样在 Linux 上使用 LUKS 加密块设备