前言
本实验用于日常学习用,如需对存有重要数据的磁盘进行操作,请做好数据备份工作。 此实验只是使用LUKS工具的冰山一角,后续还会有更多功能等待探索。
LUKS(Linux Unified Key Setup)是Linux系统中用于磁盘加密的一种机制,它为磁盘分区提供了强大的加密保护。
加密卷:LUKS通过创建一个加密的“加密卷”,这个卷在磁盘上表现为一个分区或整个磁盘。
密钥槽:每个LUKS加密卷可以包含多个密钥槽,每个槽可以存储一个不同的密钥,用于解密加密卷。
主密钥:LUKS使用一个主密钥来加密和解密这些密钥槽中的密钥。
LUKS为Linux系统提供了一种强大且灵活的磁盘加密解决方案,通过创建加密卷和使用密钥槽来保护数据安全。它在全磁盘加密、分区加密和容器加密等多种场景下都有广泛应用。
LUKS工具,不是LUSK工具。
基本步骤
本次实验的操作系统为Redhat8
1、查看是否安装了LUKS软件包
rpm -qf /sbin/cryptsetup
2、 查看当前磁盘及分区
fdisk -l
3、添加新磁盘
关闭虚拟机,再VMware工作台给虚拟机添加一个新硬盘
对硬盘的相关操作,可以参考这篇文章:
Linux——【磁盘管理和LVM卷组管理】
4、对新硬盘进行加密
对/dev/nvme0n2 进行加密
cryptsetup luksFormat /dev/nvme0n2
5、对解锁的硬盘映射
cryptsetup luksOpen /dev/nvme0n2 dly
6、查看映射情况
ll /dev/mapper/dly
• lrwxrwxrwx. 1 root root 7 Nov 24 02:07 /dev/mapper/dly -> …/dm-2
l 表示这是一个符号链接。
rwxrwxrwx 表示所有用户都有读、写和执行权限。
1 表示链接数(硬链接数量)。
root root 表示所有者是 root 用户和 root 组。
7 表示符号链接本身占用的字节数。
Nov 24 02:07 表示最后修改时间。
/dev/mapper/dly -> …/dm-2 表示这个符号链接指向的目标路径是 …/dm-2,即 /dev/dm-2。
设备映射器(Device Mapper):
• /dev/mapper/ 目录下的文件通常与 Linux 的设备映射器框架相关,它允许将物理块设备映射到逻辑卷管理器(如 LVM)或加密设备等。
• dm-2 是一个由设备映射器创建的逻辑设备名。
7、将磁盘格式话未ext4模式
mkfs.ext4 /dev/mapper/dly
8、创建磁盘挂载点,并挂载磁盘,查看文件系统的使用情况
//创建挂载目录
mkdir /mnt/luks
//进行磁盘挂载
mount /dev/mapper/dly /mnt/luks/
//查看各文件系统情况
df -h
9、配置文件,设置硬盘加密自启
该文件用于开机自动挂载
/etc/fstab 文件用于
定义系统启动时自动挂载的文件系统
,通过正确配置该文件,可以实现文件系统的自动化管理和挂载。
文件中的字段
<file system> <mount point> <type> <options> <dump> <pass>
<file system>:设备名或UUID,可以是实际的设备路径(如 /dev/sda1)或UUID(如 UUID=xxxxx)。
<mount point>:挂载点,即文件系统将被挂载到的位置(如 /, /home, /mnt/data)。
<type>:文件系统类型(如 ext4, xfs, vfat, ntfs 等)。
<options>:挂载选项,可以包含多个选项,用逗号分隔(如 defaults, noatime, noexec 等)。
<dump>:备份工具使用的字段,通常设置为 0,表示不进行备份。
<pass>:fsck工具使用的字段,用于确定文件系统检查的顺序。根文件系统通常设置为 1,其他文件系统可以设置为 2 或其他值。
进入配置文件
vi /etc/fstab
10、在/etc/crypttab生成虚拟设备文件
该文件可以实现加密卷的自动化管理和挂载
/etc/crypttab 文件在 Linux 系统中用于
配置加密卷的自动解密
。当系统启动时,根据这个文件中的配置,可以自动解密指定的加密卷,并将其挂载到指定的位置。
这对于需要自动加载加密卷的场景非常有用,例如在系统启动时自动挂载加密的根文件系统或数据分区。
vi /etc/crypttab
11、重启设备,验证是否加密成功
12、关闭加密
先卸载挂载点,再锁定分区
//卸载挂载点(一定不要打错挂载点!!!)
umount /mnt/luks
//关闭对磁盘的加密
cryptsetup luksClose dly
//查看是否完成加密关闭
ll /dev/mapper/dly
此时再重启,应该不会出现输入磁盘加密密码的情况,但是我重启后不仅需要输入加密密码,还进入了紧急模式。。。
细心的朋友可能会发现我在最后一步,==卸载挂载点的时候打错了卸载点,导致我再次进入Redhat时,被强制进入了紧急模式。==主要原因就是磁盘找不到挂载点,导致磁盘分区错误。以下是本次解决方法。
错误原因:
问题解决
1、强制模式下,进入/etc/fstab 这个配置文件,将之前写入的磁盘加密自启信息注释或删掉(在此之前我在“编辑虚拟机”中,将之前加密的磁盘移除了,不过就算你没有移除磁盘,也是可以进行接下来的操作)
vi /etc/fstab
2、保存退出后重新加载文件使其生效
systemctl daemon-reload
然后重启
reboot
此时开机发现系统依然让我们输入磁盘加密信息,正常输入即可,输入完成后按回车键发现能够正常进入系统啦!(之前是输入密码后会进入紧急模式)
至此,紧急模式的问题我们已经解决。
由于我的粗心,导致在卸载错误挂载点,因此我需要重新卸载
进入/etc/crypttab 文件中,将之前写入的信息注释或删除
vi /etc/crypttab
重启后发现可以直接输入账户密码进入Redhat,不需要再输入磁盘加密密码啦!
然后查看当前的硬盘及分区状况,发现之前对加密的分区还在。
问题解决!
总结
以上就是使用LUKS对Linux磁盘加密的过程,最后出现一点小插曲,挂载点和映射文件一定不要打错!在面对突发问题时,冷静时最好的办法,不妨回过头来理一遍思路,弄清楚每个文件的作用,可能会有意外的收获!
问题解决参考链接:【RedHat】重启服务器进入了emergency mode紧急状态——UUID不匹配