如何预先加密仅根分区?

dei*_*tch 13 encryption partitioning preseed

我有 3 个分区:EFI ( /boot/efi)、boot ( /boot) 和 root ( /)。我要加密 /。我可以通过安装程序手动执行此操作,但我想预置它。

我如何定义它?我的(未加密)配方如下所示。这是我发现的 EFI 系统分区建议的大杂烩(没有找到明确的指南)。

boot-root ::
  100 100 100 fat32
    $primary
    $iflabel{ gpt }
    $reusemethod( }
    use_filesystem{ } filesystem{ vfat }
    method{ efi } format{ }
    mountpoint{ /boot/efi }
  .
  300 300 300 ext4
    use_filesystem{ } filesystem{ ext4 }
    method{ format } format{ }
    mountpoint{ /boot }
  .
  100% 3000 100% ext4
    use_filesystem{ } filesystem{ ext4 }
    method{ format } format{ }
    mountpoint{ / }
  .
Run Code Online (Sandbox Code Playgroud)

我如何sda3成为 LUKS 加密的物理分区,然后在其上有一个文件系统?

更新:

我发现我可以将分区设置为加密,如下所示,但仍然存在 3 个问题:

  1. 我仍然需要在所选分区上创建和激活加密卷
  2. 创建并激活后,我仍然需要在加密卷上设置正确的 ext4 文件系统
  3. 该配方不会选择dm-crypt创建和激活加密卷所需的加密类型。

还在拼命挣扎

boot-root ::
  100 100 100 fat32
    $primary
    $iflabel{ gpt }
    $reusemethod( }
    use_filesystem{ } filesystem{ vfat }
    method{ efi } format{ }
    mountpoint{ /boot/efi }
  .
  300 300 300 ext4
    use_filesystem{ } filesystem{ ext4 }
    method{ format } format{ }
    mountpoint{ /boot }
  .
  100% 3000 100% ext4
    method{ crypto } format{ }
  .
Run Code Online (Sandbox Code Playgroud)

小智 1

首先,打开根终端:

sudo -i
Run Code Online (Sandbox Code Playgroud)

然后使用如下命令用随机数据填充应该加密的分区:

openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" -nosalt < /dev/zero > /dev/sdxy
Run Code Online (Sandbox Code Playgroud)

您必须替换sdxy为将被加密的分区。然后输入

cryptsetup luksFormat --cipher twofish-xts-plain64 --key-size 512 --hash sha512 --iter-time 2000 /dev/sdxy
Run Code Online (Sandbox Code Playgroud)

加密分区sdxy。打开卷并命名root

cryptsetup luksOpen /dev/sdxy root
Run Code Online (Sandbox Code Playgroud)

使用此命令在其中创建 ext4 文件系统:

mkfs.ext4 /dev/mapper/root
Run Code Online (Sandbox Code Playgroud)

接下来您可以启动安装程序。当被问到你想做什么时选择“其他事情”。然后为所有未加密的分区选择安装点。对于您的root分区,选择/dev/mapper/root,单击“更改”。然后选择ext4文件系统类型并将安装点设置为/。然后点击“立即安装”,正常安装Ubuntu。

安装完成后,单击“继续测试”。打开终端并输入:

sudo -i
cd /mnt
mkdir root
mount /dev/mapper/root root
mount /dev/sdyz root/boot
Run Code Online (Sandbox Code Playgroud)

sdyz应该替换为您的boot分区。接下来,输入:

chroot root
mount -t proc proc /proc
mount -t sysfs sys /sys
nano /etc/crypttab
Run Code Online (Sandbox Code Playgroud)

打开第二个终端并输入sudo blkid。找到(最后root显示的那个)的 UUID并将其粘贴到. 那么该文件应该如下所示:crypto_luks/etc/crypttab/etc/crypttab

root UUID=d68911dd-172a-4608-86d4-084eb72f409c none luks
Run Code Online (Sandbox Code Playgroud)

Ctrl使用+x和关闭文件yEnter在终端中输入nano /etc/fstab并检查一切是否正确(例如 UUID)。

最后,退出 chroot 环境并输入:

cryptsetup luksHeaderBackup /dev/sdxy --header-backup-file /root/root.img
Run Code Online (Sandbox Code Playgroud)

这会将加密分区的标头图像放入该文件夹中/root并为其命名root.img。然后将图像移动到外部驱动器(以防忘记密码)。现在您可以重新启动到新安装的 Ubuntu。

来源:http ://thesimplecomputer.info/full-disk-encryption-with-ubuntu