パスワードを知らなくてもLUKSファイルシステムのパスワードを変更する


30

暗号化されたドライブでしばらく動作しているDebian Wheezyサーバーがあります。/dev/sda5暗号化されたパスワードファイルが破損すると、暗号化されたドライブ()のパスワードが失われました。

このサーバーを再起動できるようにしたいのですが、もちろんそのパスワードが必要になります。ドライブは明らかに復号化された状態にあるため、古いパスワードを知らなくてもパスワードを変更する方法はありますか?

cryptsetup luksChangeKey /dev/sda5 ボリュームのパスワードが必要です。

もちろんrsyncすべてをオフにして再構築することもできますが、それは避けたいと思います。メモリー(#cat /dev/mem | less)を調べましたが、見つかりませんでした(これは非常に良いことです!)。


2
うーん...パスワードなしでファイルシステムに簡単にアクセスできた場合、暗号化されたファイルシステムを持つことのポイントは何でしょうか。
mdpc 14年

7
@mdpc:あなたの小技は意味がありません。サーバーが最後に起動したときにパスワードを知っていたため、彼ファイルシステムにアクセスできます。
G-Manは「Reinstate Monica」と言います

2
パスワードを(そしてそれが壊れた)持っていたからといって、私のコメントが無効になるわけではありません。一般に、あらゆる種類の暗号化された素材のパスワードを忘れた場合、それは永久に失われるはずです。
mdpc 14年

3
@mdpc現在時制、彼はファイルシステムに現在アクセスしています。
パトリック

回答:


40

はい、ボリュームの復号化中にマスターキーにアクセスすることでこれを行うことができます。

新しいパスフレーズをすばやく追加する:

device=/dev/sda5
volume_name=foo
cryptsetup luksAddKey $device --master-key-file <(dmsetup table --showkeys $volume_name | awk '{ print $5 }' | xxd -r -p)

deviceそしてvolume_name適切に設定する必要があります。
volume_nameは、復号化されたボリュームの名前で、に表示され/dev/mapperます。


説明:

LUKSボリュームは、データをマスターキーで暗号化します。追加する各パスフレーズには、そのパスフレーズで暗号化されたこのマスターキーのコピーが保存されるだけです。そのため、マスターキーがある場合は、新しいキースロットで使用するだけです。

上記のコマンドを分解してみましょう。

$ dmsetup table --showkeys $volume_name

これにより、アクティブに復号化されたボリュームに関する一連の情報がダンプされます。出力は次のようになります。

0 200704 crypt aes-xts-plain64 53bb7da1f26e2a032cc9e70d6162980440bd69bb31cb64d2a4012362eeaad0ac 0 7:2 4096

フィールド#5はマスターキーです。

 

$ dmsetup table --showkeys $volume_name | awk '{ print $5 }' | xxd -r -p

バイナリデータであるため、この出力を表示しませんが、これは、ボリュームのマスターキーを取得し、後で必要な生のバイナリデータに変換します。

 

$ cryptsetup luksAddKey $device --master-key-file <(...)

これは、cryptsetupにボリュームに新しいキーを追加するよう指示しています。通常、このアクションには既存のキーが必要ですが、--master-key-file代わりにマスターキーを使用するよう指示するために使用します。
これ<(...)は、シェルコマンドの置換とリダイレクトです。基本的には内部のすべてを実行し、出力をパイプに送信してから、<(...)そのパイプへのパスに置き換えます。

 

そのため、コマンド全体は、複数の操作を凝縮するための単なる1つのライナーです。


私が何か間違ったことをしているかどうかはわかりませんが、例で示しているような文字列が私のLUKSにまったく表示されません。短い9桁の短い数字です。また、私のものは「リニア8:3」と表示されます。
slm

@slmが表示されている場合linear、それは開いているLUKSボリュームではありません(指定volume_nameされたコマンドの値が間違っています)。crypt3番目のフィールドには、開いているLUKSボリュームがあります。でcryptsetup luksOpen /dev/foo barvolume_name値は次のようになりますbar
パトリック

今手に入れた。/dev/mapperという名前のボリュームがありluks-.....ます。それは、LVMのマップされた論理ボリュームではなく、使用する必要があるボリュームです。
slm

1
dmsetupの最近のバージョンでは、形式dmsetup tableが変更されたようです。少なくとも私にとっては、マスターキーは列に表示されます$6
カロルバビオック

@KarolBabiochおそらくボリューム名を指定しなかったのですか?
frostschutz
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.