iSCSI はブロックデータが Network 上に流れるので気を付けなくはいけない。 専用のネットワークかVLANとかを組むのが定石らしいが、そうでない場合 IPSec が使うのが望ましいらしい。
設定が面倒で、大抵ノーガードですなぁ。
MacOSX でも普通にIPSecが使えるので、iSCSI のデータのみを保護する設定をしてみよう。
IPSec の設定内容
- Linux と Mac OSX の相互にIPSec接続をする。
- 既に iSCSI の設定が済んでおり、Linux側のiSCSIターゲットボリュームをMacOSX側のiSCSIイニシエータからマウントできる。
- IPSec はトランスポートモードで使い、iSCSI のデータ(3260/tcp)に限定する。
- IKE デーモンは racoon (IKEv1) を使う。
- 認証は事前共有秘密鍵/aggressive mode を使う。
- 暗号はAES/SHA1をなるべく使う。
役割 | IPアドレス | ホスト名 | |
---|---|---|---|
Linux 側 | iSCSIターゲット | 192.168.0.10/24 (固定) | server1 |
MacOSX 側 | iSCSIイニシエータ | 192.168.0.20/24 | client1 |
SADの設定
基本的に、上りと下りのそれぞれで、サーバ側のIPアドレスとポート番号を指定すれば、iSCSI通信のみに限定できる。クライアント側は、DHCP等で振れる事を考えて範囲指定にする。
BSDの実装では PF tag なるものがあり「spdadd tagged」と組み合わせてフィルタルールに溶け込ませる事ができるそうなのだが、Linux側では同等の機能が実装されていないようなので残念ですなぁ。。。
Linux ターゲット側
# apt-get install ipsec-tools
/etc/ipsec-tools.conf
...
flush;
spdflush;
spdadd 192.168.0.10[3260] 192.168.0.0/24 tcp -P out ipsec esp/transport//require;
spdadd 192.168.0.0/24 192.168.0.10[3260] tcp -P in ipsec esp/transport//require;
Mac OSX のイニシエータ側
MacOSXでは、setkey 用の設定ファルの置き場がデフォルトでは用意されていないので、適当な場所に保存して、起動時に setkey コマンドで読み込み必要がある。
/etc/racoon/setkey.conf
flush;
spdflush;
spdadd 192.168.0.0/24 192.168.0.10[3260] tcp -P out ipsec esp/transport//require;
spdadd 192.168.0.10[3260] 192.168.0.0/24 tcp -P in ipsec esp/transport//require;
racoonの設定
Linux/MacOSX ともに、racoon を使うので設定ファイル racoon.conf の内容はほぼ同じになる。ただし、事前共有秘密鍵ファイル psk.txt は、同じ鍵をそれぞれの相手側のものとして書く必要があり、ちょっと注意が必要。
Linux ターゲット側
/etc/racoon/racoon.conf
...
remote anonymous {
exchange_mode aggressive,main;
my_identifier fqdn "server1"; # サーバの認識情報
dpd_delay 20;
proposal {
encryption_algorithm 3des;
lifetime time 2 hour;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group 2;
}
generate_policy off;
}
sainfo anonymous {
pfs_group 2;
lifetime time 1 hour;
encryption_algorithm aes, 3des;
authentication_algorithm hmac_sha1;
compression_algorithm deflate;
}
/etc/racoon/psk.txt
...
client1 secret1
Mac OSX のイニシエータ側
他にVPNなど IPSec を使うものと衝突する可能性がある気がしないでも無い。。。anonymous の部分をアドレス指定しれば、行けそうな気がするが。。。未検証。
/etc/racoon/racoon.conf
...
remote anonymous {
exchange_mode aggressive,main;
my_identifier fqdn "client1"; # クライアントの認識情報
dpd_delay 20;
proposal {
encryption_algorithm 3des;
lifetime time 2 hour;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group 2;
}
generate_policy off;
}
sainfo anonymous {
pfs_group 2;
lifetime time 1 hour;
encryption_algorithm aes, 3des;
authentication_algorithm hmac_sha1;
compression_algorithm deflate;
}
/etc/racoon/psk.txt
...
server1 secret1
racoonは自動に起動しないので、適当名タイミングで起動する必要はある。
% sudo setkey -f /etc/racoon/setkey.conf % sudo racoon自動起動するには、「マスタリングIPsec 第2版」に記述の方法が簡単である。
確認
IPSec はアプリケーション側の修正の必要の無い物なので、、、普通にボリュームをマウントすると普通に使える。
まぁ気休めに、IPSec_SAをチェックすれば、
# setkey -D 192.168.0.20 192.168.0.10 esp mode=transport spi=131341201(0x07d41b91) reqid=0(0x00000000) E: aes-cbc 8250b455 59cc8799 c0d0b0b0 71b570a8 A: hmac-sha1 6ff81843 b28130ed a5722694 32b134ee a0fc5b96 seq=0x00000000 replay=4 flags=0x00000000 state=dying created: Sep 8 14:51:43 2009 current: Sep 8 15:40:54 2009 diff: 2951(s) hard: 3600(s) soft: 2880(s) last: Sep 8 14:51:45 2009 hard: 0(s) soft: 0(s) current: 50750612(bytes) hard: 0(bytes) soft: 0(bytes) allocated: 49393 hard: 0 soft: 0 sadb_seq=1 pid=1233 refcnt=0 192.168.0.10 192.168.0.20 esp mode=transport spi=17664308(0x010d8934) reqid=0(0x00000000) E: aes-cbc 5d2d422b fe916f6d 501fedce e3d9650d A: hmac-sha1 6cfbf657 2eb74cb3 b64b5074 e34148b9 7bcaf934 seq=0x00000000 replay=4 flags=0x00000000 state=dying created: Sep 8 14:51:43 2009 current: Sep 8 15:40:54 2009 diff: 2951(s) hard: 3600(s) soft: 2880(s) last: Sep 8 14:51:45 2009 hard: 0(s) soft: 0(s) current: 2142076(bytes) hard: 0(bytes) soft: 0(bytes) allocated: 26881 hard: 0 soft: 0 sadb_seq=2 pid=1233 refcnt=0
ついでに tcpdump でサーバ側のパケットの流れを見れば、ESPパケットが飛び交ってるのが見える。。。
# tcpdump -i eth0 not port 22 ... 15:38:24.183860 IP client1 > server1: ESP(spi=0x07d41b91,seq=0xc0ba), length 116 15:38:24.184162 IP server1 > client1: ESP(spi=0x010d8934,seq=0x68e6), length 116 15:38:24.184625 IP client1 > server1: ESP(spi=0x07d41b91,seq=0xc0bb), length 68 15:38:27.186886 IP client1 > server1: ESP(spi=0x07d41b91,seq=0xc0bc), length 116 ...
まとめ
SADの設定をちまちま行えば、他の通信もIPSecで保護が出来そうである。気になるのは、パフォーマンスがどこまで劣化するかなのだが。。。あまり期待は出来ないのかなぁ。。。
0 件のコメント:
コメントを投稿