cryptsetup というのが暗号化のフロントエンドになります。実態はDevice-Mapper。
暗号化するパーティションの作成
普通に作成する。対象は物理・論理パーティションでもLVMでもOK。ここではLVMを使用
# lvcreate -n cryptlv01 -L 1G vg_server2
# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert cryptlv01 vg_server2 -wi-a- 1.00g
暗号化フォーマットする
# cryptsetup luksFormat /dev/vg_server2/cryptlv01
WARNING! ======== This will overwrite data on /dev/vg_server2/cryptlv01 irrevocably. Are you sure? (Type uppercase yes): YES ← YESと大文字で入力 Enter LUKS passphrase: ← 暗号化キーを入力 Verify passphrase: ← 暗号化キーを再度入力これで終了。
暗号化デバイスを作成
フォーマットしただけでは使えない。Device-Mapperから暗号化パーティションをキーを使って復元しつつOSから見えるようにしてやる(マッピングしてやる)必要がある。
# cryptsetup luksOpen /dev/vg_server2/cryptlv01 cryptvol01
Enter passphrase for /dev/vg_server2/cryptlv01: ← 暗号化キーを入力cryptvol01はキーを使って復元されOSから見えるからアクセス可能になったデバイスの名前。好きなものが指定できる。この操作はOSから見える起動毎に毎回行う必要がある(自動化する方法は後述
この時のdmはこんな状態。
# dmsetup ls --tree
cryptvol01 (253:3) └─vg_server2-cryptlv01 (253:2) └─ (252:2) vg_server2-lv_swap (253:1) └─ (252:2) vg_server2-lv_root (253:0) └─ (252:2)
# dmsetup ls
vg_server2-cryptlv01 (253, 2) cryptvol01 (253, 3) vg_server2-lv_swap (253, 1) vg_server2-lv_root (253, 0)
# dmsetup table
vg_server2-cryptlv01: 0 2097152 linear 252:2 25102336 cryptvol01: 0 2093056 crypt aes-cbc-essiv:sha256 0000000000000000000000000000000000000000000000000000000000000000 0 253:2 4096 vg_server2-lv_swap: 0 4128768 linear 252:2 20973568 vg_server2-lv_root: 0 20971520 linear 252:2 2048
ファイルシステムを作る
暗号化はブロックレベルで行われているのでluksOpenしたあとにファイルシステムを作る必要がある。特に特別なことは必要ない。
# mkfs -t ext4 /dev/mapper/cryptvol01
mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 65408 inodes, 261632 blocks 13081 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=268435456 8 block groups 32768 blocks per group, 32768 fragments per group 8176 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376 Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 32 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
# blkid
/dev/mapper/vg_server2-cryptlv01: UUID="ade6da0d-c256-42fb-a571-c225955096ac" TYPE="crypto_LUKS" /dev/mapper/cryptvol01: UUID="715c9346-297d-4f0e-869d-f7eae0367bc6" TYPE="ext4"
手動マウント
普通にマウントしてやればOK
# mkdir /mnt/crypt
# mount -t ext4 /dev/mapper/cryptvol01 /mnt/crypt
# df -h
Filesystem Size Used Avail Use% マウント位置 /dev/mapper/vg_server2-lv_root 9.9G 2.4G 7.0G 26% / tmpfs 499M 260K 499M 1% /dev/shm /dev/vda1 485M 30M 430M 7% /boot /dev/mapper/cryptvol01 1006M 18M 938M 2% /mnt/crypt
自動マウント
この cryptolv01 からマッピングされている cryptvol01 はOSを再起動すると消えてしまい luksOpen を行わないと再作成されない。
それを自動化するために用意されているのが、/etc/crypttab ファイル。このファイルに自動的にオープンしたい暗号化デバイスとデバイス名、パスワードを指定することでOS起動時にluksOpenが自動的に行われる。
# vim /etc/crypttab
cryptvol01 /dev/vg_server2/cryptlv01 /etc/cryptpass◆作成したいデバイス名◆暗号化デバイスパス◆パスワードが記述されたファイル、という3つを指定する。最後のパスワードファイルを指定しない場合、OS起動時にパスワードの入力を求められる。
# echo -n "cryptkey" > /etc/cryptpass
改行コードが入っていると、それもキーの一部とみなされるので含まれないように注意。
この設定を行ったら一度OSを再起動してデバイスの作成が行われるか確認し、問題なければfstabにext4としてマウントするように記述する。
これでHDDだけ取り出して、他システムからマウントされてもデータは取り出せなくなる。
注意
・暗号化キーを忘れたら復元不能
関連項目
Device-Mapperはシンプルながら応用範囲が広く、様々な場面で使われています。
■RHEL Device Mapper と LVM
■RHEL LVM2でシンプロビジョニング
■仮想環境を使って簡単にRHEL6のiscsiマルチパスを検証する
◆RHEL ストレージ関連のエントリーまとめ
0 件のコメント:
コメントを投稿