背景
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. クリプトタブのアップデート
crypttab
initramfsに配置するキーファイルのパスを指定するように更新します。
luks-blah UUID=blah /boot/keys/keyfile discard,keyfile-timeout=10s
2. dracutの設定
/etc/dracut.conf.d
initramfsにコピーするキーファイルを構成するファイルをこのファイルの下に作成します(参考文献を参照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