
      
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 & OSS 記事ランキング
		
		
			本日
			月間