加密的自定义安装


21

我的计算机运行Ubuntu。我想在另一种介质上安装Ubuntu。我希望启用加密,但是由于ubuntu安装程序的默认选项(擦除/其他/等等)仅涉及默认驱动器,因此我必须选择“其他”并手动在另一个驱动器上创建分区,因此我创建了〜如果启动时只有128 mb,那我就迷失了,如果我用剩下的空间制作了一个加密的分区,我将无法分割它,所以我没有交换空间。相反,如果我创建两个加密分区,那似乎不对,因为它想设置两个不同的密码...

那我该如何设置交换?(在安装过程中或安装之后)。


Answers:


29

如何使用 LVM和单个加密分区完成此操作

警告

首先128M太小,无法启动!我用的是1G。否则,什么是必然要发生的是,你可能会忘记删除旧内核/ boot目录将填满,而且你必须处理试图从系统中删除旧内核的痛苦,这样你可以得到aptapt-get工作再次。即使使用1G,也要确保不时删除旧内核。

后续步骤不适用于新手用户。
更新:我创建了一个脚本,它将为您和更多用户执行以下操作!所有您需要做的就是在安装前从Live OS运行它。您可以在我的博客上找到文章


通过实时操作系统进行预安装

您要在手动分区时设置LUKS和LVM!我在Ubuntu 16.04.2上测试过

从Live OS引导Ubuntu,然后选择无需安装即可尝试Ubuntu的选项。请按照我在下面概述的步骤进行操作。假设您要安装到/ dev / sdb。

  1. 使用您选择的工具对驱动器进行分区:我使用fdisk在msdos分区表上进行了设置,如下所示:
    • 其他分区:现有的操作系​​统-我们不在乎这些
    • sdb1:/ boot(1G)
    • sdb2:LUKS分区(磁盘的其余部分)
  2. 设置LUKS
    • sudo cryptsetup luksFormat --hash=sha512 --key-size=512 --cipher=aes-xts-plain64 --verify-passphrase /dev/sdb2
    • sudo cryptsetup luksOpen /dev/sdb2 CryptDisk
    • 虽然不是必需的,但最好用零填充LUKS分区,以便在加密状态下的分区中填充随机数据。sudo dd if=/dev/zero of=/dev/mapper/CryptDisk bs=4M 请注意,这可能需要很长时间!
  3. 在/ dev / mapper / CryptDisk上设置L​​VM
    • sudo pvcreate /dev/mapper/CryptDisk
    • sudo vgcreate vg0 /dev/mapper/CryptDisk
    • sudo lvcreate -n swap -L 2G vg0
    • sudo lvcreate -n root -L 10G vg0
    • sudo lvcreate -n home -l +100%FREE vg0

从实时操作系统安装

  1. 现在您可以安装了。当您进入安装的“安装类型”部分时,选择“其他”选项。然后根据需要进行配置,手动分配/ dev / mapper / vg0- *分区。不要忘记将/ dev / sdb1设置为/ boot。/ boot分区不得加密。如果是这样,我们将无法启动。将“用于引导加载程序安装的设备”更改为/ dev / sdb,然后继续安装。
  2. 安装完成后,请勿重新启动!选择选项“继续测试”。

通过实时操作系统进行安装后配置

如果您要引导系统,那么这一点非常重要!我花了很多时间进行研究,以找出这些安装后的步骤。就我而言,我实际上是在这样做,因为我想在/ dev / sda上自定义/ boot的大小,但是所有这些工作也都应适用于您的情况。

  1. 在终端中,键入以下内容,然后查找/ dev / sdb2的UUID。记下该UUID,以备后用。
    • sudo blkid | grep LUKS
    • 我机器上的重要行显示 /dev/sdb2: UUID="bd3b598d-88fc-476e-92bb-e4363c98f81d" TYPE="crypto_LUKS" PARTUUID="50d86889-02"
  2. 接下来,让新安装的系统再次挂载,以便我们进行更多更改。

    • sudo mount /dev/vg0/root /mnt
    • sudo mount /dev/vg0/home /mnt/home #这可能没有必要
    • sudo mount /dev/sdb1 /mnt/boot
    • sudo mount --bind /dev /mnt/dev #我不确定是否有必要
    • sudo mount --bind /run/lvm /mnt/run/lvm
    • (仅当您使用EFI时): sudo mount /dev/sd*/your/efi/partition /mnt/boot/efi
  3. 现在运行sudo chroot /mnt以访问已安装的系统

  4. 从chroot,安装更多的东西
    • mount -t proc proc /proc
    • mount -t sysfs sys /sys
    • mount -t devpts devpts /dev/pts
  5. 设置crypttab。使用您喜欢的文本编辑器,创建文件/ etc / crypttab并添加以下行,将UUID更改为磁盘的UUID。
    • CryptDisk UUID=bd3b598d-88fc-476e-92bb-e4363c98f81d none luks,discard
  6. 最后,重建一些启动文件。
    • update-initramfs -k all -c
    • update-grub
  7. 重新启动,系统应该要求输入密码才能在启动时解密!

特别感谢Martin EveEGIDIO DOCILE以及blog.botux.fr上的人们发布的教程。通过从他们的职位中抽出碎片并进行一些额外的故障排除,我终于能够弄清楚这一点。

我尝试了多次,但失败了一遍又一遍。我必须根据错误消息为自己解决的问题是sudo mount --bind /run/lvm /mnt/run/lvm


非常感谢,但我始终需要设置luks分区。在fdisk -L输出中找不到它。
伊万

当我尝试设置地穴时,我得到了一个错误:删除标头失败
Yvain

我看到您将其标记为解决方案。你有工作吗?如果没有,您使用什么工具来创建分区?您必须首先使用Gparted或fdisk之类的工具对磁盘进行分区,为/ boot创建一个分区,为加密创建一个分区(EFI将需要第三个非加密分区)。我没有在设置中使用EFI。只有创建了用于加密的分区之后,您才可以实际运行cryptsetup luksFormat命令对其进行加密。创建/ dev / sdb2后,可以使用文件系统或不使用文件系统对其进行格式化。cryptsetup将删除任何现有的文件系统。
b_laoshi

1
@Yvain-我相信这是错误的。Sha1不再被认为是安全的。绝对应该使用更安全的方式(例如建议的sha512选项)。
麦克

1
+1 @b_laoshi非常感谢您的回答,它对我有很大帮助:)
Tummala Dhanvi

3

如何完成此多个加密分区而没有 LVM

由于我以前的答案很长,因此我发布第二个答案,如果您不想使用LVM,则采用另一种方法。

您可以创建多个加密分区,并使用crypto_derived脚本,这样您只需输入一次密码即可。请查看此博客文章,以获取分步说明。作者使用了一个密钥文件,但是使用crypto_derived LUKS脚本也足够了。


我最终拔下了主驱动器的插头,可以对我的SD进行辅助安装:)大声笑
Yvain


0

对于那些只想稍微更改Ubuntu默认分区的人,这就是答案。例如,删除swap分区并增加/boot大小。我认为许多人不愿意遵循b_laoshi的指示,因为需要执行大量步骤。

因此,对于使用加密的简单自定义分区,我建议使用“擦除磁盘并安装Ubuntu”和“加密新安装的Ubuntu以提高安全性”选项。我们将要更改的是此默认分区的配置。

此配置包含在中/lib/partman/recipes[-arch]/。对于我自己,我一直在改变/lib/partman/recipes-amd64-efi/30atomic。为了获得538M的容量efi,1024M的容量/boot以及/ext4 的剩余容量,我将文件编辑为

538 538 538 fat32
    $iflabel{ gpt }
    $reusemethod{ }
    method{ efi }
    format{ } .

1024 1024 1024 ext4
    $defaultignore{ }
    $lvmignore{ }
    method{ format }
    format{ }
    use_filesystem{ }
    filesystem{ ext4 }
    mountpoint{ /boot } .    

900 10000 -1 ext4
    $lvmok{ }
    method{ format }
    format{ }
    use_filesystem{ }
    filesystem{ ext4 }
    mountpoint{ / } .

请注意,一旦选择了要在安装程序中擦除的磁盘,它将提示您分区摘要,因此您可以检查技巧是否奏效,并获得所需的分区。另请参阅/ubuntu//a/678074/47073

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.