2009年12月23日

LinuxでIPsecするには・・?

Linux対LinuxでIPsecを確立する場合はどういった作業が必要なのか適当に試してみたので備忘録。
ちなみに鍵の種類は一番簡単な事前共有鍵(pre shared key)方式で。


1.Linuxで利用できるIPsecを確立するためのソフトウェア


■KAME Project : BSD用のIPv6の実装。2006年3月目的達成のため、プロジェクトは終了している。
 IPsec通信を行うためには以下に示す2つのソフトウェアが必要。

       ○ USAGI Project(Linux 2.6 Native) : BSD向けに開発されていたIPv6スタックのLinux版の実装。Linux Kernel 2.6には標準搭載。
       ○ Ipsec-tools : Linux 2.6のIPsecの実装に対してユーザランドソフトウェアを提供するプロジェクトで、IKE交換デーモン「racoon」等が含まれる。

 BSD<=>Linux間の通信では高い互換性が期待できる。また、Openswanと比べて設定が簡単。

■FreeS/WAN : Linux Kernel 2.4のころから利用されているIPSecの実装。webで検索した際に動作レポート・導入実績が多く見られる。2003年4月にプロジェクトは終了している。
   FreeS/WANの後継として特に有名なのが、以下の二つのソフトウェアがある。
       ○ Openswan
       ○ Strongswan

 Openswan Wikiより両者の比較「Feature Comparison : http://wiki.openswan.org/index.php/Openswan/FeatureComparison」を参照することで違いを理解することができる。
 互換性や日本語の導入実績の多さ、YAMAHAのRTXシリーズルータで正式に対応がアナウンスされたこと等から、通常日本で利用する場合は「Openswan」が良いみたい。


■その他考慮しなかったが、IPSecを用いてVPNを張ることができるソフトウェア
 ・Racoon2 - IKEv2に対応した鍵交換ツール。Racoonの後継。IKEv2が必要な場合は要検討。
 ・Pipsec - 1999年に更新停止している。
 ・Cisco vpn client - Cisco systemsやJuniper Networksのリモート接続サーバ・FWとVPN接続を行うことを目的としたソフトウェア


2.接続の検証環境

今回はLinux<=>Linuxで構築するため、Linux NativeのIPv6実装を用いてIPsec通信を確立させる。

 ■ハードウェア : VMware Server上に構築したVirtual Machine
 ■OS       : Ubuntu Server(8.0.4 TLS)
 ■ネットワーク :

          [ルータ]
            |
            |
       [Host Computer]
            | ← VMware NW
            |
   [m-ubuntu] -------- [d-ubuntu]
   192.168.0.5       192.168.0.4

m-ubuntu<=>d-ubuntu間でIPsec通信を確立させることを目的とします。


3.接続の検証


■双方のubuntuにipsec-toolsをapt-getを用いて導入する。
 

$sudo apt-get install ipsec-tools
 


■IKE交換daemon「racoon」・セキュリティ・ポリシーの設定
 racoonに関する二つのファイルを編集し、IPsecのSAD・SPDポリシーに関するファイルを一つ作成します。

 

(m-ubuntu)

$sudo vi /etc/racoon/racoon.conf  //racoonの設定
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";

remote anonymous {
exchange_mode main,aggressive;
my_identifier address;
lifetime time 28800 sec;
initial_contact off;
proposal {
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group 2;
}
}

sainfo anonymous {
pfs_group 1;
lifetime time 2 min;
encryption_algorithm 3des;
authentication_algorithm hmac_sha1;
compression_algorithm deflate;
}

$sudo vi /etc/racoon/psk.txt  //事前共有鍵の設定

# IPv4/v6 addresses
192.168.0.5 80704eb43ae0d51bc89e9b0e55564e598f1fb9480d9a7ee7


$sudo vi /etc/racoon/setkey.conf  //SAD・SPDポリシーの設定適用ファイルの作成

spdflush;
spdadd 192.168.0.5 192.168.0.4 any -P out ipsec esp/transport//require;
spdadd 192.168.0.4 192.168.0.5 any -P in ipsec esp/transport//require;


 

(d-ubuntu)

$sudo vi /etc/racoon/racoon.conf

path pre_shared_key "/etc/racoon/psk.txt";
#path certificate "/etc/racoon/certs";


remote anonymous {
exchange_mode main,aggressive;
my_identifier address;
lifetime time 28800 sec;
initial_contact off;
proposal {
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group 2;
}
}

sainfo anonymous {
pfs_group 1;
lifetime time 2 min;
encryption_algorithm 3des;
authentication_algorithm hmac_sha1;
compression_algorithm deflate;
}


$sudo vi /etc/racoon/psk.txt

# IPv4/v6 addresses
192.168.0.5 80704eb43ae0d51bc89e9b0e55564e598f1fb9480d9a7ee7


$sudo vi /etc/racoon/setkey.conf

spdflush;
spdadd 192.168.0.5 192.168.0.4 any -P in ipsec esp/transport//require;
spdadd 192.168.0.4 192.168.0.5 any -P out ipsec esp/transport//require;



■racoonの起動/SAD・SPD Policyの適用

 

■m-ubuntu
$sudo setkey -F               //SAD・SPDポリシーの内容の初期化
$sudo setkey -f /etc/racoon/setkey.conf   //setkey.confに記述したSAD・SPDポリシーの反映
$sudo racoon -F -l /var/log/racoon.log   //racoonをフォアグラウンドモードで立ち上げ

■d-ubuntu
$sudo setkey -F
$sudo setkey -f /etc/racoon/setkey.conf
$sudo racoon -F -l /var/log/racoon.log



■動作確認
m-ubuntu(192.168.0.5)=>d-ubuntu(192.168.0.4)間でPingを送信し、IPsec通信を行わせる。



m-ubuntu$ping 192.168.0.4


↓フォアグラウンドモードで起動していたRacoonがこの様なメッセージを吐き出します。
Foreground mode.
2009-12-23 11:05:21: INFO: @(#)ipsec-tools 0.6.7 (http://ipsec-tools.sourceforge.net)
2009-12-23 11:05:21: INFO: @(#)This product linked OpenSSL 0.9.8g 19 Oct 2007 (http://www.openssl.org/)
2009-12-23 11:05:21: INFO: 127.0.0.1[500] used as isakmp port (fd=6)
2009-12-23 11:05:21: INFO: 127.0.0.1[500] used for NAT-T
2009-12-23 11:05:21: INFO: 192.168.0.5[500] used as isakmp port (fd=7)
2009-12-23 11:05:21: INFO: 192.168.0.5[500] used for NAT-T
2009-12-23 11:05:21: INFO: ::1[500] used as isakmp port (fd=8)
2009-12-23 11:05:21: INFO: fe80::20c:29ff:fe6a:9419%eth0[500] used as isakmp port (fd=9)
2009-12-23 11:07:00: INFO: unsupported PF_KEY message REGISTER
2009-12-23 11:07:00: ERROR: libipsec failed pfkey check (Invalid SA type)
2009-12-23 11:08:05: INFO: IPsec-SA request for 192.168.0.4 queued due to no phase1 found.
2009-12-23 11:08:05: INFO: initiate new phase 1 negotiation: 192.168.0.5[500]<=>192.168.0.4[500]
2009-12-23 11:08:05: INFO: begin Identity Protection mode.
2009-12-23 11:08:05: INFO: received Vendor ID: DPD
2009-12-23 11:08:05: INFO: ISAKMP-SA established 192.168.0.5[500]-192.168.0.4[500] spi:252d08287285431f:1f9012cfd77cc00c
2009-12-23 11:08:06: INFO: initiate new phase 2 negotiation: 192.168.0.5[500]<=>192.168.0.4[500]
2009-12-23 11:08:06: INFO: IPsec-SA established: ESP/Transport 192.168.0.4[0]->192.168.0.5[0] spi=149950956(0x8f011ec)
2009-12-23 11:08:06: INFO: IPsec-SA established: ESP/Transport 192.168.0.5[0]->192.168.0.4[0] spi=163692534(0x9c1bff6)
2009-12-23 11:09:42: INFO: IPsec-SA expired: ESP/Transport 192.168.0.4[0]->192.168.0.5[0] spi=149950956(0x8f011ec)
2009-12-23 11:09:42: INFO: initiate new phase 2 negotiation: 192.168.0.5[500]<=>192.168.0.4[500]
2009-12-23 11:09:42: INFO: IPsec-SA expired: ESP/Transport 192.168.0.5[0]->192.168.0.4[0] spi=163692534(0x9c1bff6)
2009-12-23 11:09:42: INFO: IPsec-SA established: ESP/Transport 192.168.0.4[0]->192.168.0.5[0] spi=176303262(0xa822c9e)
2009-12-23 11:09:42: INFO: IPsec-SA established: ESP/Transport 192.168.0.5[0]->192.168.0.4[0] spi=267336729(0xfef3c19)
2009-12-23 11:10:06: INFO: IPsec-SA expired: ESP/Transport 192.168.0.4[0]->192.168.0.5[0] spi=149950956(0x8f011ec)
2009-12-23 11:10:06: INFO: IPsec-SA expired: ESP/Transport 192.168.0.5[0]->192.168.0.4[0] spi=163692534(0x9c1bff6)
2009-12-23 11:11:18: INFO: IPsec-SA expired: ESP/Transport 192.168.0.4[0]->192.168.0.5[0] spi=176303262(0xa822c9e)
2009-12-23 11:11:18: INFO: initiate new phase 2 negotiation: 192.168.0.5[500]<=>192.168.0.4[500]
2009-12-23 11:11:18: INFO: IPsec-SA expired: ESP/Transport 192.168.0.5[0]->192.168.0.4[0] spi=267336729(0xfef3c19)
2009-12-23 11:11:18: INFO: IPsec-SA established: ESP/Transport 192.168.0.4[0]->192.168.0.5[0] spi=56596390(0x35f97a6)
2009-12-23 11:11:18: INFO: IPsec-SA established: ESP/Transport 192.168.0.5[0]->192.168.0.4[0] spi=215720177(0xcdba0f1)
2009-12-23 11:11:42: INFO: IPsec-SA expired: ESP/Transport 192.168.0.4[0]->192.168.0.5[0] spi=176303262(0xa822c9e)
2009-12-23 11:11:42: INFO: IPsec-SA expired: ESP/Transport 192.168.0.5[0]->192.168.0.4[0] spi=267336729(0xfef3c19)
2009-12-23 11:12:54: INFO: IPsec-SA expired: ESP/Transport 192.168.0.4[0]->192.168.0.5[0] spi=56596390(0x35f97a6)


IPsec-SA established!で接続が確立されていると信じたい。
確認はPing中にtcpdumpを起動して、SAやらESPやらが確認できればok。
接続できていることが確認できたら、後はinit.dなり-Fを抜いて起動するなりすればokぽ。

posted by ぴぺ at 12:01| Comment(0) | TrackBack(219) | UNIX系 | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。