网站搜索

如何在 Linux 中使用“Cryptsetup”工具设置加密文件系统和交换空间 - 第 3 部分


LFCELinux 基金会认证工程师的缩写)经过培训,拥有在 Linux 系统中安装、管理和排除网络服务故障的专业知识,并负责系统架构的设计、实施和持续维护。

介绍 Linux 基金会认证计划 (LFCE)。

加密背后的想法是只允许受信任的人访问您的敏感数据,并防止您的计算机/硬盘丢失或被盗时数据落入坏人之手。

简单来说,密钥用于“锁定”对您的信息的访问,以便在系统运行并由授权用户解锁时该信息可用。这意味着,如果一个人尝试检查磁盘内容(将其插入自己的系统或使用 LiveCD/DVD/USB 启动机器),他只会找到不可读的数据,而不是实际的文件。

在本文中,我们将讨论如何使用标准内核级加密工具 dm-crypt(设备映射器和加密的缩写)设置加密文件系统。请注意,由于 dm-crypt 是一个块级工具,因此它只能用于加密完整设备、分区或循环设备(不适用于常规文件或目录)。

准备驱动器/分区/循环设备进行加密

由于我们将擦除所选驱动器 (/dev/sdb) 中存在的所有数据,因此首先,我们需要在之前对该分区中包含的所有重要文件执行备份> 继续进行。

擦除 /dev/sdb 中的所有数据。我们将在这里使用 dd 命令,但您也可以使用其他工具(例如 shred)来完成此操作。接下来,我们将按照 LFCS 系列的第 4 部分 – 在 Linux 中创建分区和文件系统中的说明,在此设备上创建一个分区 /dev/sdb1

dd if=/dev/urandom of=/dev/sdb bs=4096 
测试加密支持

在继续之前,我们需要确保我们的内核已编译为支持加密:

grep -i config_dm_crypt /boot/config-$(uname -r)

如上图所示,需要加载 dm-crypt 内核模块才能设置加密。

安装 Cryptsetup

Cryptsetup 是一个前端界面,用于使用 dm-crypt 创建、配置、访问和管理加密文件系统。

aptitude update && aptitude install cryptsetup 		[On Ubuntu]
yum update && yum install cryptsetup 				[On CentOS] 
zypper refresh && zypper install cryptsetup 			[On openSUSE]

设置加密分区

cryptsetup 的默认操作模式是 LUKSLinux 统一密钥设置),因此我们将坚持使用它。我们首先设置 LUKS 分区和密码:

cryptsetup -y luksFormat /dev/sdb1

上面的命令使用默认参数运行cryptsetup,可以列出以下参数:

cryptsetup --version

如果您想更改cipherhashkey参数,您可以使用–cipher、< b>–hash 和 –key-size 标志,分别具有取自 /proc/crypto 的值。

接下来,我们需要打开 LUKS 分区(系统将提示我们输入之前输入的密码)。如果身份验证成功,我们的加密分区将在 /dev/mapper 中以指定的名称可用:

cryptsetup luksOpen /dev/sdb1 my_encrypted_partition

现在,我们将分区格式化为 ext4

mkfs.ext4 /dev/mapper/my_encrypted_partition

并创建一个挂载点来挂载加密分区。最后,我们可能想确认挂载操作是否成功。

mkdir /mnt/enc
mount /dev/mapper/my_encrypted_partition /mnt/enc
mount | grep partition

当您完成对加密文件系统的写入或读取后,只需将其卸载即可

umount /mnt/enc

并使用以下命令关闭 LUKS 分区:

cryptesetup luksClose my_encrypted_partition
测试加密

最后,我们将检查我们的加密分区是否安全:

1.打开LUKS分区

cryptsetup luksOpen /dev/sdb1 my_encrypted_partition

2. 输入您的密码

3.挂载分区

mount /dev/mapper/my_encrypted_partition /mnt/enc

4. 在安装点内创建一个虚拟文件。

echo “This is Part 3 of a 12-article series about the LFCE certification” > /mnt/enc/testfile.txt

5. 验证您是否可以访问刚刚创建的文件。

cat /mnt/enc/testfile.txt

6. 卸载文件系统。

umount /mnt/enc

7. 关闭 LUKS 分区。

cryptsetup luksClose my_encrypted_partition

8. 尝试将该分区作为常规文件系统挂载。它应该指示一个错误。

mount /dev/sdb1 /mnt/enc

加密交换空间以提高安全性

您之前输入的用于使用加密分区的密码在打开时存储在RAM内存中。如果有人能得到这个密钥,他就能够解密数据。对于笔记本电脑来说,这尤其容易做到,因为在休眠时 RAM 的内容保留在交换分区上。

为避免小偷留下密钥副本,请按照以下步骤加密交换分区:

1 创建一个大小适当的分区(在本例中为 /dev/sdd1)用作交换分区,并按照前面的说明对其进行加密。为了方便起见,将其命名为“交换”。

2.将其设置为交换并激活它。

mkswap /dev/mapper/swap
swapon /dev/mapper/swap

3. 接下来,更改/etc/fstab中的相应条目。

/dev/mapper/swap none        	swap	sw          	0   	0

4. 最后,编辑 /etc/crypttab 并重新启动。

swap               /dev/sdd1         /dev/urandom swap

系统完成启动后,您可以验证交换空间的状态:

cryptsetup status swap

概括

在本文中,我们探讨了如何加密分区和交换空间。通过此设置,您的数据应该相当安全。请随意尝试,如果您有任何问题或意见,请随时联系我们。只需使用下面的表格 – 我们将非常高兴收到您的来信!