背景

背景

背景

CentOS 8 Streamで自動LUKSロック解除を設定しようとしています。暗号化されていないブートパーティションにキーファイルを配置し、それを使用してLUKSで保護されているLVM PV(ルートファイルシステムを含む)のロックを解除します。 私はこれが奇妙なことであり、ディスク暗号化の価値をかなり破壊することであることを知っています。しかし、ユーモアをお願いします。

現在のレイアウトの概要は次のとおりです。

$ lsblk
NAME                                          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
nvme0n1                                       259:0    0 931.5G  0 disk  
├─nvme0n1p1                                   259:1    0   256M  0 part  /boot/efi
├─nvme0n1p2                                   259:2    0     1G  0 part  /boot
└─nvme0n1p3                                   259:3    0 930.3G  0 part  
  └─luks-3d33d226-9640-4343-ba5a-b9812dda1465 253:0    0 930.3G  0 crypt 
    └─cs-root                                 253:1    0    20G  0 lvm   /
$ sudo e2label /dev/nvme0n1p2
boot

現在、これには/etc/crypttab手動で入力したパスワード(読みやすくするために編集されたUUID)から起動するための次の内容が含まれています。これはうまく機能します。

luks-blah UUID=blah none discard

自動ロック解除を達成するためにキーファイルを生成し/boot/keys/keyfileますluksAddKey

1回試してください

最初の試みで、crypttab行を次のように変更しました。

luks-blah UUID=blah /keys/keyfile:LABEL=boot discard,keyfile-timeout=10s

これにより、ルートファイルシステムが自動的にロック解除されマウントされますが、起動プロセスが失敗し、システムをマウントできないため、回復モードになります/boot。その理由は、ブートパーティションがすでに(キーファイルを取得するために任意の場所に)マウントされているためです/run/systemd/cryptsetup/keydev-luks-blah

2回試してください

crypttabを次のように変更してみました。

luks-blah UUID=blah /boot/keys/keyfile discard,keyfile-timeout=10s

/boot/keys/keyfile私はおそらく、ブートスクリプトがまだインストールさ/bootれていない場合でもアクセスする方法を理解するのに十分スマートであると思いました。しかし、これはうまくいきません。パスワードを手動で入力するように求められます。

質問

通常のインストールに使用する必要があるパーティションに格納されているキーファイルを使用してルートファイルシステムをロック解除する方法はありますか?

ベストアンサー1

以下は、Nikitaの提案に基づくソリューションです。キーファイルをinitramfsに配置し、CentOS 8で動作するように調整してみてください。

この方法では、元のキーファイルを暗号化されていないファイルシステムに配置する必要はありません。 initramfsの作成中に暗号化されていない(ただし圧縮された)initramfsにコピーされます。これは少し混乱を加えることができます。

1. クリプトタブのアップデート

crypttabinitramfsに配置するキーファイルのパスを指定するように更新します。

luks-blah UUID=blah /boot/keys/keyfile discard,keyfile-timeout=10s

2. dracutの設定

/etc/dracut.conf.dinitramfsにコピーするキーファイルを構成するファイルをこのファイルの下に作成します(参考文献を参照man 5 dracut.conf)。キーファイルは initramfs の同じ場所にあります。

$ cat /etc/dracut.conf.d/copy-keyfile.conf 
install_items+=/boot/keys/keyfile

ここで initramfs を更新します。dracut -f

3. 確認

任意に選択できる:lsinitrd次に、initramfsにファイルがあることを確認してください。これは私に次のことを示しています:

-r-------- 1 root root 32 Aug 9 20:09 boot/keys/keyfile

おすすめ記事