水曜日, 12月 06, 2006

Debian GNU/Linux で IPsec を使う

IPパケットのレベルで暗号化します。
これって、結構劇的に便利な気がします。

IPsecの機能自体はカーネルに組み込まれているので、鍵交換サーバーのracoonをインストールします。
aptitude install racoon

次に、/etc/ipsec-tools.conf の編集
コメントを外して、以下のようにします。
-----------------------------------------------------
## Flush the SAD and SPD

flush;
spdflush;

## Some sample SPDs for use racoon

spdadd 192.168.172.2 192.168.172.1 any -P out ipsec
esp/transport//require;

spdadd 192.168.172.1 192.168.172.2 any -P in ipsec
esp/transport//require;
------------------------------------------------------
IPsecをどの通信に適用するかのルールを設定します。

今度は、/etc/racoon/racoon.conf を編集します。
---------------------------------------------------------------------
remote anonymous {
exchange_mode main,aggressive;
proposal {
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group modp1024;
}
generate_policy off;
}

sainfo anonymous {
pfs_group modp768;
encryption_algorithm 3des;
authentication_algorithm hmac_md5;
compression_algorithm deflate;
}
-----------------------------------------------------------------------
ここではIPsec通信の内容を設定しています。
すべての通信に同じ強度の暗号化を使うなら、上のようにanonymousにすると楽です。

上の設定ファイルにしたがって、ルート証明書へのパスを設定します。
ln -s /etc/ssl/certs/ /etc/racoon/

最後に、/etc/racoon/psk.txt を編集します。
192.168.172.1 EKVq0c5NzjAY3mfMSN3Y4pw0utefVj7i
てな感じに共通秘密鍵を追加します。

この鍵は、
makepasswd --chars 32
なんて風につくれます。ただし、makepasswdのインストールが必要です。

setkey と racoon を再起動すれば、ホスト間での通信がすべて暗号化されます。
プロトコル毎に暗号化したい場合には、racoon.confをもう少し丁寧に書けばいいです。

IPsecを使うと、これまでサービスごとにSSLを使って暗号化していたやりとりがすさまじく簡単になります。
ここでは使ってないですが、サーバー証明書を使った認証もできます。さらに、個人証明書も使えます。
外部向けのHTTPSなんかは無理ですが、内部で使う分にはものすごくシンプルかつ強力です。

0 件のコメント: