Linux で暗号化ファイルシステムを使う
2008/01/16 | ラベル: Linux, Tips |Linux でファイルシステムを暗号化する必要があったので試してみたメモ。
Linux, 暗号化, ファイルシステムでググると debian の情報が多くヒットした。debian はインストール時に暗号化ファイルシステムを選べるようだ。ということで初めて debian を使ってみた。
debian のパーティション設定ツールが使いづらい
RHEL などの DiskDruid と比べて非常に使いづらく感じた。LVMとか暗号化ボリュームとか、内部に論理パーティションを作ると削除できないし。仕方なしに別のターミナルからコマンドで削除するはめに。。暗号化ボリュームのキーとして「乱数値」が選べるが、パッケージ不足とやらで作成できず。ネットワークインストールだったからかも。とりあえずキーはパスフレーズにしてなんとかインストール完了。
暗号化ボリュームのマウント
パーティションはこんな感じ。
- /boot (ext3) - 暗号化ボリューム - LVM - swap - /home (ext3) - LVM - / (ext3)
暗号化ボリューム内に LVM で swap と /home を作成した。ブート時(というか暗号化ボリュームのマウント時)にパスフレーズの入力を求められる。正しいパスフレーズを入力するとマウントされる。
パスフレーズの入力なしに暗号化ボリュームをマウントする
パスフレーズ以外に、キーファイルを読み込ませて認証(ん?認証という言い方でよいのか?)することもできる。
キーファイルの生成
# dd if=/dev/urandom of=/boot/keyfile bs=1 count=1024
乱数を使って 1024バイトのファイルを生成。これをキーファイルとして使う。 キーファイルは暗号化ボリュームでないところに置く。今回は /boot に置いた。
キーファイルの登録
作成したキーファイルをキーとして登録する。
# cryptsetup luksAddKey /dev/sda5 /boot/keyfile Enter any LUKS passphrase: ←最初のパスフレーズを入力 key slot 0 unlocked. ←「slot 0」のパスフレーズで解除した Command successful.
キーファイルが登録されたか確認。
# cryptsetup luksDump /dev/sda5 LUKS header information for /dev/sda5 Version: 1 Cipher name: aes Cipher mode: cbc-essiv:sha256 Hash spec: sha1 Payload offset: 2056 MK bits: 256 MK digest: de e1 10 fe 4b d9 a0 b7 20 ff 7e cb aa 4d 36 a1 bf 85 92 8a MK salt: ee 56 07 6a 24 ca 83 f2 57 97 83 1d 74 c2 ce f6 5c 35 ee 07 e8 02 05 7e 84 f0 ec 00 77 21 39 5d MK iterations: 10 UUID: 62c33609-06cd-48d8-a5d7-214df4fa9057 Key Slot 0: ENABLED Iterations: 115017 Salt: 3f dc 4b cc 61 81 64 89 17 02 b5 bc c6 ae c8 93 e0 e9 f2 be 9a f9 74 24 3e 7f 1b be 6e 53 b1 6a Key material offset: 8 AF stripes: 4000 Key Slot 1: ENABLED Iterations: 65900 Salt: 06 20 15 74 24 36 bd 71 8c a7 e2 66 9b e5 2a 8b 21 53 4a 89 36 e9 5d a2 c6 63 4c 1b 5d d1 9d c4 Key material offset: 264 AF stripes: 4000 Key Slot 2: DISABLED Key Slot 3: DISABLED Key Slot 4: DISABLED Key Slot 5: DISABLED Key Slot 6: DISABLED Key Slot 7: DISABLED
slot 1 にキーファイルが登録された。
登録したキーファイルでマウントできることを確認する
今はマウントしている状態なので、アンマウントする。 今回の構成では、 暗号化ボリューム → LVM → ファイルシステム という階層で構成されているので、逆順でアンマウントしていく。
# umount /home # swapoff -a # lvchange -a n /dev/VolGroup00/home # lvchange -a n /dev/VolGroup00/swap # cryptsetup luksClose /dev/mapper/sda5_crypt
登録したキーファイルで sda5_crypt をマウントする。
# cryptsetup luksOpen /dev/sda5 sda5_crypt --key-file /boot/keyfile key slot 1 unlocked. Command successful.
キーファイルでマウントできることが確認できた。swap と /home をマウントしておく。
# lvchange -a y /dev/VolGroup00/home # lvchange -a y /dev/VolGroup00/swap # mount /home # swapon -a
暗号化ボリュームを自動でマウントする
OS起動時に自動でマウントできるように設定する。
/etc/default/cryptdisks を編集。
# Mountpoints to mount, before starting cryptsetup. This is useful for # keyfiles on removable media. Seperate mountpoints by space. CRYPTDISKS_MOUNT="/boot"
/etc/crypttab を編集。
sda5_crypt /dev/sda5 /boot/keyfile luks
自動マウントできるかテストする。まず暗号化ボリュームを再度アンマウントする。 次に、/etc/init.d/cryptdisks を実行する。
# /etc/init.d/cryptdisks start Starting remaining crypto disks... sda5_crypt(starting)INSECURE MODE FOR /boot/keyfile, see /usr/share/doc/cryptsetup/README.Debian. key slot 1 unlocked. Command successful. done.
INSECURE だ、と警告が出たが、マウントは問題なし。README.Debian に書いてあるようにキーファイルのパーミッションを 400 にすると、警告は出なくなった。
# chmod 0400 /boot/keyfile # /etc/init.d/cryptdisks start Starting remaining crypto disks... sda5_crypt(starting)key slot 1 unlocked. Command successful. done.
あとは OS 再起動で自動マウントされることを確認して終わり。