Ubuntu 19.04 磁盘加密

多年来一直是Ubuntu的粉丝。 我通常将Ubuntu安装更新到最新的可用发行版,以便使用开源世界必须提供的最新和最出色的应用程序和功能。 例如,最新的Ubuntu 19.04具有GNOME 3.32,Linux Kernel 5.0和性能改进!

我也总是进行全新的Ubuntu安装(当然要确保安装是最新的),并且将数据保存在单独的分区中,以避免在安装过程中删除整个磁盘。 我还双重启动Windows 10(是的,我也是Windows的粉丝。但是,我的主要开发环境在Ubuntu上)。 因此,我总是将Ubuntu安装到一个单独的分区,并将主目录安装在另一个分区中。

加密数据

如今,隐私和安全至关重要,加密数据对于您的隐私和安全至关重要。 加密数据有很多利弊,这是一个不同的话题。 最重要的一点是,只要您的加密密钥(密码)是安全的,并且只有您有权访问数据,您的数据才是安全的。

当我们考虑欧盟通用数据保护条例(GDPR)时,对数据进行加密也非常重要。 公司对计算机上的数据进行加密,以减少数据泄露的可能性。

在Ubuntu中,有几种加密数据的方法。

  1. 使用eCryptfs(Linux的企业加密文件系统)来加密您的主目录。
  2. 使用fscrypt(用于管理Linux文件系统加密的高级工具)
  3. 使用LUKS(Linux统一密钥设置)加密磁盘

自Ubuntu 18.04 LTS发行以来,Ubuntu安装不再为您提供在安装过程中使用eCryptfs加密主文件夹的功能。 相反,它提供了对整个硬盘进行加密的功能。 但是,仅当您选择擦除磁盘并安装Ubuntu时,才启用加密Ubuntu安装的选项。

在Ubuntu安装之后,您仍然可以通过安装ecryptfs-utils软件包来使用eCryptfs。 但是,我不想使用ecryptfs-utils软件包,因为在将它称为有问题的和维护不足的软件包后,它已在Ubuntu安装中删除了! 您可以参考错误注释以获取更多详细信息,但建议的替代方法是在文件系统中使用LUKS或fscrypt支持(例如ext4)使用全盘加密,以对每个目录进行加密。

即使有备份,我也不想删除我的Ubuntu分区以使用LUKS启用磁盘加密。 因此,我首先尝试了fscrypt工具。

Linux Kernel 5.0中突出显示的功能之一是对Adiantum文件系统加密的本机支持。 由于Adiantum是由Google专为运行Android Go的低功耗移动设备设计和创建的,因此,我希望将fscrypt与Adiantum一起使用不会带来太多性能开销。

从源代码构建fscrypt后,我设法使fscrypt与Adiantum加密一起使用。 尚未从官方Ubuntu存储库中的fscrypt包获得Adiantum支持。 设置fscrypt很简单,但是我遇到了几个问题。 有时,解锁后我什至无法读取自己的文件。 尝试访问文件时,我得到的只是“不允许操作”。 由于fscrypt对我来说不够稳定,因此我想尝试使用LUKS进行全盘加密。

如前所述,如果您选择擦除磁盘并安装Ubuntu,则可以使用LUKS启用全盘加密。 但这不是我的选择,因为我双重启动Windows。

在Ubuntu Wiki中,有非常详细的说明来手动加密整个系统。 这是一本全面的指南; 但是,由于一些原因,我没有遵循它。 一个主要原因是,在其中一个步骤中,它要求您从Dropbox下载脚本并执行。 您知道永远不要从Web运行不受信任的脚本。 无论如何,我下载了它并检查了它的工作方式。 尽管我没有执行它,但这是一个编写良好的脚本。 事实证明,实际加密分区的步骤非常简单。

通过遵循另一本在Ubuntu上加密分区的指南,我也发现很容易理解这些步骤。

使用LUKS进行磁盘加密

在本节中,我将说明如何使用LUKS加密分区以及如何在加密分区上安装Ubuntu 19.04。

请注意,我已经有了GUID分区表(GPT),这使事情变得非常容易。

什么是LUKS?
Linux统一密钥设置(LUKS)是Linux硬盘加密的标准。 LUKS还支持对多个用户密码的安全管理。

准备分区
安装Ubuntu 19.04时,我决定创建3个分区。

  1. 引导分区以挂载 /boot
  2. 根分区挂载 /
  3. 数据分区挂载 /home

之前,我将/ boot和/挂载到单个分区。 使用加密的/ boot目录会使事情变得更复杂,因此我决定不加密/ boot目录。

注意:在考虑加密磁盘之前,请确保备份数据。

使用“Try Ubuntu”选项启动Ubuntu 19.04实时映像。
在安装Ubuntu之前,需要对分区进行加密。 因此,我首先从Ubuntu 19.04 live image引导了PC,然后选择“ Try Ubuntu”选项。

创建分区

我使用GParted应用程序删除了现有的根分区和数据分区,该应用程序已安装在Ubuntu 19.04实时映像上。
在这里插入图片描述

如前所述,我创建了3个分区。
对于启动分区,我给了500MiB

在这里插入图片描述

我为将安装操作系统的根分区提供了51200MiB(50GiB)。 您实际上不需要为根分区提供大量空间。 以我的经验,50GiB绰绰有余,尤其是当您在根分区中有交换文件并在根分区上安装所有软件时。
在这里插入图片描述

我将剩余空间分配给了数据分区。
在这里插入图片描述

创建3个分区后,更改在GParted中显示为挂起操作。

我单击了GParted上的复选标记图标应用修改。

在这里插入图片描述

修改完成:
在这里插入图片描述

一旦所有操作成功完成,我就开始使用终端对新分区/ dev / sda7(rootfs)和/ dev / sda8(data)进行加密。

在这里插入图片描述

加密根分区和数据分区

我使用cryptsetup命令使用LUKS加密分区。
首先,使用cryptsetup命令初始化LUKS分区。 初始化LUKS分区后,将打开该分区并提供密码。

sudo cryptsetup luksFormat --hash=sha512 --key-size=512 /dev/sda7 
sudo cryptsetup luksOpen /dev/sda7 rootfs

sudo cryptsetup luksFormat --hash=sha512 --key-size=512 /dev/sda8
sudo cryptsetup luksOpen /dev/sda8 home

现在,LUKS分区可在/dev/mapper/下作为LVM逻辑卷使用

注意:建议覆盖LUKS分区以擦除现有内容。 这一步需要很长时间! 为此做好准备。

sudo dd if=/dev/zero of=/dev/mapper/rootfs bs=16M status=progress
sudo dd if=/dev/zero of=/dev/mapper/home bs=16M status=progress

创建逻辑卷以安装Ubuntu并创建主目录
现在,我们需要在LUKS卷之上创建逻辑卷,以在根分区上安装Ubuntu并在数据分区中创建主目录。
我使用以下命令创建逻辑卷。

sudo pvcreate /dev/mapper/rootfs
sudo vgcreate vgroot /dev/mapper/rootfs
sudo lvcreate -n lvroot -l 100%FREE vgroot
sudo pvcreate /dev/mapper/home
sudo vgcreate vghome /dev/mapper/home
sudo lvcreate -n lvhome -l 100%FREE vghome

在这里插入图片描述

以下屏幕截图显示了LUKS分区如何在“磁盘”应用程序中显示。
在这里插入图片描述

创建逻辑卷后,我从桌面上的快捷方式图标开始了Ubuntu安装。
在这里插入图片描述

以下向导显示我具有Windows Boot Manager。
在这里,如果您选择“擦除磁盘并安装Ubuntu”,则可以直接加密Ubuntu安装。

我选择了“Something Else”,因为我已经加密了分区。
在这里插入图片描述

选择执行“Something Else”后,出现以下屏幕。
在这里,我确保将主磁盘选择为“用于安装引导加载程序的设备”
在这里插入图片描述

我选择/dev/sda6作为启动分区,并选择/boot作为安装点。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接下来,我选择创建的逻辑卷来装入 /
在这里插入图片描述

我指定使用Ext4日记文件系统格式化根分区。
在这里插入图片描述

类似地,我选择了我创建的用于挂载/home的逻辑卷,并指定使用ext4对其进行格式化。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

确认将更改写入磁盘后,安装继续。
您会看到,加密Home目录的选项在Ubuntu安装中不再可用。

在这里插入图片描述
在这里插入图片描述
安装完成后,我单击“继续测试”进行必要的更改以在启动时加载加密分区。
在这里插入图片描述
我使用以下命令记录了加密分区的UUID。

sudo blkid </dev/DEV_ROOTFS>
sudo blkid </dev/DEV_HOME>

在这里插入图片描述
接下来,我在/mnt上安装了已安装的Ubuntu OS,并使用chroot命令将根目录更改为/mnt

sudo mount /dev/mapper/vgroot-lvroot /mnt
sudo mount </dev/DEV_BOOT> /mnt/boot
sudo mount /dev/mapper/vghome-lvhome /mnt/home
sudo mount --bind /dev /mnt/dev
sudo chroot /mnt
mount -t proc proc /proc
mount -t sysfs sys /sys
mount -t devpts devpts /dev/pts

在这里插入图片描述
接下来,我在chroot环境中创建了一个名为/etc/crypttab的文件。

sudo nano /etc/crypttab

我在/etc/crypttab中添加了以下几行(从先前从blkid命令获得的值替换<UUID_ROOTFS>和<UUID_HOME>)

# <target name> <source device> <key file> <options>
rootfs UUID=<UUID_ROOTFS> none luks,discard
home UUID=<UUID_HOME> none luks,discard

在这里插入图片描述

最后,我使用以下命令更新Linux内核以在启动时加载加密的分区。

update-initramfs -k all -c

在这里插入图片描述

重新启动后,Ubuntu提示输入密码,以在启动时解锁磁盘。
在这里插入图片描述

而已! 现在,我已经加密了根分区和主分区!

结论

在这个故事中,我通过提供逐步说明(包括屏幕截图)解释了加密数据的重要性以及如何对选定分区进行LUKS全盘加密。

在我看来,LUKS是目前在Ubuntu上加密数据的最佳且稳定的方法。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值