安装后启用磁盘加密


61

我正在运行13.10 Saucy。如果我在安装过程中未启用磁盘加密,那么有什么方法可以事后启用它吗?

我发现了这个,它表示加密必须在安装时进行,但这也指的是Fedora。如果有任何方法可以从活动磁盘启动,则可以轻松启动。


全盘加密还是仅/ home文件夹?
Joren 2013年

全盘。(后续问题:完整磁盘与仅/ home相比有什么弊端?:))
Isaac Dontje Lindell 2013年

/ home磁盘加密不包括交换空间。如果仅加密/ home,则敏感数据可以写入未加密的交换中。这可以恢复。Ubuntu在登录期间会自动解密/ home。全盘加密在启动和登录时都需要输入密码。调整加密驱动器的大小是一个艰苦的过程。如果您有外部驱动器,则在13.10 Saucy Salamander中安装后很容易加密:备份数据,从仪表盘启动“磁盘”,选择外部驱动器,单击齿轮,选择加密,解锁新加密的驱动器,复制回数据。
user75798

Answers:


57

如果要启用主文件夹的加密,则需要安装和使用以下软件包:ecryptfs-utilscryptsetup。另外,您将需要另一个具有管理员(sudo)权限的用户帐户。完整的文档在这里:

如果要在安装后启用全盘加密,那么目前的简短答案可能是:不,不能。无论如何,如果您对此感兴趣,则可以重复以下问题:


8
请至少在此处包括链接的操作方法的基本步骤。以防万一您的链接离线,更改或暂时无法访问。
混淆使用

1
@ con-f-use如果您仔细阅读(不要混淆),答案中将包含非常基本的步骤。
RaduRădeanu2014年

1
如果您的主文件夹中有一个已加密的samba共享,该怎么办?网络用户可以不再阅读文件,还是通过共享对其解密?
Rush Frisby'3

21

跟进问题:与/ home相比,完整磁盘有什么弊端?

/ home中的加密使用称为ecryptfs的用户空间文件系统完成。它做得很好,并紧密地结合到默认的身份验证系统中,因此您将具有零可用性缺陷:当您从远程外壳或默认登录屏幕输入帐户时,密码将用于解开安全密钥。 ,然后该文件将用于即时加密/解密主目录中的文件(已挂载的文件系统将直接位于/ home / username中)。当您注销时,/ home / username将被卸载,只有加密的文件在系统中仍然可见(通常在/home/.ecryptfs/username/.Private/中)。由于文件名也被加密,因此它们看起来像一堆乱码/随机文件。唯一的信息泄漏是:文件大小,时间戳和文件数(使用全盘加密时,这些信息也被隐藏)。

如果您的系统要在多个用户之间共享,那么即使您决定同时添加全盘加密,这也是一个非常不错的功能:当计算机在家里启动并运行时,全盘加密的安全性将关闭。只要您注销,ecryptfs)加密就处于启用状态。

因此,全盘加密和本地加密不一定是互斥的。

以下是可能的设置列表,具体取决于不同的安全需求:

  • 仅限全盘加密如果您是唯一使用计算机的人,并且您的计算机可以处理全盘加密的开销(所有现代台式机都可以做到这一点,而无需用户注意,上网本和旧笔记本电脑就不那么多了),则可以使用全盘加密磁盘加密,并将其放置在与OS(/)相同的分区中。
  • 完整磁盘加密家用加密:如果您担心PC开启时会读取私人数据,或者与其他用户共享计算机,则可以将家用磁盘放在/以外的分区中,并在整个磁盘上使用ecryptfs加密(即通过LUKS加密)
  • 仅适用于家庭ECRYPTFS加密:如果您不太担心有人不在时会篡改系统,但仍希望保持私有数据的安全,则跳过整个磁盘加密,而仅使用ecryptfs(家庭加密)。此方案的一个好处是,这是很容易设置,即使您仅使用ecryptfs-migrate-home安装了Ubuntu。同样,这是Ubuntu的默认设置,之后又更改了几个发行版,从而增加了全盘加密的可能性。由于大多数现代台式机都可以轻松处理全盘加密,并且为脱机代码注入增加了一层薄薄的安全性,因此在安装程序中添加了全盘加密。但是请注意,对于大多数用户而言,仅使用ecryptfs加密房屋就足以满足他们的需求:让他们的朋友和普通笔记本电脑小偷远离其私人数据。此外,如果您以正确的方式成为组织的唯一目标,那么,除非您还建立了许多其他偏执行为(例如:将内核保存在始终随身的单独的笔式驱动器中;不断检查硬件篡改/键盘记录程序等)

如果我在安装过程中未启用磁盘加密,那么有什么方法可以启用它吗?

是的,如果您当前正在使用LVM并且系统上有足够的空间将所有未加密的系统文件复制到加密的LUKS分区中,它将变得更加容易。我现在不赘述,因为我不知道您是否正在使用LVM,并且是否现在不愿仅使用ecrypfs并跳过全盘加密的麻烦,直到下一次全新安装。


3

好了,您可以备份所有重要目录和已安装的软件。确保您的13.10已完全更新,以避免版本冲突。通常备份的内容是:

之后,仅重新加密即可重新安装系统。将其更新为完整扩展。然后将备份移至加密系统并安装先前版本中的所有软件。

只需确保在备份时不要覆盖对加密重要的文件即可(例如/etc/fstab/etc/cryptab与grub相关的某些内容和其中的某些内容/boot不应替换为备份的文件)。


1

从工作正常的Ubuntu 16.04,我成功进行了安装后的根分区加密,其中的根分区包含/ boot以外的所有内容。我将/ boot放在单独的可移动USB上。值得注意的是,我是在升级到Ubuntu 18之前完成的,并且升级在加密磁盘版本上运行良好。

加密没有“就地”完成,这对我来说很好,因为无论如何在新设置生效之前我都不想覆盖工作版本。

执行正确的过程非常简单和快捷。(尽管找出正确的过程非常耗时,因为我遵循了一些错误的线索。)

大纲

  1. 创建一个活动的Linux USB磁盘-启用持久性很方便。在该活动USB磁盘上启动。
  2. 在一个空分区上创建一个luks加密的卷组。(在我的情况下,它与原始linux在同一磁盘上,但也可能是另一张磁盘。)在该加密分区上创建/(根)并交换逻辑卷。就复制的linux而言,它们将充当虚拟分区。
  3. 将文件从旧根复制到新根。
  4. 设置并分区另一个USB以充当可移动引导盘。
  5. 在新的根目录下设置一些文件,做一些魔术,然后将chroot设置为新的根目录,然后从chroot的新根目录环境将grub安装到启动磁盘上。

细节

1-使用活动的Linux USB磁盘引导-启用持久性很方便。

使用unetbootin在USB上安装Ubuntu 16。GUI允许指定“持久性”,但是还需要执行另一步骤才能使持久性起作用-修改/boot/grub/grub.cfg以添加--- persistent如下内容:

menuentry "Try Ubuntu without installing" {
    set gfxpayload=keep
    linux   /casper/vmlinuz  file=/cdrom/preseed/ubuntu.seed boot=casper quiet splash --- persistent
    initrd  /casper/initrd
}

使用实时USB引导

2-在一个空分区上创建一个luks加密卷组。在该加密分区上创建/(根)并交换逻辑卷。

假设要加密的未使用分区为/dev/nvme0n1p4

(可选)如果您希望在加密和格式化之前隐藏分区上的旧数据,则可以随机擦除分区。请参阅此处的讨论

dd if=/dev/urandom of=/dev/nvme0n1p4 bs=4096 status=progress

设置加密。

cryptsetup -y -v luksFormat /dev/nvme0n1p4

系统将要求您设置密码。

cryptsetup luksOpen /dev/nvme0n1p4 crypt1

系统将要求您输入密码。请注意,这crypt1是一个任意的用户决定名称。现在创建卷和格式。

pvcreate /dev/mapper/crypt1
vgcreate crypt1-vg /dev/mapper/crypt1

lvcreate -L 8G crypt1-vg -n swap
mkswap /dev/crypt1-vg/swap

lvcreate -l 100%FREE crypt1-vg -n root
mkfs.ext4 /dev/crypt1-vg/root

使用这些实用程序查看卷并了解层次结构。

pvscan
vgscan
lvscan
ls -l /dev/mapper
ls -l /dev/crypt1

3-将文件从旧根复制到新根

mkdir /tmp/old-root 
mount /dev/ubuntu-vg/root /tmp/old-root/
mkdir /tmp/new-root
mount /dev/crypt1-vg/root /tmp/new-root/
cp -a /tmp/old-root/. /tmp/new-root/

umount /tmp/old-root
umount /tmp/new-root

cp -a ... 以存档模式复制,保留所有文件模式和标志。

4-设置并分区另一个USB以用作可移动引导盘。

我为此使用了gparted。设置两个分区。第一个分区是vfat,第二个ext2。每个都是512 MB,您可能会花更少的钱。假设设备/dev/sdf

# The first partition: (will be /dev/sdf1)
Free space preceding (leave default value)
New size 512 MiB
Free space following (leave default value)
Create as: Primary Partition
Partition Name: (leave)
File System: fat32
Label: (leave)

# The second partition: (will be /dev/sdf2)
Free space preceding (leave default value)
New size 512 MiB
Free space following (leave default value)
Create as: Primary Partition
Partition Name: (leave)
File System: ext4
Label: (leave) 

5-在新的根目录中设置一些文件,做一些魔术,然后将chroot插入新的根目录,然后从chroot的新根目录环境将grub安装到启动磁盘上。

查找一些UUID供以后使用。请注意以下命令的输出:

blkid /dev/sdf1
blkid /dev/sdf2
blkid /dev/nvme0n1p4

挂载根分区和引导分区

sudo mount /dev/mapper/crypt1--vg-root /mnt
sudo mount /dev/sdf2 /mnt/boot
sudo mount /dev/sdf1 /mnt/boot/efi

设置文件 /mnt/etc/fstab

/dev/mapper/crypt1--vg-root /               ext4    errors=remount-ro 0       1
/dev/mapper/crypt1--vg-swap none    swap    sw              0       0
UUID=[uuid of /dev/sdf2] /boot           ext2    defaults        0       2
UUID=[uuid of /dev/sdf1]  /boot/efi       vfat    umask=0077      0       1

其中“ [uuid of ...]”只是一个字母数字连字符的组合。

创建文件 /mnt/etc/cryptab

# <target name> <source device>     <key file>  <options>
crypt1 UUID=[uuid of /dev/nvme0n1p4] none luks,discard,lvm=crypt1--vg-root

进入根目录环境需要一些技巧:

sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
chroot /mnt

现在,使用以下命令设置启动USB磁盘grub

apt install --reinstall grub-efi-amd64
grub-install --efi-directory=/boot/efi --boot-directory=/boot --removable
update-initramfs -k all -c
update-grub

现在,您应该能够使用新创建的USB启动盘重新启动和启动。

故障排除-

(a)必须为apt install --reinstall grub-efi-amd64命令连接网络。如果网络已连接但DNS失败,请尝试

echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null

(b)在调用之前initramfsvmlinuz...原始linux中使用的当前文件必须存在于新的根目录中。如果不是,请找到它并将其放在那里。

(c)grub-install默认情况下,该命令将搜索它可以找到的所有其他Linux磁盘,即使它们没有被mounted,也将它们放在新的引导USB的引导菜单中。通常这是不需要的,因此可以通过将以下行添加到来避免这种情况/boot/default/grub.cfg

GRUB_DISABLE_OS_PROBER=true

注意: 可以将带有加密密钥的文本文件添加到可移动引导USB中。


0

简单的回答:不。

复杂的答案:

加密磁盘或分区将删除该磁盘或分区上当前的所有内容,因此要加密磁盘,还应删除磁盘的内容。您应该在开始之前进行适当的数据备份。显然,这意味着您应该重新安装系统以使用全盘加密,而无需其他方法。这是因为随机数据将被写入整个磁盘,从而使数据恢复更加困难。

但是,如今,您无需加密根分区。请记住,如果出现问题,您将无法使用系统来恢复数据。您应该考虑只加密您的个人信息。

请参阅相关问题安装后如何加密完整磁盘?


“不在系统中,无法恢复数据” <---这是不正确的。只要拥有加密密钥,就可以使用实时介质恢复数据。
混淆使用

@ con-f-use考虑到有条件的“如果有东西连接”,这意味着如果加密的驱动器/分区发生了令人难以置信的不良情况。
Braiam

好吧,是的,如果您挑剔,还应该在加密磁盘上维护LUKS标头的最新备份。但我会将其包含在“加密密钥”中。除此之外,从数据恢复的角度来看,完全加密没有任何危害。但是,您可以知道其中有哪个版本的Ubuntu,安装了哪些程序等等,这一事实为未完全加密的磁盘提供了可能的攻击载体。SSD通常也可以。因此,对于偏执狂,仍然没有办法进行全盘加密。
混淆使用

“但是,如今,您不需要加密根分区。” 请为自己说话,我完全不同意。“对磁盘或分区进行加密将删除该磁盘或分区上当前的所有内容,因此,对磁盘进行加密时,还应删除磁盘的内容。” 同样,不同意。Truecrypt是使用现有磁盘在Windows上进行FDE的一个很好的例子。实际上,这是事实上的安装方法-未加密,一旦完成,就对其进行加密。它不会改变答案,因为在Ubuntu上不可能出现atm,但是您的陈述非常明确且不正确。
Cookie

@Cookie为什么要加密一个分区,该分区中包含以后可以安装的内容?(并且,我在说的是普通用户系统,与可能安装了某些东西的公司/企业服务器无关)2)您所谈论的是truecrypt的功能,仅适用于Windows是最新版本,如果在安装后找不到能对分区进行加密的Linux加密系统,我的说法是正确的,因为目前无法实现。
Braiam 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.