私はしばらくの間暗号化されたドライブとして動作する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
マスターキーを使用したいと言います。
これが<(...)
シェルコマンドの置換とリダイレクトです。デフォルトでは、内部のすべてを実行し、出力をパイプに送信し、その<(...)
パイプのパスに置き換えます。
したがって、コマンド全体は複数のタスクを圧縮した単一の文です。