'03.1.2 ('03.3.6更新)
Mac OS X 10.2では標準でIPsecに対応したのですが、入ってるだけですぐには使えません。ちょっとした設定で簡単に使えるようになります。超簡単コースと本格コースを用意しました。他機種との接続まで考える人は本格コースへどうぞ。
(自己責任で行ってください。暗号化されてるかどうかの確認も忘れずに)
「リモートログイン」はSSHですし、「インターネット接続」アプリケーションの「新規 VPN 接続ウインドウ」からは、クライアントとしてPPTPサーバに接続も可能です。それに引き換えIPsecには、GUIでの接続が用意されていないので、使うのは少し面倒です。(OS XのPPTPにはIPsecは使われていません)
サードパーティならGUIのツールも出ていますね。これを使うなら、あとの設定は必要ないです。
VaporSec (フリーウェア)
ここではracoon.confという設定ファイルをいっさいいじりません。そのかわりpsk.txtを直接書き換えるので、将来的にシステムが使うようになれば書き換えられてしまうかも。
ホスト A <192.168.0.2>とホスト B <192.168.0.8> のOS X同士で接続する場合で説明します。
ファイルの内容は下記のように。
spdflush; spdadd 192.168.0.8 192.168.0.2 any -P in ipsec esp/transport//require; spdadd 192.168.0.2 192.168.0.8 any -P out ipsec esp/transport//require;
上記とはIPアドレスが逆になります。
spdflush; spdadd 192.168.0.2 192.168.0.8 any -P in ipsec esp/transport//require; spdadd 192.168.0.8 192.168.0.2 any -P out ipsec esp/transport//require;
/etc/racoon/psk.txtは接続時の認証を行う共有鍵 (秘密鍵) を記述したファイルです。OS Xインストール時にすでに存在してるってことは、すべてのMacで内容が同じってことで、全然秘密になってません 。なんと、すべてのMacが接続可能な状態です。なので書き換えます。下記はデフォルトのpsk.txtの内容。
# IPv4/v6 addresses # 10.160.94.3 asecretkeygoeshere # 172.16.1.133 asecretkeygoeshere # 3ffe:501:410:ffff:200:86ff:fe05:80fa asecretkeygoeshere # 3ffe:501:410:ffff:210:4bff:fea2:8baa asecretkeygoeshere # USER_FQDN macuser@localhost somethingsecret # FQDN kame hoge
/etc/racoon/racoon.confの内容によってpsk.txtの記述も変わってきますが、ここではracoon.confを書き換えなくても済むようにしてみます。下記の「***************」に適当な英数字を入れて共有鍵とします。桁数は変えてもかまいませんが、少なくなると安全度が下がります。kame hogeはコメントアウト。A、Bで同じものを記述します。
# IPv4/v6 addresses # 10.160.94.3 asecretkeygoeshere # 172.16.1.133 asecretkeygoeshere # 3ffe:501:410:ffff:200:86ff:fe05:80fa asecretkeygoeshere # 3ffe:501:410:ffff:210:4bff:fea2:8baa asecretkeygoeshere # USER_FQDN macuser@localhost *************** # FQDN # kame hoge
psk.txtのパーミッションは600にして他に読まれないようにします。600でないとエラーになって実行されなくなるので、たとえテストでも変更が必要です。
% ls -l total 32 -rw-r--r-- 1 root wheel 155 Jan 2 00:00 kame.conf -rw------- 1 root wheel 265 Jan 2 00:00 psk.txt -rw-r--r-- 1 root wheel 3069 Jul 15 12:00 racoon.conf
A、BともにTerminalから下記を実行します。
% sudo setkey -f /etc/racoon/kame.conf % sudo racoon
以上で<192.168.0.2>と<192.168.0.8>の間の通信はIPsecを使ったセキュアなものになり、片方が条件を満たしてなければ繋がらなくなります (再起動したら再実行が必要。自動化もできるでしょうね)。今回racoon.confはまったく書き換えてません。
racoon.confは殆どインストール時のデフォルトの状態なので、きっちり設定するにはそれなりに書き換えが必要です。将来的にシステムが使うようになることも考慮して、ここではそれぞれmy_racoon.conf、my_kame.conf、my_psk.txtという別ファイルを作って設定します。
ホスト A <192.168.0.2>とホスト B <192.168.0.8> を接続する場合で、ホストAだけをOS Xとして設定することにします。
デフォルトだとIPv6用の設定まで書いてあるし、いらないものを消すとかなりすっきりします。詳しい設定を知りたい人は「racoon.conf(5)」を読んでください。
path include "/etc/racoon" ; path pre_shared_key "/etc/racoon/my_psk.txt" ; padding { maximum_length 20; # maximum padding length. randomize off; # enable randomize length. strict_check off; # enable strict check. exclusive_tail off; # extract last one octet. } timer { # These value can be changed per remote node. counter 5; # maximum trying count to send. interval 20 sec; # maximum interval to resend. persend 1; # the number of packets per a send. # timer for waiting to complete each phase. phase1 30 sec; phase2 15 sec; } remote 192.168.0.8 { exchange_mode aggressive,main; doi ipsec_doi; situation identity_only; my_identifier address "192.168.0.2"; nonce_size 16; lifetime time 1 min; # sec,min,hour initial_contact on; support_mip6 on; proposal_check obey; # obey, strict or claim proposal { encryption_algorithm 3des; hash_algorithm sha1; authentication_method pre_shared_key ; dh_group 2 ; } } sainfo anonymous { pfs_group 1; lifetime time 30 sec; encryption_algorithm 3des ; authentication_algorithm hmac_sha1; compression_algorithm deflate ; }
IPアドレスでの指定とします。*に適当な半角英数字を入れて鍵にします。
192.168.0.8 ***************
ファイルの内容は下記のように。
spdflush; spdadd 192.168.0.8 192.168.0.2 any -P in ipsec esp/transport//require; spdadd 192.168.0.2 192.168.0.8 any -P out ipsec esp/transport//require;
my_psk.txtのパーミッションは600にして他に読まれないようにします。600でないとエラーになります。
% ls -l total 32 -rw-r--r-- 1 root wheel 155 Jan 2 00:00 my_kame.conf -rw------- 1 root wheel 265 Jan 2 00:00 my_psk.txt -rw-r--r-- 1 root wheel 3069 Jul 15 12:00 my_racoon.conf
Terminalから下記を実行します。
% sudo setkey -f /etc/racoon/my_kame.conf % sudo racoon -f /etc/racoon/my_racoon.conf
さあ、次は相手側の設定です。相手もOS Xなら設定上のIPアドレスが入れ替わるだけです。
BSD系はOS Xと同じKAME (とracoon)、LinuxならFreeS/WAN、Windowsは2000以降標準搭載ですね。PGPnet (商用でなければフリー) はWindows95から対応で、Mac Classic版もあります。参考文献の「Linux以外のIPSecスタックとの相互接続[前編]」と、そこからのリンクに他機種での設定の詳しい解説があります。
tcpdumpで確認すると以下のようになります。IPsec実行前と比べれば一目瞭然。psk.txtを書き換えなくても同じ内容になりますから、こういうログだから安心、とは限りませんね。(下記はWeb共有してブラウザでアクセスしたところ)
% sudo tcpdump host 192.168.0.2 and 192.168.0.8
tcpdump: listening on en0
20:22:54.853466 192.168.0.8.isakmp > 192.168.0.2.isakmp: isakmp: phase 1 I agg: [|sa]
20:22:55.311886 192.168.0.2.isakmp > 192.168.0.8.isakmp: isakmp: phase 1 R agg: [|sa]
20:22:56.964593 192.168.0.8.isakmp > 192.168.0.2.isakmp: isakmp: phase 1 I agg:
(hash: len=20)
20:22:56.966263 192.168.0.8.isakmp > 192.168.0.2.isakmp: isakmp: phase 2/others I inf[E]: [encrypted hash]
20:22:56.967255 192.168.0.2.isakmp > 192.168.0.8.isakmp: isakmp: phase 2/others R inf[E]: [encrypted hash]
20:22:57.025765 192.168.0.8.isakmp > 192.168.0.2.isakmp: isakmp: phase 2/others I oakley-quick[E]: [encrypted hash]
20:22:57.106219 192.168.0.2.isakmp > 192.168.0.8.isakmp: isakmp: phase 2/others R oakley-quick[E]: [encrypted hash]
20:22:57.196785 192.168.0.8.isakmp > 192.168.0.2.isakmp: isakmp: phase 2/others I oakley-quick[E]: [encrypted hash]
20:23:01.289519 192.168.0.8 > 192.168.0.2: ESP(spi=0x0aeeb486,seq=0x2) (DF)
20:23:01.290353 192.168.0.2 > 192.168.0.8: ESP(spi=0x0365c949,seq=0x1) (DF)
20:23:01.290946 192.168.0.8 > 192.168.0.2: ESP(spi=0x0aeeb486,seq=0x3) (DF)
AirMacだと下記のようにしないとだめかも。
% sudo tcpdump -i en1 host 192.168.0.2 and 192.168.0.8
止めるときはcontrol+C