如何使用磁盘加密和 SSD 缓存安装 Ubuntu

Adr*_*ian 10 encryption ssd dm-cache bcache lvmcache

我在企业环境中使用 Ubuntu,我们的安全政策规定我们必须使用全盘加密。

我还有一台配备 32GB mSATA SSD 和 750GB 旋转铁锈的笔记本电脑。我当前的安装使用 bcache 来利用它,使用此过程安装。这提供了非常受欢迎的性能提升,而我不必担心填满 SSD。

这将是一个悬而未决的问题。赏金将颁发给:

  • 执行全新安装 Ubuntu 的清晰、可靠的方法
    • 任何版本都可以接受,但 15.04 (Vivid) 就可以了
  • 整个文件系统将被加密
    • 这里的首选是使用默认 Ubiquity 安装程序中的相关复选框(dm-crypt 加密)
  • 文件系统将缓存在 SSD 上
    • 作为首选,内核 dm-cache / lvmcache 方法请参阅此处以了解使用 Debian Jessie 执行此操作的方法
    • 缓存也必须是安全的(即加密)
    • 为什么缓存也被加密,必须有明确的解释

已经尝试过上述 Debian Jessie 的方法,但它拒绝为我启动。到目前为止还没有尝试过这里评论中描述的方法。

发布的解决方案将在具有两个空白虚拟磁盘和 15.04 桌面版(amd64 版)的发行版副本的 VirtualBox VM 上进行测试。赏金是我用来重新安装实际硬件的第一个解决方案。

请写下您的解决方案,就像它进入社区维基一样。


我已经获得了奖励 - 我认为“LUKS-on-LVM”解决方案仍然有潜力,它结合了仅具有一个密码的已批准答案的简易性,并且仅使用设备映射器组件。

sol*_*iCe 7

bcache 上 LUKS 上的 LVM

这里的俄罗斯娃娃游戏更深一些,有 3 个堆栈/层......

我对这个问题的最初想法是在 LUKS 上使用带有LVM的默认 Ubuntu 安装,并将其转换为带有bcache支持设备,但它在我使用 LVM 的测试中对我不起作用。

此外,ubuntu 安装程序 ( ubiquity ) 太有限,无法安装在预先准备好的bcache设备中(至少在 LVM 上有 LUKS),所以我们回退到手动操作的方法。

启动到 live CD/USB 并选择“Try Ubuntu”并打开一个终端

预安装

sudo -i
# Define some variable to avoid confusion and error
luks_part=/dev/sda3
boot=/dev/sda2                    # boot partition
caching_bcache=/dev/sdb           # SSD or partition in SSD

# Do secure erase of encrypted backing and caching device (see Notes [1])
dd if=/dev/urandom of=$luks_part || dd if=/dev/urandom of=$caching_bcache
# Go and grab some coffe, this will take a while...

apt-get install bcache-tools
# Setup bcache caching and backing devices
make-bcache -C $caching_bcache -B $luks_part
# (Optional) Tweak bcache
echo writeback > /sys/block/bcache0/bcache/cache_mode

# Below we now create manually what ubiquity should have done for us
# Setup LUKS device on bcache device
cryptsetup --key-size 512 luksFormat /dev/bcache0
cryptsetup luksOpen /dev/bcache0 crypted

# Setup LVM on LUKS
# You can skip that part if you don't want to use a swap
# or don't want to use multiple partition. Use /dev/mapper/crypted
# as you root latter on
pvcreate  /dev/mapper/crypted
vgcreate vg /dev/mapper/crypted
lvcreate -L 1G vg -n swap
lvcreate -l 100%FREE vg -n root
Run Code Online (Sandbox Code Playgroud)

安装

保持终端打开,现在运行安装。分区时选择“其他”并指定

  • 您的启动分区 ( /dev/sda2)
  • 您的根分区 ( /dev/mapper/vg-root)
  • 你的交换 ( /dev/mapper/vg-swap)

并选中复选框以格式化您的分区

在安装结束时,不要重新启动,只需单击“继续尝试 ubuntu”

安装后

在我们打开的终端中

# Install bcache-tools to add bcache module to initramfs
mount /dev/mapper/vg-root /mnt
mount $boot /mnt/boot
mount -o bind /sys /mnt/sys
mount -o bind /proc /mnt/proc
mount -o bind /dev /mnt/dev
chroot /mnt
# To get apt-get running in the chroot
echo 'nameserver 8.8.8.8' > /run/resolvconf/resolv.conf
apt-get install bcache-tools

# Create /etc/crypttab to add crypted bcached partition
echo "crypted UUID=`blkid -o value /dev/bcache0|head -1` none luks" > /etc/crypttab

exit
sync
umount /mnt/sys
umount /mnt/proc
umount /mnt/dev
umount /mnt/boot
umount /mnt
vgchange -an /dev/mapper/crypted
cryptsetup luksClose crypted
sync

# Reboot & enjoy
Run Code Online (Sandbox Code Playgroud)

Live CD/USB 存在一个已知的 Ubuntu 15.04 重启错误,因此您可能必须强制重启/关闭

查看

启动后,您可以检查它/dev/bcache0实际上是一个LUKS分区

if sudo cryptsetup isLuks /dev/bcache0; then \
    echo "crypted";\
    else echo "unencrypted";\
fi
Run Code Online (Sandbox Code Playgroud)

这是因为它是你的 LUKS 分区的缓存,你现在通过设备访问你的数据,/dev/bcache0而不是从原始的后备设备(/dev/sda3这里)

参考

http://bcache.evilpiepirat.org/

https://wiki.archlinux.org/index.php/Bcache

https://wiki.archlinux.org/index.php/Dm-crypt

bcache-status尚未正式合并到 bcache-tools 中。你可以在这里拥有它:https : //gist.github.com/djwong/6343451

[1] 可能有更好的方法来进行这种擦拭