web-dev-qa-db-ja.com

フルディスク暗号化を行うために既存のライブデータをdm-cryptするために利用できるユーティリティまたは手順はありますか?

実行中のLinuxシステムを、暗号化されていないライブデータとともにHDDにインストールしたら。そのHDD全体を適切な場所にdm-cryptする合理的な方法はありますか? (バックアップせずに、新しいFSに復元または転送します。)

もしそうなら、それをオンラインで行う方法はありますか?つまりLinuxシステムを1時間程度で操作できるので、すべてのデータを暗号化するのに時間がかかりますか?

4
Joe C

(a)十分な空きディスク容量があり、(b)LVMを使用している場合は、次のことができます。

  1. バックアップを取ります。
  2. 今回は無視せずに、手順1を読み直してください。
  3. 私は実際にこれをテストしていないことを念頭に置いて、ステップ1を読み直してください。しかし、それはうまくいくはずです!
  4. 現在の物理ボリュームを縮小します(pvresize
  5. 基になるパーティションのサイズを変更します。残念ながら、パーティションテーブルを再度読み取るには、おそらく再起動する必要があります(使用中です)。
  6. 新しいパーティションを作成し、その上にdm-cryptを設定します。その上に物理的なボリュームを置きます。
  7. pvmoveを使用して、実際にデータをオンラインで移動できるようになりました。
  8. 移動の進行中に、暗号化されたボリュームを起動するようにinitramfsを更新してください。特に、すべてを暗号化している場合。
  9. リカバリディスク(ライブCDなど)を用意します。再起動し、起動することを確認します
  10. ボリュームグループから古いpvを削除し、安全に上書きします。
  11. これで、その上にもdm-cryptを設定し、同じvgに2番目のpvとして追加できます。

LVMを使用していない場合は、おそらく絶望的です。確かに、たとえばrsyncを使用して、あるファイルシステムから別のファイルシステムにデータをコピーすることもできますが、マシンをアイドル状態にして最終同期を行う必要があります(そうしないと、ファイルをコピーしようとするとファイルが変更されます)。

7
derobert

LUKSインプレース暗号化 が存在します。ただし、写真のように環境を少し設定する必要があります。

enter image description here

enter image description here

enter image description here

5
Frederick Nord

ツールは存在するはずですが、名前やURLを提供できません。しかし、あなたが恐れていなければ:-)それは難しいことではありません。暗号化されていないデバイスから読み取り、暗号化されたデバイスに書き込むだけです。また、ファイルシステムのサイズを少し小さくする前にサイズを変更しない限り、LUKSを使用することはできません。そしてもちろん、これはマウントされているデバイスでは機能しません(おそらく、roにマウントされている場合でも機能しません)。コア機能(クラッシュに対する保護なし)はこれです(そして、ええ、私はそれをうまく試しました):

for((i=0;i<100;i++)); do
  echo "Copying block with offset ${i} to tmpfs"
  dd if=/dev/storage2/test of=/mnt/tmpfs/cryptoblock skip=$i bs=10M count=1 &>/dev/null
  echo "Copying block with offset ${i} from tmpfs"
  dd if=/mnt/tmpfs/cryptoblock of=/dev/mapper/crypt_test seek=$i bs=10M count=1
done

改善の明らかな要求は次のとおりです。代わりにブロックを不揮発性媒体にコピーし、それらのオフセットをログに記録します。クラッシュした場合は、中断されたトランザクションのブロックを手動でコピーし、次のブロックのオフセットを開始値としてループを開始します。

2
Hauke Laging