パスワードがわからず、LUKSファイルシステムのパスワード変更

パスワードがわからず、LUKSファイルシステムのパスワード変更

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

サーバーを再起動したいのですが、もちろんパスワードが必要です。ドライブは明らかに復号化されていますが、以前のパスワードを知らずにパスワードを変更する方法はありますか?

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

もちろん、rsyncすべてを終了して再構築することもできますが、そうすることは避けたいと思います。覚えて( )を見てみましたが#cat /dev/mem | less見つかりませんでした(とても良いことですね!)。

答え1

はい、ボリュームを復号化するときにマスターキーにアクセスできます。

新しいパスワードを追加する迅速で汚い方法:

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マスターキーを使用したいと言います。
これが<(...)シェルコマンドの置換とリダイレクトです。デフォルトでは、内部のすべてを実行し、出力をパイプに送信し、その<(...)パイプのパスに置き換えます。

 

したがって、コマンド全体は複数のタスクを圧縮した単一の文です。

関連情報