使用另一台服务器上的密钥在启动时自动挂载加密 LVM

使用另一台服务器上的密钥在启动时自动挂载加密 LVM

我想通过使用加密分区和存储在网络上另一台服务器上的密钥文件来保护 Linux 服务器上的数据免遭物理盗窃。另一台服务器实际上是我的路由器,它非常小,与服务器位于不同的物理位置,并且可以通过 ssh 访问。

我认为有人从一个位置窃取服务器,闯入第二个位置,找到并窃取路由器,然后将它们设置在同一网络中的可能性非常小。这意味着只要我的服务器连接到我的网络,它就会始终重新启动并启动所有服务,但如果我的重要数据离开建筑物,它就会受到保护。

启动顺序类似于:

  • 挂载非加密逻辑分区(//var/tmp
  • 开始联网
  • 通过 ssh 从另一台服务器获取密钥
  • 解锁加密的物理分区
  • 挂载加密逻辑分区(/home/opt
  • 启动其他已配置为使用加密分区的服务 - 例如 Docker

我不知道如何连接 LVM/加密启动序列以插入脚本来获取密钥,也不知道如何更改启动序列以便在该步骤之前启动网络。

Linux 机器上的 root 用户将在路由器上设置一个 ssh 密钥,这样它就可以在没有密码的情况下进行 ssh,如下所示:

PASSPHRASE=$(ssh router cat /config/disk-passphrase.txt)
cryptsetup luksOpen /dev/sda6 sda6_crypt <<< $PASSPHRASE

这是我到目前为止的磁盘布局,尽管我愿意在必要时更改它:

NAME                         FSTYPE    LABEL UUID                                   MOUNTPOINT
sda
├─sda2
├─sda5                       LVM2_memb       fjRt18-XKFm-z3RN-1D7t-zkuw-sMal-KyOZ6Z
│ ├─garage--main--vg-tmp     ext4            e90a6186-bf09-41f7-b8bc-392e0fba2207   /tmp
│ ├─garage--main--vg-var     ext4            ee878d29-3b44-463f-adba-083155ea29da   /var
│ └─garage--main--vg-root    ext4            f4fa0962-3c2c-456c-9ee0-84c47d6c12c9   /
├─sda1                       ext4            60d06dea-a07b-4af3-bf30-70fa3f82267d   /boot
└─sda6                       crypto_LU       31b7b643-188c-4ae9-bac6-75316b37d562
  └─sda6_crypt               LVM2_memb       ynUOJB-iRsP-djql-Tzrl-nfHh-Smga-ji4OcT
    ├─garage--enc--vg-opt    ext4            2f149989-f64c-4cab-8a47-fea80ebf4c8e   /opt
    ├─garage--enc--vg-swap_0 swap            bab96476-7209-42c7-9f2a-113dd5c4da67   [SWAP]
    └─garage--enc--vg-home   ext4            c73b9432-ec32-412c-baa4-1329adef9c56   /home

相关内容