LUKS:Linux 硬盘数据加密,支持 NTFS
LUKS 的首字母缩写代表Linux 统一密钥设置,它是 Linux 内核广泛使用的磁盘加密方法,并通过cryptsetup包实现。
cryptsetup命令行使用从提供的密码派生的对称加密密钥动态加密卷磁盘,该密码每次在文件系统层次结构中安装卷磁盘、分区以及整个磁盘(甚至是 USB 记忆棒)时都会提供该密码,并使用aes-cbc-essiv:sha256密码。
由于 LUKS 可以加密 Linux 系统上的整个块设备(硬盘、USB 棒、闪存盘、分区、卷组等),因此主要推荐用于保护可移动存储介质、笔记本电脑硬盘或 Linux 交换文件,而不推荐用于文件级加密。
NTFS(新技术文件系统)是 Microsoft 开发的专有文件系统。
Ubuntu 14.04 借助ntfs-3g包为 Windows 提供对 LUKS 加密的完全支持以及对 NTFS 原生支持。
为了证明我在本教程中的观点,我在Ubuntu 14.04盒子上添加了一个新硬盘(第 4 个)(系统对新添加的硬盘的引用是/dev/sdd),它将被分成两个分区。
- 一个分区(/dev/sdd1 -primary)用于 LUKS 加密。
- 第二个分区(/dev/sdd5 - 扩展)格式化为 NTFS,用于访问基于 Linux 和 Windows 的系统上的数据。
重启后,这些分区也将自动挂载在 Ubuntu 14.04 上。
步骤 1:创建磁盘分区
1.在你的机器上物理添加硬盘后,使用ls 命令列出所有/dev/devices(第四个磁盘是/dev/sdd)。
# ls /dev/sd*
2.接下来使用fdisk命令检查新添加的硬盘。
$ sudo fdisk –l /dev/sdd
因为尚未写入文件系统,所以磁盘尚未包含有效的分区表。
3.接下来的步骤是使用cfdisk磁盘实用程序将硬盘切成两个分区。
$ sudo cfdisk /dev/sdd
4.下一个屏幕打开cfdisk交互模式。选择硬盘可用空间,然后使用左/右箭头键导航到新选项。
5.选择分区类型为Primary,然后按Enter。
6.写下所需的分区大小(MB)。
7.在硬盘可用空间的开始处创建此分区。
8.接下来导航到分区类型选项并按Enter。
9.下一个提示会列出所有类型的文件系统及其数字代码(十六进制数)。此分区将是Linux LUKS加密的,因此请选择代码83 ,然后再次按Enter键创建分区。
10.第一个分区已创建,cfdisk实用程序提示符返回到开始处。要创建用作NTFS的第二个分区,请选择剩余的可用空间,导航到新建选项并按Enter键。
11.这次分区将是扩展逻辑分区。因此,导航到逻辑选项并再次按Enter。
12.再次输入分区大小。若要使用剩余的可用空间作为新分区,请保留大小的默认值,然后按Enter即可。
13.再次选择分区类型代码。对于NTFS文件系统,请选择86卷代码。
14.检查并验证分区后,选择“写入” ,在下一个交互式提示问题中回答“是” ,然后“退出”以离开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”回答,然后输入三次您想要的密码。
注意:根据您的分区大小和硬盘速度,文件系统创建可能需要一段时间。
22.您还可以验证分区设备状态。
$ sudo cryptsetup luksDump /dev/sdd1
23. LUKS 支持最多添加8 个密码。要添加密码,请使用以下命令。
$ sudo cryptsetup luksAddKey /dev/sdd1
要删除密码,请使用。
$ sudo cryptsetup luksRemoveKey /dev/sdd1
24.要使此加密分区处于活动状态,它必须在cryptsetup包的帮助下在/dev/mapper目录中有一个名称条目(被初始化) 。
此设置需要以下命令行语法:
$ 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
步骤3:自动挂载分区
如果您使用固定硬盘,并且需要在重启后自动将两个分区挂载到系统,则必须遵循这两个步骤。
28.首先编辑/etc/crypttab文件并添加以下数据。
$ sudo nano /etc/crypttab
- 目标名称:您的设备的描述性名称(请参阅上文EXT4 LUKS的第 22点)。
- 源驱动器:为LUKS格式化的硬盘分区(参见上文EXT4 LUKS的第 21点)。
- 密钥文件:选择无
- 选项:指定 luks
最后一行看起来如下所示。
encrypt_volume /dev/sdd1 none luks
29.然后编辑/etc/fstab并指定您的设备名称、挂载点、文件系统类型和其他选项。
$ sudo nano /etc/fstab
On last line use the following syntax.
/dev/mapper/device_name (or UUID) /mount_point filesystem_type options dump pass
And add your specific content.
/dev/mapper/encrypt_volume /mnt ext4 defaults,errors=remount-ro 0 0
30. To get device UUID use the following command.
$ sudo blkid
31. To also add the NTFS partition type created earlier use the same syntax as above on a new line in fstab ( Here Linux file append redirection is used ).
$ sudo su - # echo "/dev/sdd5 /opt ntfs defaults 0 0" >> /etc/fstab
32. To verify changes reboot your machine, press Enter after “Starting configure network device” boot message and type your device passphrase.
As you can see both disk partitions were automatically mounted on Ubuntu filesystem hierarchy. As a advice do not use automatically encrypted volumes from fstab file on physically remote servers if you can’t have access to reboot sequence for providing your encrypted volume password.
The same settings can be applied on all types of removable media such as USB stick , Flash memory, external hard-disk, etc for protecting important, secret or sensitive data in case of eavesdropping or stealing.