2009年7月20日

Linux でボリュームを暗号化する (2) - LVMの保護

最近は、起動用の小容量HDD/SSDと複数データ用の大容量HDDの組み合わせでPCを組んでいる。SSDが手頃な価格になれば、その傾向も大きくなると思う。起動用のHDDの暗号化は、手法が多く、それぞれに結構面倒設定が多いし、どんどん新しい手法が出てきそうだし、枯れるまで様子見の方がいいかなと思う。なので、データ用の大容量HDDを暗号化することのみを考える。

次のサイトを参考に設定した。

PC
- 起動用 HDD/SDD
  /dev/sda
- データ用 大容量HDD (今はこっちだけ暗号化)
  /dev/sdb
古いデータの消去とパーティションの作成

新品のHDDを買ってきたのならば必要は無いが、念のため古いデータを乱数で上書きする。全容量を一つのパーティションに割り当てる構成にする。

# shred -n 3 -v /dev/sdb
# echo "0,,8e" | sfdisk -D /dev/sdb
LUKSパーティションの作成

LUKSパーティションには2種類のキースロットを割り当てる

  1. パスフレーズ(難解で長文なもの)を使う奴 -- 運用上何かと必要
  2. キーファイルを使う奴

# cryptsetup --cipher aes-cbc-essiv:sha256 --key-size 256 luksFormat /dev/sdb1
...
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase: <= パスフレーズを入力
Verify passphrase: <= パスフレーズを入力
...
# mkdir -m 700 /etc/luks
# dd if=/dev/random of=/etc/luks/data01.key bs=1 count=32
# chmod 400 /etc/luks/data01.key
# cryptsetup luksAddKey /dev/sdb1 /etc/luks/data01.key
Enter LUKS passphrase: <= パスフレーズを入力
key slot 0 unlocked.
...
起動時にキーファイルを使って自動的に開始する設定

/etc/crypttab

# <target> <source>  <key file>  <options>
crypt-sdb1 /dev/sdb1 /etc/luks/data01.key luks
...

後は再起動するか、次のコマンドで暗号化を開始しとく。

# cryptdisks_start crypt-sdb1
VGの作成

出来上がったブロックデバイスを使って、LVMを組めば良く。

# pvcreate /dev/mapper/crypt-sdb1
  Physical volume "/dev/mapper/crypt-sdb1" successfully created
# vgcreate Data01 /dev/mapper/crypt-sdb1
  Volume group "Data01" successfully created

Volume Group が作成まで出来れば、あとは普通のLVMの使い方そのものなので、略。。。

まとめ

キーファイルを起動用ディスク内に保存することで、データ用ディスクが単体で切り離された場合にデータが保護できるようになるし、先頭ブロックの1MBくらいを消去することで完全に破棄することも可能になる。

これで 1T級HDD の破棄する場合のデータ消去が簡単になるんかいなぁ!?

0 件のコメント: