web-dev-qa-db-ja.com

暗号化されたUSBドライブにキーファイルを保存するLUKS

Linux:LUKSと複数のハードドライブ で複数のHDDのLUKSロック解除について一度質問しました。

ここで、関連するパーティションの自動ロック解除に使用されるキーファイルを安全に保存する方法を知りたいと思います。

私の計画は(可能であれば):

  • パスフレーズが必要なLUKSで小さなUSBドライブを暗号化する

  • パスフレーズを使用して、起動時に最初のドライブとしてロックを解除します

  • / testなどの特定のマウントポイントにマウントします(これは可能ですか?)

  • これで、キーファイルを安全に読み取ることができます:/ test/keyfile

  • キーファイルを使用して、パスワードを要求せずに他のドライブのロックを解除します

  • Luks他のドライブのロックが解除されたらすぐにある程度の安全性を確保するために、USBドライブを閉じます

  • /、/ usr、/ varおよびその他のマウントポイントを通常どおり自動マウントします

これは機能しますか?基本的に、私はLUKSキーファイルをパスワードで暗号化されたLUKS USBドライブに保存します。このドライブは、パスフレーズを1回だけ要求しますが、他のすべてのドライブは、それ以上のアクションなしでロックを解除できます。 USBドライブを最初にロック解除してからマウントし、その後に他のドライブがキーファイルにアクセスしようとする方法があるかどうかはわかりません。さらに、自動化に関しては、他のドライブをマウントする前に/ etc/fstabと/ etc/crypttabにアクセスできる必要があると思いますが、/ファイルシステム全体がLUKS暗号化されている場合はこれは不可能です。

LUKSの動作を完全に手動で構成する可能性がない限り

  • LuksOpen/dev/sdc1 usb_keyfile

  • / dev/mapper/usb_keyfile/keyfileをマウントします(これは可能ですか?)

  • LuksOpen --keyfile/keyfile/key/dev/sda1 disk1

  • LuksOpen --keyfile/keyfile/key/dev/sdb1 disk2

  • LuksClose/dev/sdc1

基本的に、必要なモジュールがロードされた直後にシェルスクリプトを実行し、自動LUKSパスワードプロンプトを無効にすることができます。

追加の詳細

  • 使用したディストリビューション:Gentoo GNU/Linux(AMD64)またはDebian GNU/Linux(AMD64)この手順を複数のインストールに適用したいので、
6
user51166

あなたのアプローチは良さそうです。ただし、いくつかの注意事項:

  • Rootfsを暗号化する場合は、initrdを使用する必要があります(暗号化されたパーティションを処理する最小限の暗号化されていないシステムを使用するため)。

    USBデバイスが取り外し可能な場合は、initrdとカーネルの両方をUSBに保存して、改ざん耐性を高めることができます(USBが不正な手に渡らないようにする必要があります)。これが通常、rootfsを暗号化する理由です。カーネルとinitrdの両方がリムーバブルメディア上にあると、メディアを削除するだけで、実行中のシステムからカーネル(またはinitrd)を誰も変更しないようにすることができます。

    もちろん、これをサーバー内に配置したい場合はオプションではありませんが、そのようなデバイスを使用し、ハードドライブの1つに小さなパーティションを使用しないことが理にかなっているのかどうかが問題になります。たとえば、マシン内のすべてのドライブがRAID内にある場合、USBにもrootfsを配置することをお勧めします。ちなみに、内部接続されたUSBフラッシュデバイスの興味深い代替手段は、アダプタを介してATAインターフェイスに接続されたコンパクトフラッシュカードです。

    暗号化されたルート用に準備されたソリューションを提供するディストリビューションもあれば、提供しないディストリビューションもありますが、ほとんどの場合、「実際の」ルートをマウントする前に、initrdスクリプトに数行を入力する必要があります(たとえば、pivot_rootのマニュアルページを参照してください)。プロセスに精通していない場合は、通常、セクション2(syscall)および8(bonary)にあります)。

  • uSBドライブが故障した場合に備えて、キーとパスフレーズをバックアップすることを忘れないでください。 LUKSは、ヘッダーの損傷に関してはどちらかと言えば一方的なアプローチに従います。ヘッダーの1つのセクター(より正確にはキースロット)がなくなると、マウントできなくなります。これは、ヘッダーの消去がデバイス自体によって実行されるブロックの再割り当てによって効果的に妨げられないようにするためです(フラッシュメモリベースのデバイスが多くのことを行うため)-キーはキースロット全体に分散されており、すべてが必要ですそれを再構築するためのデータ-冗長性はありません。詳細については、 Clemens FruwirthのWebサイト を参照してください。

    そうは言っても、USB上の単純な暗号化デバイスで十分かもしれません(PLAIN MODEのセクションman cryptsetupを確認してください)。または、たとえばで暗号化されたファイルopenssl enc。前者は、暗号化されたパーティション自体に対しても実際にはオプションである可能性があります。

7
peterph