九尾空間

この世はとてもキュービックな空間ですね

暗号化済パーティションへArch Linuxをインストールする

あけましておめでとうございます。ついに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