全盘加密和使用临时密钥进行加密交换

全盘加密和使用临时密钥进行加密交换

当我在我的设备上安装 Debian Buster(带有标准 4.19 内核)时,我选择了带有全盘加密的引导分区。

因此当前设置是 LUKS 上的 LVM,并且 /boot 未加密:

user@HOST:~$ lsblk -f
NAME               FSTYPE      LABEL UUID                                FSAVAIL FSUSE% MOUNTPOINT
sda
├sda1              ext2              a81YDwjp-q50N-nbZH-JLwr-Djhhe0aDxI6 94,4M      55% /boot
├sda2
└sda5              crypto_LUKS       E5ZYjKug-zrNW-yW4Q-jwFD-MdgSY08zqKo
 └sda5_crypt       LVM2_member       aJTjWXcR-Nxth-LcnV-5tzp-iBzbCU0zy8d
  ├HOST--vg-root   ext4              PHVJaGjc-46vv-u5co-fXxd-NCZJUkzK21Q 129,1G      5% /
  └HOST--vg-swap_1 swap              1XZehc8C-2yKA-Y8Qr-eCc1-EI3ezAgVNBo                [SWAP]

现在最好改进此设置并使用临时密钥加密交换卷。但为什么要这样做?毕竟交换已经加密,因为它驻留在加密硬盘上。顺便说一句,我不使用休眠模式。

我希望尽可能多地利用系统上的附加加密层。例如,我在本地加密一些数据,然后将其备份到远程位置。如果完整的硬盘加密被破解,此加密还可以作为第二道防线……但前提是在这种情况下交换不可读。

从默认的 Debian 配置开始(即无需循环重新安装),有没有办法使用临时密钥加密交换?

答案1

由于您使用的是现代 (4.19) 内核,并且不使用休眠模式,我建议您不要使用交换分区,而是将交换分区移至根分区。如果时间允许,您可以将交换分区使用的空间重新分配给根分区。

多少空间?https://itsfoss.com/swap-size/有一个根据一些指导原则和系统 RAM 大小来计算的表格:

RAM     Swap Size 
 256MB   256MB   
 512MB   512MB   
 1GB     1GB     
 2GB     1GB     
 3GB     2GB     
 4GB     2GB     
 6GB     2GB      
 8GB     3GB     
 12GB    3GB      
 16GB    4GB     
 24GB    5GB     
 32GB    6GB     
 64GB    8GB     
 128GB   11GB    

指导方针?

如果您的系统 RAM 少于 1 GB,则必须使用交换,因为大多数应用程序很快就会耗尽 RAM。

如果您的系统使用资源密集型应用程序(如视频编辑器),那么使用一些交换空间是个好主意,因为您的 RAM 可能已经耗尽。

如果使用休眠模式,则必须添加交换分区,因为 RAM 的内容将写入交换分区。这也意味着交换分区大小至少应为 RAM 的大小。

避免发生诸如程序失控和占用 RAM 等奇怪事件。

https://linuxize.com/post/how-to-add-swap-space-on-debian-9/有 Debian 制作交换文件的分步过程。

答案2

简单记录一下我最后做的事情。如前所述,发行版是 Debian Buster,并且休眠功能已禁用。

  • 可选:禁用交换(sudo swapoff -a)并用零或随机数据覆盖交换卷。这实际上是推荐的,但对我来说没有必要。

  • 创建新的交换文件

    sudo fallocate -l 2G /cryptswap

  • 只有 root 用户才可以读取交换文件

    sudo chmod 600 /cryptswap

  • 将以下行添加到/etc/crypttab

    cryptswap /cryptswap /dev/urandom cipher=aes-cbc-essiv:sha256,size=256,swap,noearly
    

    请注意,并非所有发行版都支持该noearly选项,但 Debian 肯定支持,Ubuntu 似乎也支持它。

  • 禁用交换挂载(在行前面/etc/fstab添加)并粘贴下面的第二行:#

    #/dev/mapper/HOST--vg-swap_1 none swap sw 0 0
    /dev/mapper/cryptswap none swap sw 0 0
    
  • [新增] 禁用从休眠状态恢复。/etc/initramfs-tools/conf.d/resume按如下方式更新并sudo update-initramfs -u -k all随后运行。

    RESUME=none
    
  • 重启

  • 确认一切正常

    请注意,旧的交换卷仍然存在,但不再安装。

    user@HOST:~$ lsblk -f
    NAME               FSTYPE      LABEL UUID                                FSAVAIL FSUSE% MOUNTPOINT
    loop0                                                                                      
    └cryptswap         swap              32efd8e4-a775-41b8-b717-39dfbff439f                [SWAP]
    sda
    ├sda1              ext2              a81YDwjp-q50N-nbZH-JLwr-Djhhe0aDxI6 94,4M      55% /boot
    ├sda2
    └sda5              crypto_LUKS       E5ZYjKug-zrNW-yW4Q-jwFD-MdgSY08zqKo
     └sda5_crypt       LVM2_member       aJTjWXcR-Nxth-LcnV-5tzp-iBzbCU0zy8d
      ├HOST--vg-root   ext4              PHVJaGjc-46vv-u5co-fXxd-NCZJUkzK21Q 129,1G      5% /
      └HOST--vg-swap_1 swap              1XZehc8C-2yKA-Y8Qr-eCc1-EI3ezAgVNBo
    
    user@HOST:~$ sudo cryptsetup status cryptswap
    /dev/mapper/cryptswap is active and is in use.
      type:    PLAIN
      cipher:  aes-cbc-essiv:sha256
      keysize: 256 bits
      key location: dm-crypt
      device:  /dev/loop0
      loop:    /cryptswap
      sector size:  512
      offset:  0 sectors
      size:    4194304 sectors
      mode:    read/write
    
  • 清理

    删除旧的交换卷。随后,您可能需要重新分配可用空间,但我不会在这里介绍这一点。

    sudo lvremove HOST-vg/swap_1

相关内容