IPsecの連載は6回目を迎えました。最終回の今回は,IPsecの実際の使い方を見てみましょう。エンド-エンドのトランスポート・モードIPsecを使用して,図1の構成でサーバーなどに外出先から安全にアクセスする例を紹介します。

図1

 この例では,IPv6化されたIPsecを容易に利用できるFreeBSDによる実現方法を紹介します。使用したソフトウェアのバージョンと,IPsecのパラメータは次の通りです。

OS:FreeBSD 4.7-RELEASE #0
IKEデーモン:racoon-20020507a

◆Phase 1
認証方式:HMAC-SHA-1
暗号化アルゴリズム:3DES
Diffie-Hellmanグループ:2
認証方式:Pre-Shared Key
SA Lifetime:3時間
IDの種類:FQDN
モード:Aggressive Mode

◆Phase 2
IPsecアルゴリズム:認証付ESP
暗号化アルゴリズム:3DES
認証アルゴリズム:HMAC-SHA-1
モード:トランスポートモード
SA lifetime:1時間
PFS:なし

FreeBSDの準備

 FreeBSDはデフォルトの状態でIPsecを使用することはできません。IPsecを使えるようにカーネルを再構築する必要があります。

 /usr/src/sys/i386/confに移動して,カーネル・コンフィグファイルに次の三行を追加します。

options IPSEC
options IPSEC_ESP
options IPSEC_DEBUG

 つづいて,

config <カーネル・コンフィグファイル名>

を実行してカーネル再構築に必要なファイル群を生成します。

cd ../../compile/<カーネルコンフィグファイル名>

で,新しいカーネル用のソースが入ったディレクトリに移動し,

make depend && make && make install

で,IPsec対応の新しいカーネルを構築,インストールします。無事に終了すれば,再起動することでIPsec対応の新しいカーネルで立ち上がってきます。

 次はFreeBSDの標準IKEデーモンであるracoonをインストールします。racoonのインストールはパッケージを利用すると便利です。/stand/sysinstallコマンドでsysinstallツールを起動し,Configure->Packagesに移ります。ネットワークからダウンロードしてインストールする場合はFTPなど,CD-ROMでパッケージを持っている場合はCD-ROMを選択して下さい。そしてsecurityカテゴリの中からracoon-<バージョン番号>を選択し,Installボタンを押します。すると,パッケージのダウンロードとインストールを行ってくれます。

セキュリティ・ポリシーの設定

 IPsec対応が完了したら,セキュリティ・ポリシーを設定しましょう。PC1,PC2ともに「PC2とのすべての通信をIPsec化する」という設定を行います。セキュリティ・ポリシーを記述するファイルをspd.confとして,PC1,PC2それぞれを次のように記述します。

PC1のspd.conf
spdadd ::/0 PC2のアドレス any -P out ipsec esp/transport//require;
spdadd PC2のアドレス ::/0 any -P in ipsec esp/transport//require;

PC2のspd.conf
spdadd PC2のアドレス ::/0 any -P out ipsec esp/transport//require;
spdadd ::/0 PC2のアドレス any -P in ipsec esp/transport//require;

 spd.confを作成したら,

setkey -f spd.conf

でSPDにロードします。setkey -DPでSPDの内容を確認することができます。

IKEの設定

 次はIKEデーモンであるracoonの設定です。/usr/local/etc/racoon/に移動して下さい。racoonはここにあるracoon.confを設定ファイルとして読み込みます。racoon.confの書式はman racoon.confで見ることができます。

 PC1,PC2それぞれに,別ファイルに示すようなracoon.confファイルを作成して下さい。

 なおIPCompは使用しない設定になっていますが,圧縮アルゴリズムの指定を行わないとracoonはエラー終了してしまうため,deflateを指定しておいてください。実際にはIPCompは適用されません。

 次はPre-Shared Keyの設定です。Pre-Shared Keyはracoon.confの最初の方に記述されている次のエントリで指定されるファイルに格納します。

path pre_shared_key "/usr/local/etc/racoon/psk.txt" ;

 ファイルの中身は,今回のシナリオでは次のようになります。

PC1のpsk.txt
pc2.vvv6.jp   secretsecretse

PC2のpsk.txt
pc1.vvv6.jp   secretsecretse

 racoonはこのPre-Shared Keyを格納したファイルがroot以外に読める状態だとエラー終了してしまうので,chmod go-rwx psk.txtなどのコマンドでpsk.txtをrootしか読めない状態にして下さい。

IPsec設定の適用

 以上で設定は完了です。IKEデーモンであるracoonを起動すれば,IKEによるIPsec通信が可能になります。racoonコマンドを実行するだけで,/usr/local/etc/racoon.confを設定ファイルとして,racoonがバックグラウンドでデーモンとして起動します。設定ファイルを明示的に指定したい場合は,racoon -f \<設定ファイル名\>として下さい。またracoon -Fとすればフォアグラウンドで起動させることができます。

IPsec通信確立の確認

 setkeyでセキュリティポリシーをSPDにロードし,racoonを起動しておけば,例えばPC1からPC2にpingを打つことでSAが自動的にネゴシエートされ,数秒後にpingの返事が返ってきます。SAの確立を確認するには,setkey -Dコマンドを使用します。

 これで7月から始めたIPsecについての連載を終えます。ご愛読ありがとうございました。