FreeS/WANによるIPSecの導入と運用[後編]
LinuxでIPSecを使おう

宮本 久仁男<kmiya@coe.nttdata.co.jp>
NTTデータ COEシステム本部
システム技術開発部第三技術開発担当
2002/3/5

RSA鍵ペアを利用した暗号化通信の設定

 暗号化通信とその様子が分かったところで、少し条件を変えた暗号化通信の設定を行ってみましょう。

暗号化通信ポリシー

 事前共有鍵を利用した場合から1カ所だけ変更します。

  • エンドツーエンドで暗号化通信を行う
  • SAについてはIKEによる自動設定
  • IPSec通信時にパケットを暗号化する方式は3DES
  • RSA鍵ペアを利用する

 4番目が、事前共有鍵から「RSA鍵ペア」に変わっていることに注目してください。RSA鍵ペアを利用する以上、暗号化通信設定にはそれを作成する手順が入ります。

RSA鍵ペアの作成

 RSA鍵ペアを用いる場合は、公開鍵と秘密鍵のペアを事前に作成し、相手に公開鍵を渡す必要があります。

 鍵ペアは、ipsecスクリプトを使って作成します。例えば、

# /usr/local/sbin/ipsec rsasigkey 1024 > keypair

とすることで、「keypair」という名前の1024bit長のRSA鍵ペアを格納したファイルが生成されます。以下に生成されたRSA鍵ペアの例を示します。

002
    # for signatures only, UNSAFE FOR ENCRYPTION
    #pubkey=0sAQOIH7e+H7VhqUUCjms7A6XPQEKXK5GwPhEBZLcjyzJn4jwYlIGy+
iJ1QfTKRxelt9kQ2JroXGwADptQsukIUpSoZ0N2btUBV+F616MKPtLq6+SksYBbkdVm
/z5/eN0jTP69PQdodlnr/5KnZf0378Qe/NHFHNFs5DSvieq3tvPjew==
    #IN KEY 0x4200 4 1 AQOIH7e+H7VhqUUCjms7A6XPQEKXK5GwPhEBZLcjyzJn4jw
YlIGy+iJ1QfTKRxelt9kQ2JroXGwADptQsukIUpSoZ0N2btUBV+F616MKPtLq6+SksYB
bkdVm/z5/eN0jTP69PQdodlnr/5KnZf0378Qe/NHFHNFs5DSvieq3tvPjew==
    # (0x4200 = auth-only host-level, 4 = IPSec, 1 = RSA)
    Modulus: 0x881fb7be1fb561a945028e6b3b03a5cf4042972b91b03e110164b
723cb3267e23c189481b2fa227541f4ca4717a5b7d910d89ae85c6c000e9b50b2e
9085294a86743766ed50157e17ad7a30a3ed2eaebe4a4b1805b91d566ff3e7f78dd
234cfebd3d07687659ebff92a765fd37efc41efcd1c51cd16ce434af89eab7b6f3e37b
    PublicExponent: 0x03
    # everything after this point is secret
    PrivateExponent: 0x16aff3f50548e59c362b17bc89d5f0f7e00b1931ed9d5
fad803b73db4c8866a5b4aec36af329b068e053770bd946494ed82419d164bcaaad19
e2c87c2c0dc371254a786b4bb361a69e790bf2c0ade74e0fe4796437cef6ce317179f
10f2bcd6cdb5e0f1854bc5b68f410a63d0c6cb01b513622440eaac59a8ca9fcc4da
1cc0fb
    Prime1: 0xfeb2e4cf120248313214abb197db37bb83e6ddf7b3a694d841e1b5a
017bff1391c8abab6545443a54c87803233e79b90cdcaa318bfca090dd425ee4cb575
a86b
    (中略)
    Exponent1: 0xa9cc988a0c01857621631d210fe77a7d0299e94fcd19b8902
bebce6aba7ff6261307272438382d18ddafaacc229a67b5de871765d5315b5e8d6
e9eddce4e7047
    (中略)
    Coefficient: 0xfbd113b31c1d71c694b620ad0f1aff5588f81242796a139a
5f2d83b163569aa46472fdfe0922f450ff0b18bc73d21b11665283d36c6f8e3e2
cc4b32bb8985a8e

 なお、この鍵ペアには秘密鍵が含まれますので、取り扱いには十分に注意してください。

/etc/ipsec.confの設定

 次に/etc/ipsec.confを変更します。実際の設定はリスト4リスト5を参照してください。事前共有鍵のときに作成したものを基に、

  • authbyパラメータの変更
  • leftrsasigkeyパラメータの追加
  • rightrsasigkeyパラメータの追加

を行っています。

config setup
        interfaces="ipsec0=eth0"
        klipsdebug=none
        plutodebug=none
        plutoload=%search
        plutostart=%search

# defaults for subsequent connection descriptions
conn %default
        type=transport
        right=10.1.87.157
        authby=rsasig
        rightrsasigkey=0sAQOIH7e+H7VhqUUCjms7A6XPQEKXK5GwPhEBZLcjyzJn4
jwYlIGy+iJ1QfTKRxelt9kQ2JroXGwADptQsukIUpSoZ0N2btUBV+F616MKPtLq6+SksYB
bkdVm/z5/eN0jTP69PQdodlnr/5KnZf0378Qe/NHFHNFs5DSvieq3tvPjew==
        pfs=no

conn kame
        left=10.1.87.182
        leftrsasigkey=0sAQPp4LSY5zm2qgU9w1Pc/vnvSMT85jBJrHbgd2lCu9/Jq
GYTudPhFikeIUV8MulmZWOLm3LxHkdJuD47cFkngLP9uVSSypMas0KbFZvNlFwMGkAXap
Xz95qLIsKxgwoaMSbZzd3KU9y3o5DX2vu45zW7n+phLaneMevRl0TLYTNsdQ==
        auto=start
リスト4 tripmachineの/etc/ipsec.conf(RSA鍵使用時)

# /etc/ipsec.conf - FreeS/WAN IPSEC configuration file

config setup
        interfaces="ipsec0=eth0"
        klipsdebug=none
        plutodebug=none
        plutoload=%search
        plutostart=%search

# defaults for subsequent connection descriptions
conn %default
        type=transport
        right=10.1.87.182
        rightrsasigkey=0sAQPp4LSY5zm2qgU9w1Pc/vnvSMT85jBJrHbgd2lCu9/
JqGYTudPhFikeIUV8MulmZWOLm3LxHkdJuD47cFkngLP9uVSSypMas0KbFZvNlFwMGk
AXapXz95qLIsKxgwoaMSbZzd3KU9y3o5DX2vu45zW7n+phLaneMevRl0TLYTNsdQ==
        authby=rsasig
        pfs=no

conn kame
        left=10.1.87.157
        leftrsasigkey=0sAQOIH7e+H7VhqUUCjms7A6XPQEKXK5GwPhEBZLcjyzJn
4jwYlIGy+iJ1QfTKRxelt9kQ2JroXGwADptQsukIUpSoZ0N2btUBV+F616MKPtLq6+Sk
sYBbkdVm/z5/eN0jTP69PQdodlnr/5KnZf0378Qe/NHFHNFs5DSvieq3tvPjew==
        auto=start
リスト5 bomberの/etc/ipsec.conf(RSA鍵使用時)

 leftrsasigkeyパラメータおよびrightrsasigkeyパラメータには、生成したRSA鍵ペアファイルの中に格納されている「#pubkey=」で始まる行の内容を設定します。もちろん、「left〜」「right〜」となっているからには、それぞれ対応したホストで生成した鍵ペアに記述された内容を設定する必要があります。

/etc/ipsec.secretsの設定

 実際の設定をリスト6に示します。事前共有鍵のときとは異なり、鍵の種別指定とその内容が含まれます。

: RSA {
        # RSA 1024 bits   tripmachine.xxxx.co.jp   Fri Feb
 15 20:12:45 2002
        # for signatures only, UNSAFE FOR ENCRYPTION
        #pubkey=0sAQOIH7e+H7VhqUUCjms7A6XPQEKXK5GwPhEBZLcjyzJn4jwYlIGy
+iJ1QfTKRxelt9kQ2JroXGwADptQsukIUpSoZ0N2btUBV+F616MKPtLq6+SksYBbkdVm/z
5/eN0jTP69PQdodlnr/5KnZf0378Qe/NHFHNFs5DSvieq3tvPjew==
        #IN KEY 0x4200 4 1 AQOIH7e+H7VhqUUCjms7A6XPQEKXK5GwPhEBZLcjyzJ
n4jwYlIGy+iJ1QfTKRxelt9kQ2JroXGwADptQsukIUpSoZ0N2btUBV+F616MKPtLq6+Sks
YBbkdVm/z5/eN0jTP69PQdodlnr/5KnZf0378Qe/NHFHNFs5DSvieq3tvPjew==
        # (0x4200 = auth-only host-level, 4 = IPSec, 1 = RSA)
        Modulus: 0x881fb7be1fb561a945028e6b3b03a5cf4042972b91b03e11016
4b723cb3267e23c189481b2fa227541f4ca4717a5b7d910d89ae85c6c000e9b50b2e90
85294a86743766ed50157e17ad7a30a3ed2eaebe4a4b1805b91d566ff3e7f78dd234cf
ebd3d07687659ebff92a765fd37efc41efcd1c51cd16ce434af89eab7b6f3e37b
        PublicExponent: 0x03
        # everything after this point is secret
        PrivateExponent: 0x16aff3f50548e59c362b17bc89d5f0f7e00b1931ed9
d5fad803b73db4c8866a5b4aec36af329b068e053770bd946494ed82419d164bcaaad1
9e2c87c2c0dc371254a786b4bb361a69e790bf2c0ade74e0fe4796437cef6ce317179f
10f2bcd6cdb5e0f1854bc5b68f410a63d0c6cb01b513622440eaac59a8ca9fcc4da1cc
0fb
        Prime1: 0xfeb2e4cf120248313214abb197db37bb83e6ddf7b3a694d841e1
b5a017bff1391c8abab6545443a54c87803233e79b90cdcaa318bfca090dd425ee4cb5
75a86b
        (中略)
        Exponent1: 0xa9cc988a0c01857621631d210fe77a7d0299e94fcd19b8902
bebce6aba7ff6261307272438382d18ddafaacc229a67b5de871765d5315b5e8d6e9ed
dce4e7047
        (中略)
        Coefficient: 0xfbd113b31c1d71c694b620ad0f1aff5588f81242796a139
a5f2d83b163569aa46472fdfe0922f450ff0b18bc73d21b11665283d36c6f8e3e2cc4b
32bb8985a8e
        }
リスト6 tripmachineの/etc/ipsec.secrets(RSA鍵使用時)

 なお、このファイルは内容にRSA鍵ペアのうちの秘密鍵を含むので、管理者以外は読めないようにパーミッションを設定してください。

暗号化通信の様子

 ここでも暗号化通信の様子をモニタしてみます。例によって、以下のtelnetの様子で試してみました。

[root@tripmachine /etc]# telnet bomber
Trying 10.1.87.182...
Connected to bomber.xxxx.co.jp.
Escape character is '^]'.
login: kmiya
Password:
Last login: Mon Feb 18 11:49:58 from tripmachine
[kmiya@bomber ~]%

 これをパケットダンプした様子は以下のとおりです。このように、パケットの流れが分からなくなっています。

[root@bomber kmiya]# tcpdump host tripmachine and bomber
tcpdump: listening on eth0
11:50:58.779154 tripmachine.500 > bomber.500: udp 176 (DF)
11:50:58.779674 bomber.500 > tripmachine.500: udp 80 (DF)
11:50:58.840242 tripmachine.500 > bomber.500: udp 244 (DF)
11:50:58.970237 bomber.500 > tripmachine.500: udp 244 (DF)
11:50:59.106209 tripmachine.500 > bomber.500: udp 172 (DF)
11:50:59.151514 bomber.500 > tripmachine.500: udp 172 (DF)
11:50:59.161343 tripmachine.500 > bomber.500: udp 140 (DF)
11:50:59.163783 bomber.500 > tripmachine.500: udp 116 (DF)
11:50:59.192704 tripmachine.500 > bomber.500: udp 52 (DF)
11:50:59.923218 tripmachine > bomber: ip-proto-50 76 (DF)
11:50:59.923515 bomber > tripmachine: ip-proto-50 76 (DF)
11:50:59.923819 tripmachine > bomber: ip-proto-50 68 (DF)
11:50:59.924459 tripmachine > bomber: ip-proto-50 92 (DF)

今回のまとめ

 今回の記事では、FreeS/WANのコンパイル/インストールから、FreeS/WANをインストールしたホスト同士での通信設定と確認を行いました。ここまでで、FreeS/WANを用いた暗号化通信についてはお分かりいただけたと思います。

 しかし、Linux以外のOSとも暗号化通信したいという方も多いと思います。今回はFreeS/WANだけを扱いましたが、近日中にFreeS/WAN とそれ以外のIPSecスタックとの相互接続について紹介する予定です。

参照サイト

2/2

Index
FreeS/WANによるIPSecの導入と運用[後編]
− LinuxでIPSecを使おう −
  Page 1
事前共有鍵を利用した暗号化通信の設定
 動作確認用ネットワーク環境
 暗号化通信ポリシーの決定
 /etc/ipsec.confの設定
 /etc/ipsec.secretsの設定
 暗号化通信のモニタリング
 暗号化通信の内容のモニタリング
  Page 2
RSA鍵ペアを利用した暗号化通信の設定
 暗号化通信ポリシー
 RSA鍵ペアの作成
 /etc/ipsec.confの設定
 /etc/ipsec.secretsの設定
 暗号化通信の様子
今回のまとめ
 参照サイト

Linux Square全記事インデックス


 Linux Squareフォーラム セキュリティ関連記事
連載:習うより慣れろ! iptablesテンプレート集(全4回)
初心者にとって、iptablesは難しい。そこで、学習の第1歩としてテンプレートを自分の環境に適応させることから始めよう
連載:ゼロから始めるLinuxセキュリティ(全11回)
奥が深いセキュリティ対策の世界をゼロから解説。ホストレベルのセキュリティからファイアウォール、IDSの構築、ログ管理方法まで、システム管理者必見
特集:WebDAV時代のセキュリティ対策[前編]
WebDAVのメソッドは便利な反面、セキュリティホールとなり得る。しかし、適切な対策を講じることでメソッドの危険性は取り除くことができる
特集:FreeS/WANによるIPSecの導入と運用[前編]
LinuxでIPSecを利用するには、「FreeS/WAN」というIPSecスタックを用いることになる。まず、これをインストールすることから始めよう
特集:Linux以外のIPSecスタックとの相互接続[前編]
別のOSや異なるIPSecスタックとの相互接続が可能なら、その用途は大幅に広がる。前編では、FreeBSDのKAMEと相互接続を試みる
特集:sshでセキュアネットワーク
サーバにリモートログインする場合は、暗号化して転送するsshを使おう。sshをサーバとクライアントにインストールすれば、インターネット上でも安全な通信が可能になる

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間