LUKS(Linux Unified Key Setup)是一个广泛使用的磁盘加密方法,由Linux内核支持,并通过`cryptsetup`工具包实现。
`cryptsetup`命令行工具通过使用从提供的密码短语派生的对称加密密钥实时加密卷磁盘,每次挂载磁盘、分区或整个磁盘(甚至USB闪存)时都需要提供该密码短语,并使用`aes-cbc-essiv:sha256`加密算法。
由于LUKS可以加密整个块设备(硬盘、USB闪存、闪存盘、分区、卷组等),它在Linux系统中广泛推荐用于保护可移动存储介质、笔记本硬盘或Linux交换文件,不推荐用于文件级别的加密。
NTFS(New Technology File System)是微软开发的专有文件系统。
Ubuntu 24.04提供了LUKS加密的完整支持,并通过`ntfs-3g`包原生支持Windows的NTFS文件系统。
为了证明这一点,在本教程中,我将在Ubuntu 24.04系统上添加一块新硬盘(系统新硬盘的设备名称为`/dev/vdb`),并将其分为两个分区。
– 第一个分区(`/dev/vdb1` – 主分区)用于LUKS加密。
– 第二个分区(`/dev/vdb2` – 扩展分区)格式化为NTFS,供Linux和Windows系统访问数据。
此外,这些分区将在重启后自动挂载到Ubuntu 24.04系统中。
步骤1:创建磁盘分区
1. 在硬盘物理添加到机器后,使用`ls`命令列出所有`/dev`设备(新硬盘将是`/dev/vdb`),或者使用`fdisk`命令检查新添加的硬盘。
ls /dev/vd*
sudo fdisk -l /dev/vdb
因为还没有写入文件系统,所以磁盘没有有效的分区表。
2. 下一步,使用`cfdisk`磁盘工具将硬盘划分为两个分区,`cfdisk`提供了基于文本的界面来进行磁盘分区。
sudo cfdisk /dev/vdb
如果这是第一次使用`cfdisk`对该磁盘进行操作,可能需要选择分区表类型(例如,旧系统选择MBR,新系统选择GPT)。

3. 接下来,`cfdisk`会以交互模式打开。选择磁盘上的“Free Space”选项,并使用左右箭头键导航到“New”选项。

4. 如果提示选择分区类型(主分区或扩展分区),请选择并设置分区的大小(以MB或GB为单位)来创建第一个分区。

5. 创建第一个分区后,再次选择“Free Space”并选择“New”来创建第二个分区。

6. 如果提示选择分区类型(主分区或扩展分区),请选择并设置分区的大小(以MB或GB为单位)来创建第二个分区。

7. 创建完分区后,检查并确认分区,选择“Write”以保存分区。

8. 选择“Quit”退出`cfdisk`工具。

恭喜!您的分区已经成功创建,现在可以进行格式化并使用。
步骤2:格式化新分区
9. 为了再次验证磁盘分区表,重新使用`fdisk`命令,它会显示详细的分区表信息。
sudo fdisk -l /dev/vdb
10.使用以下命令将第一个分区格式化为ext4文件系统。
sudo mkfs.ext4 /dev/vdb1
11. 使用`ntfs-3g`安装包将第二个分区格式化为NTFS文件系统。
sudo apt install ntfs-3g
sudo mkfs.ntfs /dev/vdb2
步骤3:挂载新分区
12. 为了使分区可用,需要将它们挂载到文件系统中的挂载点。
sudo mkdir /mnt/partition1
sudo mkdir /mnt/partition2
13. 接下来,将分区挂载到新创建的挂载目录。
sudo mount /dev/vdb1 /mnt/partition1
sudo mount /dev/vdb2 /mnt/partition2
14. 为了自动挂载分区,您需要使用`blkid`命令查找分区的UUID。
sudo blkid /dev/vdb1
sudo blkid /dev/vdb2
15. 接下来,编辑`/etc/fstab`文件,并使用UUID添加新分区的条目。
UUID=7a1e356f-f782-4835-bd1c-5e6d64378869 /mnt/partition1 ext4 defaults 0 2
UUID=0A9AABBB53B3165A /mnt/partition2 ntfs defaults 0 2
步骤4:加密新分区
16. 要使用`cryptsetup`加密分区,需要安装`cryptsetup`工具。
sudo apt install cryptsetup [Debian 系统]
sudo dnf install cryptsetup [RedHat 系统]
17. 现在是加密硬盘第一个分区的时机,执行以下命令,系统会提示您确认并输入密码短语来解锁加密分区。
sudo cryptsetup luksFormat /dev/vdb1
18. 要使该加密分区激活,它必须通过`cryptsetup`工具在`/dev/mapper`目录中初始化,并赋予一个名称。
sudo cryptsetup open --type luks /dev/vdb1 crypted_volume
19. 接下来,格式化加密后的分区并挂载它。
sudo mkfs.ext4 /dev/mapper/crypted_volume
sudo mkdir /mnt/encrypted1
sudo mount /dev/mapper/crypted_volume /mnt/encrypted1
20. 对于第二个分区,您需要使用以下命令初始化加密。
sudo cryptsetup luksFormat /dev/vdb2
21. 要使第二个加密分区激活,同样必须使用`cryptsetup`工具初始化,并赋予一个名称。
sudo cryptsetup open --type luks /dev/vdb2 crypted_volume2
22. 接下来,格式化第二个加密分区并挂载它。
sudo mkfs.ntfs /dev/mapper/crypted_volume2
sudo mkdir /mnt/encrypted2
sudo mount /dev/mapper/crypted_volume2 /mnt/encrypted2
步骤5:自动挂载加密分区
23. 为了在启动时自动解锁和挂载加密分区,您需要更新`/etc/crypttab`和`/etc/fstab`。
sudo nano /etc/crypttab
24. 使用`blkid`命令查找分区的UUID。
sudo blkid /dev/vdb1
sudo blkid /dev/vdb2
25. 然后,在`/etc/crypttab`文件中添加加密分区的条目。
crypted_volume UUID=d29f57c3-fe00-41d5-8095-d68f7f04823d none luks
crypted_volume2 UUID=1DF9CC677F758914 none luks
26. 同样,编辑`/etc/fstab`文件,指定设备名称、挂载点、文件系统类型以及其他选项。
sudo nano /etc/fstab
添加文件系统的条目:
/dev/mapper/crypted_volume /mnt/encrypted1 ext4 defaults 0 2
/dev/mapper/crypted_volume2 /mnt/encrypted2 ntfs defaults 0 2
27. 最后,验证加密分区是否正确挂载。
df -hT
如您所见,两个磁盘分区已自动挂载到Ubuntu的文件系统中。建议如果您无法访问重启序列以提供加密卷密码,则不要在物理远程服务器上使用`fstab`文件中的自动加密卷。
同样的设置可以应用于所有类型的可移动介质,如USB闪存、闪存内存、外部硬盘等,以保护重要、机密或敏感数据,以防止窃听或盗窃。











