3.5. IPSec

IPSec は IP の最上位層のプロトコルで、 インターネット上の二つのホストの間にアドホックな暗号化接続を提供するものです。 IPSec の実装は IPv6 では必須で、IPv4 には付け加えることが可能です。 IPSec が IPv6 の一部であると言っても、 ネットワーク管理者から簡単に使えるものだということは意味しません。 IPSec は、マシンの間で自動的に鍵を交換する仕組みを持つ難しさのために、 実装するのが簡単ではありません。 DNS が助けになりますが、これは主流ではありませんし、 よく知られた認証機関は企業での幅広い配備に対して、 適切な証明書の仕組みを未だ配布していません。

3.5.1. FreeS/WAN

FreeS/WAN は IPSec の、 GNU/Linux での人気のある実装です。 その最新のバージョン (1.9.7) では、X.509 を受け入れるためにパッチを あてる必要があります。 このサイトに パッチをあてたバージョンがあります。 GNU/Linux のディストリビューションによってはパッチが既に適用されていますので、 パッケージをチェックしてください。 このバージョンの利点は、FreeS/WAN と DNS CERT のために用いる 証明を生成するのに openssl を使うことができることですが、 さらに具体的に言うと IPSec の Microsoft による実装と うまく通信できるようになります。 さらなる情報については、 Nate のページ を参照してください。

3.5.1.1. FreeS/WAN ゲイトウェイ

あなたの IPSec ゲイトウェイ(例えば host.example.com) の完全に権限のあるドメイン名を CN にして証明書を生成してください。 証明書に署名するのを忘れないように。 二つのファイル newcert.pem と newreq.pem があることになります。 newreq.pem ファイルは秘密鍵と余計な情報を含みますから、 秘密鍵だけを含むように編集しておく必要があります。 --BEGIN RSA PRIVATE KEY-- と --END RSA PRIVATE KEY-- の外側を全て削除してください。 ファイルをゲイトウェイマシンの適切な場所に移してください。 これを安全に行うことに気をつけて。 私のディストリビューションでは、FreeS/WAN の設定ファイルは全て /etc/freeswan におかれていますが、これは状況によって異なるかもしれません。

mv newreq.pem /etc/freeswan/ipsec.d/private/host.example.com.key
mv newcert.pem /etc/freeswan/ipsec.d/host.example.com.pem

あなたのルート証明書を FreeS/WAN の設定ディレクトリにコピーしてください。 証明書だけです。鍵はコピーしないように。

mv cacert.pem /etc/freeswan/ipsec.d/cacerts

失効証明書リストを生成し、正しい場所にコピーします。

openssl ca -genrcl -out /etc/freeswan/ipsec.d/crls/crl.pem

さらにゲイトウェイマシン上で、 以下の行を含めることで ipsec.secrets ファイルを設定します:

: RSA host.example.com.key “
password”

鍵対を生成したときのパスワードを入力。以下のように ipsec.conf を設定します:

config setup
interfaces=%defaultroute
klipsdebug=none
plutodebug=none
plutoload=%search
plutostart=%search
uniqueids=yes
conn %default
keyingtries=1
compress=yes
disablearrivalcheck=no
authby=rsasig
leftrsasigkey=%cert
rightrsasigkey=%cert
conn roadwarrior-net
leftsubnet=<your_subnet>/<your_netmask>
also=roadwarrior
conn roadwarrior
right=%any
left%defaultroute
leftcert=host.example.com.pem
auto=add
pfs=yes

お分かりのように、二つの接続が確立しています。 一つはゲイトウェイマシンへ、一つはゲイトウェイマシンの背後のネットワークへ。 これは、もしあなたがゲイトウェイマシン上でファイアーウォール/NAT の類を 設定しているなら特に便利です。 この設定は有効な証明書を持っている人は誰でもゲイトウェイマシンに 接続できるようになっています。

3.5.1.2. FreeS/WAN クライアント

手続きは同様で、クライアントマシンの完全に権限のあるドメイン名 (例えば client.example.com)を CN にして クライアントマシンの証明書を生成する必要があります。 この証明書はゲイトウェイの証明書と同じ署名機関に署名されていなければなりません。 これによって、その接続が認証されます。

ゲイトウェイのときのように、 以下のファイルを安全に設定用ディレクトリにコピーします。

mv newreq.pem /etc/freeswan/ipsec.d/private/clienthost.example.com.key
mv newcert.pem /etc/freeswan/ipsec.d/clienthost.example.com.pem

またあなたのルート証明書も FreeS/WAN 設定ディレクトリにコピーします。 証明書のみで、鍵はコピーしないように。

mv cacert.pem /etc/freeswan/ipsec.d/cacerts

失効証明書リストを生成し、正しい場所にコピーします。

openssl ca -genrcl -out /etc/freeswan/ipsec.d/crls/crl.pem

最後にあなたのゲイトウェイマシンに証明書もコピーする 必要があります(秘密鍵はコピーしない)。

mv host.example.com.pem /etc/fresswan/ipsec.d/host.example.com.pem

同様に、 クライアントの秘密鍵をロードするために ipsec.secrets ファイルを編集します。

: RSA clienthost.example.com.key “password”

そして、接続を可能にするために以下のように ipsec.conf を編集してください:

config setup
interfaces=%defaultroute
klipsdebug=none
plutodebug=none
plutoload=%search
plutostart=%search
uniqueids=yes
conn %default
keyingtries=0
compress=yes
disablearrivalcheck=no
authby=rsasig
leftrsasigkey=%cert
rightrsasigkey=%cert
conn roadwarrior-net
left=(ip of host)
leftsubnet=(gateway_host_subnet)/(gateway_host_netmask)
also=roadwarrior
conn roadwarrior
left=(ip of host)
leftcert=host.example.com.pem
right=%defaultroute
rightcert=clienthost.example.com.pem
auto=add
pfs=yes

これで VPN リンクを開始することができます。

ipsec auto --up roadwarrior
ipsec auto --up roadwarrior-net

自動的にこのリンクを開始するためには、設定ファイルの 'auto=add' を 'auto=start' に置き換えます。

3.5.1.3. MS Windows 2000/XP クライアント

この手続きは FreeS/WAN クライアントと同じです。 winhost.example.com の CN で証明書を生成しますが、 この証明書を .p12 ファイルに変換する必要があります。 “MS-Outlook で証明書を使うには” の章の手続きに従ってください。 ただし、.p12 ファイルはルート CA 証明書: winhost.example.com.p12 と一緒に されていることを確認してください。

加えて、以下の出力に注意:

openssl x509 -in cacert.pem -noout -subject

このファイルを安全に MS-Windonws マシンにコピーします。

Marcus Muller 氏の ipsec.exe ユーティリティ を、例えば c:\ipsec ディレクトリにインストールする必要があります。

コンソール (Micorsoft Management Console, MMC) を開いて、 「追加/削除('Add/Remove Snap-in')」のところで「追加('Add')」をクリックし、 「証明書('Certificates')」をクリックすると、「追加」で 「コンピュータアカウント('Computer Account')」を選び、 そして「次('Next')」に行きます。 「ローカルコンピュータ(Local Computer')」を選んで、 「終了('Finish')」、「閉じる('Close')」をクリックして 最後に「OK」です。

これで .p12 証明書を追加できます。

プラス矢印を「証明書(ローカルコンピュータ)」でクリックして、 「パーソナル」を右クリック、 そして「全てのタスク」をクリック、そして「インポート」で「次」をクリックします。 .p12 ファイルへのパスをタイプし(またはブラウズしてファイルを選択し)、 「次」をクリックします。 エクスポート用のパスワードをタイプして、「次」をクリックします。 「証明書の種類に基づいて自動的に証明書庫を選択」を選び、 「次」をクリックします。 「終了」をクリックして、ポップアップしたプロンプトに「Yes」と答えます。 MMC を終了して、毎回 Snap In を再追加する必要がないように、 ファイルとして保存します。

ipsecpol.exe (Windows2000) または ipseccmd.exe (Windows XP) を ipsec ユーティリティのドキュメントに書かれているようにインストールします。 (Windows マシン上で)ipsec.conf ファイルを編集して、 "RightCA" を 'openssl x509 -in cacert.pem -noout -subject' の出力で置き換え、 以下のようにフォーマットし直します。 (以下の例に従って、 / をコンマに変え、フィールドの名前をいくつか変更する必要があります。):

conn roadwarrior 
left=%any 
right=(ip_of_remote_system) 
rightca="C=FJ, ST=Fiji, L=Suva, O=SOPAC, OU=ICT, CN=SOPAC Root"
network=auto 
auto=start 
pfs=yes
conn roadwarrior-net 
left=%any 
right=(ip_of_remote_system) 
rightsubnet=(your_subnet)/(your_netmask)
rightca="C=FJ, ST=Fiji, L=Suva, O=SOPAC, OU=ICT, CN=SOPAC Root" 
network=auto 
auto=start 
pfs=yes

リンクを開始しましょう。

'ipsec.exe' コマンドを走らせます。以下が出力の例です:

C:\ipsec>ipsec 
IPSec Version 2.1.4 (c) 2001,2002 Marcus Mueller 
Getting running Config ... 
Microsoft's Windows XP identified 
Host name is: (local_hostname) 
No RAS connections found. 
LAN IP address: (local_ip_address) 
Setting up IPSec ...
Deactivating old policy... 
Removing old policy...
Connection roadwarrior: 
MyTunnel : (local_ip_address)
MyNet : (local_ip_address)/255.255.255.255 
PartnerTunnel: (ip_of_remote_system) 
PartnerNet : (ip_of_remote_system)/255.255.255.255 
CA (ID) : C=FJ, ST=Fiji, L=Suva, O=SOPAC, OU=ICT, CN=SOPAC Root... 
PFS : y 
Auto : start 
Auth.Mode : MD5 
Rekeying : 3600S/50000K 
Activating policy...
Connection roadwarrior-net: 
MyTunnel : (local_ip_address) 
MyNet : (local_ip_address)/255.255.255.255 
PartnerTunnel: (ip_of_remote_system) 
PartnerNet : (remote_subnet)/(remote_netmask) 
CA (ID) : C=FJ, ST=Fiji, L=Suva, O=SOPAC, OU=ICT, CN=SOPAC Root... 
PFS : y 
Auto : start 
Auth.Mode : MD5 
Rekeying : 3600S/50000K 
Activating policy...
C:\ipsec>

ここで、ゲイトウェイホストに ping してみてください。 'Negotiateing IP Security'(「IP セキュリティのネゴシエーションをしています」) と二三回表示されて、ping の応答が帰ってくるはずです。 これは二三回の試行が必要かもしれないことに注意してください。 T1 からケーブルモデム上の VPN サーバにヒットするのに、 3, 4 回の ping がかかるのが普通です。 リモートエンド上でイントラネットワークについても同じことをしてください。 ちゃんとやり遂げましょう!