web-dev-qa-db-ja.com

LUKSがパスワードとキーファイルの両方を要求することは可能ですか?

私の目標は、緊急時にキーファイルを使用してメディアを簡単に破棄し、システムを起動できないようにすることです。潜在的なアドバイザーがシステムの正しいパスワードを知っている場合でも同様です。このキーファイルを安全な場所に保存し、重大な状況が発生した後に復元します。コマンド# cryptsetup luksAddKey /dev/<device>を使用してキーファイルを追加しようとしましたが、目的を達成できませんでした。 cryptsetupには、キーファイルとパスワードの両方が必要です。システムが提供されている場合は起動しません。 cryptsetupでこれをどのように達成できますか?

2
user227030

detachedLUKSヘッダーを作成できます:separateであるLUKSヘッダーメタデータ)このデータの直前ではなく、LUKSで保護されたデータから。 USBキーなどの外部デバイスに置くだけで、設定が完了します。外部デバイスが破壊された場合(バックアップが利用できない場合)、キースロットのパスワードを知っていてもデータを回復する方法はありません。

から LUKS EXTENSION

デタッチされたヘッダーを指定するには、--headerパラメーターをすべてのLUKSコマンドで使用でき、常に位置パラメーターよりも優先されます。

明らかな致命的なミスを回避するために(おそらくデータ部分でも同じ)、直接ではなく、検出されたメタデータ(以下を参照)を使用してこのデバイスを常に参照する必要があります(例:/dev/sdb)。したがって、たとえば、挿入してlsで表示したときに、このように識別されたUSBキーがあると仮定します。

lrwxrwxrwx. 1 root root  9 Feb 17 10:46 /dev/disk/by-id/usb-SomeBrand_SOMESERIAL -> ../../sdb

次のように、デタッチされたヘッダーを使用してLUKSパーティションを作成します。

cryptsetup luksFormat /dev/datadevice --header /dev/disk/by-id/usb-SomeBrand_SOMESERIAL --verify-passphrase

メタデータ(パスワードで保護されたマスターキーを含む)をUSBデバイスに保存します。もちろん、代わりにUSBキーでファイルシステムをパーティション分割してフォーマットし、ヘッダーをこのファイルシステム上のファイルにすることもできます。この例では、依存関係を最小限に抑えようとしています。おそらくどのインストーラーでもサポートされていないため、インストール時に何らかの方法で手動でこれを行う必要があります。

現在、少なくとも1つの違いがあります。この場合、デフォルトではデータの前にスペースがないため、/dev/datadeviceはLUKSとしても検出できません。これは、良い(ステルス)または悪い(自動スクリプト)可能性があります。ロックを解除するのに苦労します)。パラメータを設定して通常のヘッドルーム(--align-payload 4096(通常は通常のLUKSでcryptsetup luksDump /dev/... | grep ^Payloadを使用することで目撃されます))を取得してから、最初に偽の(後で使用されない)LUKSヘッダーを作成することができます。本当に必要な場合は検出の。

次に、対応する情報を/etc/crypttabに入力できます。

myluksprotecteddata /dev/somedevice none luks,header=/dev/disk/by-id/usb-SomeBrand_SOMESERIAL

および/またはcryptsetupコマンド(--header=/dev/disk/by-id/usb-SomeBrand_SOMESERIALを追加するだけ)オプションを使用して直接ロックを解除します。

警告:特に起動に関して、systemdとの互換性は保証されていません。

2
A.B