geli

geliでファイルシステムを暗号化する
synopsis


$ man geli(8)
$ w3m /usr/share/doc/en/books/handbook/disks-encrypting.html
$ geli init -K key foo
$ geli attach -k key foo
$ mount foo.eli mount-point
mdデバイスでgeli暗号化パーティションをテスト
まずgeom(4)カーネルモジュールをロードする。


$ sudo kldload geom_eli
$ kldstat
3 1 0xc3b22000 e000 geom_eli.ko
キーを生成する。詳細はgeli(8)を参照。


$ dd if=/dev/random of=priv.key bs=64 count=1
今回はテストなんで本物のディスクでなくファイルによってバッキングされているmdconfig(8)
によるデバイスを使う。本番のときは、「md0」を「ad0s1f」などに置き換えればいい。


$ dd if=/dev/zero of=priv.md bs=1m count=50
$ sudo mdconfig -a -t vnode -f priv.md
$ sudo mdconfig -l
crw-r----- 1 root operator 0, 102 Jul 8 07:55 /dev/md0
暗号化デバイスの初期化
geliデバイスを初期化する。こう設定すると使うときにパスフレーズを聞いてくる。


$ sudo geli init -s 4096 -K priv.key /dev/md0


$ sudo geli init -s 4096 -P -K priv.key /dev/md0
geliデバイスの使用
使う前にデバイスにアタッチする。


$ sudo geli attach -k priv.key /dev/md0
$ ls -l /dev/md0*
crw-r----- 1 root operator 0, 102 Jul 8 09:20 /dev/md0
crw-r----- 1 root operator 0, 103 Jul 8 07:55 /dev/md0.eli
md0.eliが暗号化されたデバイスとなり、これを通常のデバイスのように使う。
まず、新規のファイルシステムを作る。


$ sudo newfs /dev/md0.eli
マウントする。


$ mkdir priv
$ sudo mount /dev/md0.eli priv
$ df | grep eli
/dev/md0.eli 50152 8 46132 0% /home/tengu/hello/geli/priv
さて、geliファイルシステムの一覧はどう見るのか?


$ geli list


geli list output

Geom name: md0.eli
EncryptionAlgorithm: AES-CBC
KeyLength: 128
Crypto: software
UsedKey: 0
Flags: NONE
Providers:
1. Name: md0.eli
Mediasize: 52424704 (50M)
Sectorsize: 4096
Mode: r1w1e1
Consumers:
1. Name: md0
Mediasize: 52428800 (50M)
Sectorsize: 512
Mode: r1w1e1
ちょっとうるさい出力だ。もっとサクっとしたもはないのか。


$ geli status
Name Status Components
md0.eli N/A md0
なんか逆な気がする。普通は「list」が簡潔な出力で「status」が詳細だと思うんだけど。 まあいいや。

後片付け


$ sudo umount priv
$ sudo geli detach md0.eli
$ sudo mdconfig -d -u 0 # assuming /dev/md0
パスフレーズを聞いてこない設定
「-p」オプションでパスフレーズを省く。
initは大文字、attachが小文字、なんで間違えないように。


$ sudo geli init -s 4096 -P -K priv.key /dev/md0
$ sudo geli attach -p -k priv.key /dev/md0
どう使うか?
パスフレーズを使わないで、システム上のキーだけに頼った暗号化パーティションって
マシンに物理的なアクセスを得た者には読まれてしまう。やはり、パスフレーズを使うべきなんだろうか。
キーをUSBドライブなどのリムーバブルメディアに入れておけばそれだけでも大丈夫なんだろうな。
ここら辺をもっと勉強しなくては。

まとめ
FreeBSDだとgeliで簡単に暗号化パーティションが作れる。あと、geom(4)は凄い機構だ。
これだと、ディスク管理機能がモジュール化されていて、自由に組み合わせることができるようでだ。
使い込なせるようになりたいシステムだ。

リファレンス

  • man geli(8)
  • handbook chapter on the web
  • or your local copy of handbook: /usr/share/doc/en/books/handbook/disks-encrypting.html if you are viewing this on FreeBSD.
  • /etc/rc.d/geli*
  • man rc.conf(5)
  • GELI section in /etc/defaults/rc.conf
  • todo

  • convert /home to geli.
  • rc scripts to mount geli partition.

    happy geli'ng..