クラウド上の場合、セキュリティを気にするため、ディスクの暗号化が要件になることがよくあります。
このような場合は、cryptsetupで暗号化ファイルシステムの作成 – lost and found ( for me ? )で
紹介されているようにcryptsetupと呼ばれるオープンソースのツールを利用して実現することが可能です。
今回は、この暗号化されたファイルシステム(ディスク)をさらにDRBDで冗長化する方法を試してみます。
その前に、DRBDの状態を確認して、作業するマシンがプライマリになるようにしておきます。
# drbdsetup /dev/drbd0 primary # /etc/init.d/drbd status drbd driver loaded OK; device status: version: 8.3.12 (api:88/proto:86-96) GIT-hash: e2a8ef4656be026bbae540305fcb998a5991090f build by dag@Build32R6, 2011-11-20 10:55:07 m:res cs ro ds p mounted fstype 0:mysql Connected Primary/Secondary UpToDate/UpToDate C
はじめに、cryptsetup(CentOS 6)をインストールします。
# yum -y install cryptsetup
次に、DRBDのデバイス(/dev/drbd0)をフォーマットするのですが、フォーマット時にパスフレーズを
入力する必要がおります。
# cryptsetup -y luksFormat --cipher aes-cbc-essiv:sha256 --key-size 256 /dev/drbd0 WARNING! ======== This will overwrite data on /dev/drbd0 irrevocably. Are you sure? (Type uppercase yes): YES Enter LUKS passphrase: Verify passphrase:
そして、フォーマットしたデバイスをオープンするのですが、オープン時にも同様のパスフレーズを入力します。
オープンされると、/dev/mapper/encryptedというデバイス(デバイスマッパー)が作成され、以後、このデバイスを利用していきます。
# cryptsetup luksOpen /dev/drbd0 encrypted Enter passphrase for /dev/drbd0:
その後、ファイルシステムをフォーマットします。
# mkfs.ext4 /dev/mapper/encrypted 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, 261615 blocks 13080 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 36 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
最後にマウントすることでDRBDで冗長化された暗号化ファイルシステムが利用できるようになります。
# mkdir /mnt/encrypted # mount -t ext4 /dev/mapper/encrypted /mnt/encrypted