私の目標は、潜在的なコンサルタントがシステムの正しいパスワードを知っていても、緊急時にキーファイルを含むメディアを簡単に破壊し、システムを起動できないようにすることです。この鍵ファイルを安全な場所に保管し、緊急事態が発生した後に復元します。コマンドを使用してキーファイルを追加しようとしましたが、# cryptsetup luksAddKey /dev/<device>
目的の結果が得られませんでした。 cryptsetupはキーファイルとパスワードを要求し、提供されている場合はシステムを起動しないようにします。 cryptsetupでこれをどのように達成できますか?
ベストアンサー1
あなたは作ることができます優れたLUKSヘッダー:LUKSヘッダーメタデータ、つまり分離このデータの前ではなく、LUKS で保護されたデータから。 USBキーなどの外部機器に接続するだけです。外部デバイスが破損している場合(利用可能なバックアップがない場合)、キーウェイパスワードを知っていてもデータを回復する方法はありません。
~からラックスエクステンション:
分離されたヘッダーを指定するために、このパラメーター
--header
はすべてのLUKSコマンドで使用でき、常に位置パラメーターよりも優先されます。
明らかな致命的なエラーを回避するには、このデバイス(たとえば:)を直接参照するのではなく、常にいくつかの検出されたメタデータ(以下を参照)を使用する必要があります(/dev/sdb
データ部分は同じかもしれません)。たとえば、接続時に次のように識別され表示されるUSBキーがあるとしますls
。
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
う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との互換性、特に起動は保証されません。