ブートパーティションのキーファイルを使用してLUKSで暗号化されたDebianルートディレクトリのロック解除

ブートパーティションのキーファイルを使用してLUKSで暗号化されたDebianルートディレクトリのロック解除

私はブートパーティション(暗号化パーティション)に格納されているキーファイルを使用してDebianのルートディレクトリの復号化を試みます。これはセキュリティを侵害しますが、今は大丈夫です。私はこれをうまくやらなかったら死ななければなりませんでした。

フックが作成され、initramfsキーファイルはファイル/boot内のディレクトリにありますinitrd.img-*。キーファイルのパス()はこのファイル/boot/keyfileにあります。/etc/crypttab

更新しましたが、次のメッセージが表示されますinitramfssudo update-initramfs -ucryptsetup: WARNING: target sdaX_crypt uses a key file, skipped.

このメッセージを無視して再起動すると、ディスクを起動できなくなります。このメッセージが表示され、シェルGave up waiting for root device.に削除されます。initramfs

initramfs環境には存在しませんcryptsetup(存在すべきでしょうか?)

デバイスが異なる方法でマウントされ、キーファイルの復号化を使用するように設定されていないupdate-initramfs -u「考え方」を参照してください。sdaX_crypt

どうすればいいですか?

答え1

Debianのcryptsetupドキュメントによると、KEYFILE_PATTERNで定義されているシェルスタイル(ワイルドカード)パターンと一致するキーファイルは/etc/cryptsetup-initramfs/conf-hookinitramfsに含まれていますが、他のキーファイルは含まれていません。

  • Debian 9 の場合:/usr/share/doc/cryptsetup/README.{initramfs,Debian}.gz
  • Debian 10 の場合/usr/share/doc/cryptsetup{-initramfs/README.initramfs,-run/README.Debian}.gz:.

以前のバージョンのDebianについてはよくわかりません。

これらのファイルはで読むことができますが、zless filename.gz便宜と将来の参照のために関連する部分は次のとおりです。

12. initrd に直接キーファイルを保存します。

通常、キーファイルを使用するデバイスは無視され(大きなビープ音とともに)、initramfsイメージは通常暗号化されていない/ bootパーティションにあるため、キーファイル自体はinitrdに含まれません。ただし、場合によっては、initrdにキーファイルを含める必要があります。たとえば、最新バージョンのGRUBは暗号化されたブロックデバイスからの起動をサポートし、暗号化された/bootパーティションを許可します。

crypttab(5)によってリストされたキーファイルのうち、環境変数KEYFILE_PATTERN(シェルモードとして解釈されます)の値と一致するファイルは、initramfsイメージに含まれています。たとえば、/etc/crypttab に 2 つのキーファイル /etc/keys/{root,swap}.key がリストされている場合は、/etc/cryptsetup-initramfs/conf-hook に以下を追加して initrd に追加できます。 。

KEYFILE_PATTERN="/etc/keys/*.key"

また、initramfs イメージに秘密鍵データを含める必要がある場合は、権限のないユーザーをブロックするには、制限付き umask を使用してイメージを作成する必要があります。これは、/etc/initramfs-tools/initramfs.conf に以下を追加することで実現できます。

ウマスク=0077

答え2

keyscript代わりに、crypttabのオプションを使用できます(man crypttab)。キースクリプトを反映するスクリプトを生成し、それをキースクリプトパラメータに設定してramfsを再生成します。フックは必要なく、/boot/にスクリプトを置く必要もありません。

vg1-root_crypt UUID=94a3b301-123-12-a3-ea0403 none luks,keyscript=/etc/echo-root-luks-pass

私はcryptsetupのinitramfsフックがなぜcrypttabにキーファイルをリストできないのかわかりません。そのような行動を容認したくないかもしれません。

PS私はそれがセキュリティを破るとは思わない。 / bootパーティションがどれだけ安全かによって、セキュリティはやや弱くなります。たとえば、USBドライブの電源を切り、USBを靴下などに入れることができます。

答え3

実際にメッセージを無視してパーティションをスキップしたくない場合は、エラーメッセージが書き込まれた行(約274行 - 使用されているcryptsetupバージョンによって異なります)の後に続くreturn 1内容をコメントアウト/削除する必要があります(少なくとも)。/usr/share/initramfs-tools/hooks/cryptrootこのファイルはデフォルトでパッケージマネージャによって管理されているため、cryptsetupパッケージの更新時に上書きされます。

また読んでくださいhttps://bugs.debian.org/cgi-bin/bugreport.cgi?bug=776409 この問題に関する追加情報。

私はこれをまだテストしておらず、言及されたキーファイルの場合を考慮していない以外に他の理由があるかもしれません。

答え4

initramfs@ignisの回答に同意しますが、機能するにはファイルに次のオプションが必要であることを追加したいと思います/etc/crypttab

# <target name> <source device>             <key file>          <options>
mapper-name     /etc/disk/by-id/scsi_xxxxx  /etc/keys/luks.key  luks,initramfs

Obs:答えについて言及しているはずですが、まだ評判が足りません。

関連情報