この時、バックアップで使うAFPというプロトコルは暗号化を行わないので、別の手段で暗号化を行う必要がある。そこで、IPsecで暗号化を行なってみる。
- IPv6での通信とする
- NASのあるネットワークにいる場合、暗号化は行わない
- 事前共有キーによる暗号化
の3点を条件とする。
- クライアント側はMountain Lion。racoonを使う。
- サーバ側はFreeBSD。racoonを使う。
直接設定ファイルを書くことによって、「AFPだけ暗号化する」ようにする。
お約束だが、内容の真偽も含めて、自己責任で。最悪、どこでもMy Macが動かなくなることもあるので。
Mountain Lion側。
/var/run/racoon/ に動的生成した設定ファイルを置くようになっている様子だが、消されそうなので、/etc/racoon/remote/ を作って、そこに置くことにする。
そこに置いた設定ファイルが取り込まれるよう、/etc/racoon/racoon.conf に手を加える。racoonはどこでもMy Macで使っているので、ミスがあると動かなくなるので注意。
racoon.confの最後に
include "/var/run/racoon/*.conf" ;
という行があるので、その手前(上の行)にinclude "/etc/racoon/remote/*.conf" ;
を加える。
次に、/etc/racoon/remote/ に、NASに接続するための設定ファイルを作成する。ファイル名は.confで終わっていればなんでも良いので、例えば、NASのhost名にする。
中身は
remote NASのIPアドレス {
exchange_mode aggressive;
doi ipsec_doi;
situation identity_only;
verify_identifier off;
my_identifier user_fqdn "メールアドレス";
initial_contact off;
support_proxy on;
proposal_check obey;
proposal {
encryption_algorithm aes;
hash_algorithm sha256;
authentication_method pre_shared_key;
dh_group modp1024;
}
proposal {
encryption_algorithm aes;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group modp1024;
}
proposal {
encryption_algorithm 3des;
hash_algorithm sha256;
authentication_method pre_shared_key;
dh_group modp1024;
}
proposal {
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group modp1024;
}
proposal {
authentication_method pre_shared_key;
hash_algorithm sha1;
encryption_algorithm aes 256;
lifetime time 3600 sec;
dh_group 2;
}
proposal {
authentication_method pre_shared_key;
hash_algorithm md5;
encryption_algorithm aes 256;
lifetime time 3600 sec;
dh_group 2;
}
proposal {
authentication_method pre_shared_key;
hash_algorithm sha1;
encryption_algorithm aes;
lifetime time 3600 sec;
dh_group 2;
}
proposal {
authentication_method pre_shared_key;
hash_algorithm md5;
encryption_algorithm aes;
lifetime time 3600 sec;
dh_group 2;
}
proposal {
authentication_method pre_shared_key;
hash_algorithm sha1;
encryption_algorithm 3des;
lifetime time 3600 sec;
dh_group 2;
}
proposal {
authentication_method pre_shared_key;
hash_algorithm md5;
encryption_algorithm 3des;
lifetime time 3600 sec;
dh_group 2;
}
}
とする。
ポイントはexchange_mode。これをaggressiveだけにしているので、Phase 1はaggressive modeで折衝が開始される。そのため、事前共有キーファイルでの相手のIDとしてIP Address以外のものも使えるようになる。 受け側のracoonでは相手のIDとして*(任意の文字列)が使えないため、割り当てられるAddressが固定ではないモバイル環境からアクセスする場合、メールアドレスなど、IP Address以外のものを指定する必要があるため、aggressive modeは必須となる。
通常であれば、この後にsainfoを定義するのだが、既に定義されているのだ。/var/run/racoon/anonymous.conf がそれ。
sainfo の部分はこんな感じ
sainfo anonymous {
pfs_group 2;
lifetime time 10 min;
encryption_algorithm aes;
authentication_algorithm hmac_sha1;
compression_algorithm deflate;
}
ここまでで、暗号化するときの各種パラメータを定義した。後は、どの通信を暗号化するのかを定義する。これは、「NASにバックアップする通信」なので、NASに送る奴とNASから返ってくる奴とを定義する。
例えば、/etc/racoon/NASのhost名.key というファイルに
spdadd NASのいるネットワーク/マスク[0] NASのアドレス[548] any -P out none;
spdadd NASのアドレス[548] NASのいるネットワーク/マスク[0] any -P in none;
spdadd ::/0[0] NASのアドレス[548] any -P out ipsec esp/transport//require;
spdadd NASのアドレス[548] ::/0[0] any -P in ipsec esp/transport//require;
と書く。これをsetkey -f で喰わせてやればよいのだが、マシンを起動するたびに忘れずに実行する必要があるので、例えば、rootでcrontab -eして
@reboot /usr/sbin/setkey -f /etc/racoon/NASのhost名.key
と書いておく。
最後に、事前共有キー。/etc/racoon/psk.txt が既にあるので、同じように、
NASのアドレス 事前共有キー
の1行を追加しておく。
サーバに繋ぐ前に、一度Macを再起動させて問題なさそうなことを確認しておく。
再起動してログインしたら、アプリケーション→ユーティリティ→コンソール.app を開く。左側のログリストで「すべてのメッセージ」を選択し、右側に表示されるracoonのメッセージを確認する。問題なければ、「IPSec Phase2 established」の行が表示されているはず。何らかのエラーが出ているようであれば、/etc/racoon/racoon.conf および /etc/racoon/remote/*.conf の中身を確認して修正、racoonの再起動(わからなければ、Macの再起動)。放置しておくと、どこでもMy Macで接続できないことがある!
サーバ側の設定についてはまた今度。
サーバ側の設定についてはまた今度。