LUKS首字母缩写代表Linux Unified Key Setup,是Linux内核广泛使用的磁盘加密方法,使用cryptsetup软件包来实现。
cryptsetup命令行使用从提供的密码短语派生的对称加密密钥来实时加密卷磁盘,每次挂载卷磁盘、分区甚至整个磁盘(甚至USB闪存)到文件系统层次结构中,使用aes-cbc-essiv:sha256加密算法。

因为LUKS可以加密Linux系统上的整个块设备(硬盘、USB闪存、闪存盘、分区、卷组等),所以被广泛推荐用于保护可移动存储介质、笔记本硬盘或Linux交换文件,但不推荐用于文件级加密。
NTFS(新技术文件系统)是由微软开发的专有文件系统。
Ubuntu 14.04完全支持LUKS加密并通过ntfs-3g软件包提供NTFS在Windows上的本地支持。
为了证明本教程中的观点,我在Ubuntu 14.04系统上添加了一个新的硬盘(第四块,系统引用为/dev/sdd),它将被分成两个分区。
- 一个分区(/dev/sdd1 – 主分区)用于LUKS加密。
- 第二个分区(/dev/sdd5 – 扩展分区)格式化为NTFS,以在Linux和基于Windows的系统中访问数据。
这些分区也将在Ubuntu 14.04重新启动后自动挂载。
步骤1:创建磁盘分区
1. 在您的硬盘物理添加到您的机器后,请使用ls命令列出所有/dev/devices(第四个磁盘是/dev/sdd</diy5)。
# ls /dev/sd*

2. 接下来使用fdisk命令检查您新添加的硬盘。
$ sudo fdisk –l /dev/sdd

因为还没有写入任何文件系统,所以该硬盘尚未包含有效的分区表。
3. 下一步使用cfdisk磁盘工具将硬盘划分为两个分区。
$ sudo cfdisk /dev/sdd
4. 下一个屏幕打开cfdisk交互模式。选择您的硬盘Free space并使用左/右箭头键导航到New选项。

5. 将分区类型选择为Primary并按Enter。

6. 在MB中写下您想要的分区大小。

7. 在硬盘的Beginning Free space处创建此分区。

8. 接下来导航到分区Type选项并按Enter。

9. 下一个提示显示所有类型的文件系统及其编号代码(十六进制数字)。此分区将是一个Linux LUKS加密分区,因此选择83代码并再次按Enter创建分区。

10. 创建第一个分区后,cfdisk 实用程序提示回到初始状态。要创建用作 NTFS 的第二个分区,请选择剩余的 空闲空间,导航到 新建 选项,然后按下 Enter 键。

11. 这次分区将是一个 扩展逻辑 分区。因此,导航到 逻辑 选项,再次按下 Enter。

12. 再次输入分区大小。要将剩余的空闲空间用作新分区,请保持默认大小值并仅按下 Enter。

13. 再次选择分区类型代码。对于 NTFS 文件系统,请选择 86 卷代码。

14. 审查并验证分区后,选择 Write,在下一个交互提示问题上回答 yes,然后退出 Quit 以离开 cfdisk 实用程序。



恭喜!您的分区已成功创建,现在准备好格式化和使用。
15. 要再次验证磁盘 分区表,请再次执行 fdisk 命令,将显示详细的分区表信息。
$ sudo fdisk –l /dev/sdd

步骤2:创建分区文件系统
NTFS 文件系统
16. 要在第二个分区上创建 NTFS 文件系统,请运行 mkfs 命令。
$ sudo mkfs.ntfs /dev/sdd5

17. 要使分区可用,必须将其挂载到文件系统的挂载点上。使用 mount 命令,将第二个分区挂载到第四个硬盘上的 /opt 挂载点。
$ sudo mount /dev/sdd5 /opt
18。接下来,使用cat命令检查分区是否可用并列在/etc/mtab文件中。
$ cat /etc/mtab

19。要卸载分区,请使用以下命令。
$ sudo umount /opt
EXT4 LUKS
20。确保cryptsetup软件包已安装在您的系统上。
$ sudo apt-get install cryptsetup [On Debian Based Systems] # yum install cryptsetup [On RedHat Based Systems]
21。现在是时候使用以下命令格式化第四个硬盘上的第一个分区,使用ext4文件系统。
$ sudo luksformat -t ext4 /dev/sdd1
在“确定吗?”问题上以大写YES回答,并输入三次您所需的密码。

注意:根据您的分区大小和HDD速度,文件系统创建可能需要一些时间。
22。您还可以验证分区设备状态。
$ sudo cryptsetup luksDump /dev/sdd1

23。LUKS支持最多8个添加的密码。要添加密码,请使用以下命令。
$ sudo cryptsetup luksAddKey /dev/sdd1

要删除密码,请使用。
$ sudo cryptsetup luksRemoveKey /dev/sdd1

24。对于这个加密分区要激活,必须将其名称条目(初始化)添加到/dev/mapper目录,并使用cryptsetup软件包的帮助。
此设置需要以下命令行语法:
$ sudo cryptsetup luksOpen /dev/LUKS_partiton device_name
其中“device_name”可以是您喜欢的任何描述性名称!(我已经将它命名为crypted_volume)。实际命令如下所示。
$ sudo cryptsetup luksOpen /dev/sdd1 crypted_volume

25. 然后验证您的设备是否在/dev/mapper目录中列出,符号链接和设备状态。
$ ls /dev/mapper $ ls –all /dev/mapper/encrypt_volume

$ sudo cryptsetup –v status encrypt_volume

26. 现在,为了使分区设备普遍可用,请使用mount命令将其挂载到系统中的一个挂载点。
$ sudo mount /dev/mapper/crypted_volume /mnt

如上所示,分区已经被挂载并可用于写入数据。
27. 要使其不可用,只需从系统中卸载它并关闭设备。
$ sudo umount /mnt $ sudo cryptsetup luksClose crypted_volume

步骤三:自动挂载分区
如果您使用固定硬盘并且需要在重新启动后自动系统挂载两个分区,则必须按照以下两个步骤进行。
28. 首先编辑/etc/crypttab文件并添加以下数据。
$ sudo nano /etc/crypttab
- 目标名称:您设备的描述性名称(请参见上面的第22点关于EXT4 LUKS)。
- 源驱动器:格式化为LUKS的硬盘分区(请参见上面的第21点关于EXT4 LUKS)。
- 密钥文件:选择无
- 选项:指定luks
最终的行应如下所示。
encrypt_volume /dev/sdd1 none luks

29. 然后编辑/etc/fstab并指定您的设备名称,挂载点,文件系统类型和其他选项。
$ sudo nano /etc/fstab
在最后一行使用以下语法。
/dev/mapper/device_name (or UUID) /mount_point filesystem_type options dump pass
并添加您的特定内容。
/dev/mapper/encrypt_volume /mnt ext4 defaults,errors=remount-ro 0 0

30. 要获取设备的UUID,请使用以下命令。
$ sudo blkid

31.要添加之前创建的NTFS分区类型,请在fstab中的新行上使用与上面相同的语法(这里使用Linux文件追加重定向)。
$ sudo su - # echo "/dev/sdd5 /opt ntfs defaults 0 0" >> /etc/fstab

32.要验证更改,请重新启动您的机器,在“开始配置网络设备”引导消息后按下Enter,然后键入设备的密码。


如您所见,这两个磁盘分区已自动挂载到Ubuntu文件系统层次结构中。作为建议,如果您无法访问重新启动序列以提供加密卷密码,请不要在物理上的远程服务器上使用来自fstab文件的自动加密卷。
相同的设置也可应用于所有类型的可移动介质,如USB存储器、闪存、外部硬盘等,以保护重要、机密或敏感数据,防止窃听或盗取。
Source:
https://www.tecmint.com/linux-hard-disk-encryption-using-luks/