あけましておめでとうございます。ついに2013年がやってきてしまいました。
去年は絶望と空虚の一年間でしたが、今年は希望と創作の一年にしたい。というわけで早速Webサイトでも作ろうかなと環境構築を始めたのですが、ここで一つ問題が。
WindowsだとRails+Bootstrapで作ったWebサイトの開発が面倒臭い……。
therubyracerのインストールで「whereコマンドがない」とかエラーを吐きます。やっぱりWindowsってRubyでの開発に向いていませんね。
ということで環境構築に飽きて放置していたノートPCにArch Linuxを改めてインストールすることにしました。VMだとPCいじってる気になれないので物理的に分けます。
ノートPCは勉強会とかに持ち歩く可能性があるので、折角ならということで暗号化ファイルシステム上にインストールすることにしました。
そこで、備忘録ついでに手順を書いておきます。
手順
参考:
http://en.gentoo-wiki.com/wiki/DM-Crypt_with_LUKS
https://wiki.archlinux.org/index.php/Dm-crypt_with_LUKS
1. ディスクをランダムデータで埋める
# shred -vzn1 /dev/sda
shred: /dev/sda: pass 1/2 (random)...535MiB/299GiB 0%
…
積んでるHDDにもよりますが、相当時間がかかるので根気よく待ちましょう。
2. パーティションを切る
デバイス名 | 容量 | マウントポイント |
---|---|---|
/dev/sda1 | 15360MB | /boot |
/dev/sda2 | 4096MB | (swap) |
/dev/sda3 | 300620MB | / |
普通にArch Linux入れる時みたいにパーティションを切りました。
3. /bootのフォーマット
# mkfs.ext4 /dev/sda1
…
いつも通りフォーマットします。
/bootが平文なのが心配な方は/bootを外部のUSBメモリにでも入れるといいでしょう。
4. 暗号化パーティションの準備
# cryptsetup -c aes -h sha256 -d /dev/urandom create swap /dev/sda2
# mkswap /dev/mapper/swap
…
# swapon /dev/mapper/swap
# cryptsetup -y -c aes-cbc-essiv:sha256 -s 256 -h sha256 luksFormat /dev/sda3
WARNING!
========
This will overwrite data on /dev/sda3 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
# cryptsetup luksOpen /dev/sda3 root
Enter passphrase for /dev/sda3:
# mkfs.ext4 /dev/mapper/root
…
# mount /dev/mapper/root /mnt
# mkdir /mnt/boot
# mount /dev/sda1 /mnt/boot
…
暗号化方法の選択に迷ったのですが、ここによると
- Blowfishを今更選ぶ理由はない。
- Twofishはセキュリティを犠牲にしてでも早いほうがいい時に選ぶべき。
- Serpentは速度を犠牲にしてでもセキュリティを優先したい時に選ぶべき。
- Rijndael(AES)は両方ともほどほどでいい時に選ぶべき。
とのことなので、今回はAESを選びます。
5. ベースシステムとGRUBをインストール
ここはいつも通りなので何も言うことはありません。
6. 起動時に暗号化パーティションを開くようにする
/etc/crypttab (暗号化したスワップを使用するようにする):
swap /dev/sda2 /dev/urandom swap,cipher=aes,size=256
/etc/default/grub (暗号化したルートディレクトリを指定する):
GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda3:root"
/etc/mkinitcpio.conf (filesystemsの前にencryptを追加する):
HOOKS="... encrypt filesystems ..."
GRUBの設定変更を反映させるために設定ファイルを再生成する
# grub-mkconfig -o /mnt/boot/grub/grub.cfg