Ubuntu全加密加密/启动加密

我正在尝试使用单独的/boot分区设置完整的加密磁盘,我遇到了一些麻烦。

我将在Ubuntu 15.04 Live DVD会话上写下我一直关注的程序。

  • 用“随机数据”填充磁盘

     sudo dd if=/dev/urandom of=/dev/sda1 bs=4096 #ok 
  • 创建分区(使用gparted)

    1. 创建分区表 – gpt 2。
      • / dev / sda1 ext2 1.5GB #boot
      • / dev / sda2 linux-swap 4GB #swap
      • / dev / sda3 ext4 15 GB #root
      • / dev / sda4 ext4 FREESPACE #home
  • 加密卷

     cryptsetup luksFormat --cipher twofish-xts-plain64 --key-size 512 --hash sha512 --iter-time 3000 /dev/sda1 cryptsetup luksFormat --cipher twofish-xts-plain64 --key-size 512 --hash sha512 --iter-time 3000 /dev/sda2 cryptsetup luksFormat --cipher twofish-xts-plain64 --key-size 512 --hash sha512 --iter-time 3000 /dev/sda3 cryptsetup luksFormat --cipher twofish-xts-plain64 --key-size 512 --hash sha512 --iter-time 5000 /dev/sda4 
  • 打开cryptovolume

     cryptsetup luksOpen /dev/sda1 boot cryptsetup luksOpen /dev/sda2 swap cryptsetup luksOpen /dev/sda3 root cryptsetup luksOpen /dev/sda4 home 
  • 格式

     mkfs.ext2 /dev/mapper/boot mkswap /dev/mapper/swap mkfs.ext4 /dev/mapper/root mkfs.ext2 /dev/mapper/home 
  • 安装(使用Ubiquity)

    • / dev / sda上的启动加载程序
    • / dev / sda1 – 用作ext2 – 挂载点/启动
    • / dev / sda2 – 用作ext2 – 挂载点/启动
    • / dev / sda3 – 用作ext2 – 挂载点/启动
    • / dev / sda4 – 用作ext2 – 挂载点/启动

    最后,安装程序警告grub-install失败(因为启动卷已加密),因此请选择“continue without bootloader”。

  • 清理启动卷

     mkfs.ext2 /dev/mapper/boot 
  • 装载量

     mkdir /mnt/root mount /dev/mapper/root /mnt/root mount /dev/mapper/boot /mnt/root/boot 
  • 更新fstab和crypttab

     sudo blkid [/dev/sr0: UUID="2015-10-21-16-17-40-00" LABEL="Ubuntu 15.10 amd64" TYPE="iso9660" PTUUID="429817b4" PTTYPE="dos" /dev/sda1: UUID="...#1" TYPE="crypto_LUKS" PARTUUID="..." /dev/sda2: UUID="...#2" TYPE="crypto_LUKS" PARTUUID="..." /dev/sda3: UUID="...#3" TYPE="crypto_LUKS" PARTUUID="..." /dev/sda4: UUID="...#4" TYPE="crypto_LUKS" PARTUUID="..." /dev/mapper/boot: UUID="..." TYPE="ext2" /dev/mapper/swap: UUID="..." TYPE="swap" /dev/mapper/root: UUID="..." TYPE="ext4" /dev/mapper/home: UUID="..." TYPE="ext4"] 
  • fstab文件

     #      UUID=#1 /boot ext2 defaults 0 2 UUID=#2 none swap sw 0 0 UUID=#3 / ext4 errors=remount-ro 0 1 UUID=#4 /home ext4 defaults 0 2 
  • crypttab里

     boot UUID=#1 luks,cipher=twofish-xts-plain64,size=512, hash=whirlpool, time=3000 swap UUID=#2 luks,swap,cipher=twofish-xts-plain64,size=512, hash=whirlpool,time=3000 root UUID=#3 luks,cipher=twofish-xts-plain64,size=512, hash=whirlpool,time=3000 home UUID=#4 luks,cipher=twofish-xts-plain64,size=512, hash=whirlpool,time=5000 
  • 更新initramfs映像

     cd /mnt sudo chroot root mount -t proc proc /proc mount -t sysfs sys /sys mount -t devpts devpts /dev/pts update-initramfs -u #ok 
  • 配置bootloader( /etc/default/grub

     GRUB_ENABLE_CRYPTODISK=y GRUB_PRELOAD_MODULES="luks cryptodisk" GRUB_CMDLINE_LINUX="cryptdevice=UUID#3:root root=/dev/mapper/root resume=/dev/mapper/swap crypto=whirlpool:twofish-xts-plain64:512:0:" 
  • 创建配置文件

     $ grub-mkconfig -o /boot/grub/grub.cfg [/usr/sbin/grub-probe: error: failed to get canonical path of `/dev/mapper/root'.] 
  • 在外面试试

     $ exit $ grub-mkconfig -o /boot/grub/grub.cfg [/usr/sbin/grub-probe: error: failed to get canonical path of `/cow'.] 

在此之前我犯了什么错误吗? 如何才能继续正确配置和安装grub?

你犯了一些错误,但主要的问题是无处不在和grub。 基本上,当您设置/成为加密分区而不为/boot创建单独的分区时,grub会给出如下错误消息:

我知道/boot是加密的。 您需要在/etc/default/grub设置GRUB_ENABLE_CRYPTODISK=y 。 我不会为你做,所以我会失败,你的安装将停止。

过程概述:

  • 我们使用EFI模式。
  • 我们使用标准安装程序安装到未加密的/boot分区和加密的btrfs /
  • 安装程序完成后,我们chroot ,进行一些重要的配置更改,并将grub重新安装到EFI System Partition并重新创建initrd。

详细步骤:

  • 从Ubuntu 16.04安装盘启动(使用Xubuntu测试)。
  • 连接到Internet并运行sudo apt update && sudo apt upgrade以更新安装程序组件
  • 使用fdisk,gparted或其他工具创建3个分区:
    • GPT分区表
    • 我们将用于EFI系统分区的200MB分区
    • 我们最终将用作加密交换分区的多GB分区,但它将用作我们的临时未加密/boot
    • 使用剩余空间的加密分区
  • 准备加密分区

     sudo cryptsetup luksFormat /dev/sda3 sudo cryptsetup luksOpen --allow-discards /dev/sda3 sda3_crypt sudo mkfs.btrfs /dev/mapper/sda3_crypt 
  • 安装Ubuntu

    • 当被问及安装类型时,请选择“其他”。
    • /dev/sda1配置为EFI System Partition
    • /dev/sda2配置为ext2,格式化,挂载点为/boot
    • /dev/mapper/sda3_crypt配置为btrfs,挂载点为/
    • 继续安装。
    • 完成后,选择保持在实时系统中(不重启)。
  • 复制/boot的内容并执行chroot

     sudo mount -o subvol=@ /dev/mapper/sda3_crypt /target sudo mount /dev/sda2 /mnt # (Watch those trailing slashes! rsync is very sensitive to them.) sudo rsync -aXAH /mnt/ /target/boot/ sudo mount /dev/sda1 /target/boot/efi sudo mount --bind /dev /target/dev sudo mount --bind /proc /target/proc sudo mount --bind /sys /target/sys sudo chroot /target 
  • (现在一切都在你的新系统中以chroot发生。)

  • 将行添加到/etc/default/grub

     GRUB_ENABLE_CRYPTODISK=y 
  • /etc/crypttab添加行。 您需要先运行sudo blkid才能找到/dev/sda3的UUID(NOT /dev/mapper/sda3_crypt )。

     sda3_crypt UUID= none luks,discard 
  • 编辑/etc/fstab并删除/boot的行。 其他条目是正确的。

  • 将grub安装到EFI System Partition,生成一个新的grub.cfg,然后准备initrd。

     sudo grub-install --target=x86_64-efi --efi-directory /boot/efi --bootloader=ubuntu --boot-directory=/boot/efi/EFI/ubuntu --recheck sudo grub-mkconfig -o /boot/efi/EFI/ubuntu/grub/grub.cfg sudo update-initramfs -c -k all 
  • (可选仔细检查)仔细检查/boot/efi/EFI/ubuntu/grub/grub.cfg是否包含包含insmod luks cryptomount -u cryptomount -u ,正确引导条目等的行。并仔细检查你的initrd包含cryptsetup二进制文件。 如果缺少这些东西,那是因为grub-mkconfig和/或update-initrd无法弄清楚你在fstab中挂载或指定的卷如何与crypttab中的加密卷相关。 (他们有很多神奇的自动配置。)如果您偏离本指南,例如使用ZFS或尝试对sda3_crypt进行分区,则可能会发生这种情况。

  • (如果使用ZFS而不是btrfs) grub-mkconfig和update-initrd将无法识别ZFS。 解决方法涉及(在chroot期间,在grub-mkconfig / update-initrd之前)编辑/usr/sbin/grub-mkconfig以添加|| true 返回第139行(以GRUB_DEVICE=开头),将GRUB_DEVICE="/dev/mapper/sda3_crypt"/etc/default/grub ,创建文件/usr/share/initramfs-tools/conf-hooks.d/forcecryptsetup with内容export CRYPTSETUP=y和文件/etc/initramfs-tools/conf.d/cryptroot ,内容为target=sda3_crypt,source=UUID=,key=none,discard 。 所有这些都是您在不加密ZFS部分时所采取的步骤(例如在实时系统和chroot中安装zfs用户空间工具并删除安装/在fstab中的行)。

  • 退出chroot并重新启动进入新系统

     exit sudo umount /target/boot/efi sudo umount /target/dev sudo umount /target/proc sudo umount /target/sys sudo umount /target sudo reboot 
  • 您应该看到grub询问您的密码。 然后你会得到启动菜单。 然后选择Ubuntu后,系统会再次要求您输入密码。 然后你就会进入你的系统。 阅读有关Ubuntu如何使用BTRFS的更多信息。

  • TODO :创建加密交换(提示:它涉及编辑crypttab,fstab和重新运行update-initrd)。

  • TODO :保存您的密码,这样您只需将其输入grub即可。 详细信息请参阅: http : //webcache.googleusercontent.com/search?q = cache = z2MwHuPWTakJ : missinglink.xyz / security / tutorial -deububdubu -full-disk-encryption-luks-fde-including-encrypted- boot/ improved -全磁盘加密加-陆氏琴键文件initrdinitramfs / + CD = 1&HL = EN&CT = clnk&GL =我们

升级

  • 每次安装新内核时,都应该运行自定义grub-mkconfig命令。
  • 每次更新grub时,都应该运行custom grub-install命令。

其他说明

  • 创建单个加密卷并对其进行分区以创建交换分区(可能还有其他分区)很诱人,但这不起作用。 grub-mkconfig和update-initrd都会出错。 但是,我还没有尝试过LVM。
  • 在btrfs之上使用交换文件可能很诱人,但由于性能原因,这可能是一个坏主意。