IPsec と IKE の管理

仮想プライベートネットワークを構築する方法

この手順では、インターネットで VPN を構築して組織内の 2 つのネットワークを接続する方法について説明します。また、そのネットワーク間のトラフィックを IPsec で保護する方法について説明します。

この手順は、2 つのシステム間のトラフィックを保護する方法 の手順を拡張するものです。この手順では、2 つのマシンを接続するだけでなく、これら 2 つのマシンに接続している 2 つのイントラネットを接続します。この手順における 2 つのマシンはゲートウェイとして機能します。

この手順では、次の設定がすでになされているものとします。

VPN については、仮想プライベートネットワークを参照してください。次の図は、この手順によって設定される VPN を表しています。

この図は、ヨーロッパのオフィスとカリフォルニアのオフィスを接続する VPN の詳細を示しています。

この手順では、次の構成パラメータを使用します。

パラメータ 

ヨーロッパ 

カリフォルニア 

ホスト名 

enigma 

partym 

システムイントラネットインタフェース 

hme1 

hme1 

システムインターネットインタフェース 

hme0 

hme0 

システムイントラネットアドレス (手順 8-point アドレスでもある)

10.16.16.6 

10.1.3.3 

システムインターネットアドレス (手順 8-taddr アドレスでもある)

192.168.116.16 

192.168.13.213 

インターネットルーターの名前 

router-E 

router-C 

インターネットルーターのアドレス 

192.168.116.4 

192.168.13.5 

トンネル名 

ip.tun0

ip.tun0

  1. どれかのシステムのシステムコンソールで、スーパーユーザーになるか、同等の役割を引き受けます。


    注 –

    リモートログインすると、セキュリティ上重要なトラフィックが盗聴される恐れがあります。何らかの方法でリモートログインを保護していても、システム全体のセキュリティがリモートログインセッションレベルに低下します。


  2. 次のコマンドを入力して IP 送信をオフにします。


    # ndd -set /dev/ip ip_forwarding 0
    

    IP 送信をオフにすると、このシステムを経由したネットワーク間のパケット送信ができなくなります。ndd コマンドについては、ndd(1M) のマニュアルページを参照してください。

  3. 次のコマンドを入力して IP の厳密宛先マルチホームをオンにします。


    # ndd -set /dev/ip ip_strict_dst_multihoming 1
    

    IP 厳密宛先マルチホームをオンにすると、システムの宛先アドレスに宛てたパケットは、正しい宛先アドレスに必ず到着します。

    ndd コマンドを使用して IP 送信をオフにし、IP 厳密宛先をオンにすると、システムを流れるパケットの数は少なくなります。マルチホームによって、システムのアドレス宛のパケットを除き、パケットの流れがシャットダウンされるからです。システムアドレスの場合は、マルチホームによって、宛先 IP アドレスに対応するインタフェースに到着するパケットだけが送信されます。

  4. 必要に応じて次の手順を行い、Solaris システム上の大部分 (場合によってはすべて) のネットワークサービスを無効にします。

    1. inetd.conf を編集し、重要なサービス以外のすべてのサービスを削除してから、次のコマンドを入力します。


      # pkill -HUP inetd
      

      注 –

      VPN ルーターは、ほとんどの入力要求を受け付けません。入力トラフィックを受信するすべてのプロセスを無効にする必要があります。たとえば、inetd.conf ファイルの一部をコメントにしたり、SNMP を停止したりします。あるいは、Web サーバーを保護する方法で使用したようなテクニックを使うこともできます。


    2. 重要なサービス以外のすべてのサービスを削除するための inetd.conf の編集をしていない場合は、次のコマンドを入力します。


      # pkill inetd
      
    3. 必要に応じて、次の例のようなコマンドを 1 つまたは複数入力して SNMP、NFS など他のインターネットサービスを無効にします。


      # /etc/init.d/nfs.server stop
      # /etc/init.d/sendmail stop
      

      ネットワークサービスを無効にすると、IP パケットによるシステムへの妨害がなくなります。たとえば、SNMP デーモン、telnet、rlogin を最大限に活用できます。

  5. システムごとに、2 つのシステム間のセキュリティアソシエーションの組を追加します。

    IKE デーモンは、セキュリティアソシエーションを作成するように設定されていれば、セキュリティアソシエーションを自動的に作成します。VPN に IKE を設定するには、次のいずれかの手順を実行します。

    システムで IPv6 アドレスを使用している場合には、手動でセキュリティアソシエーションを作成する必要があります。手順については、IPsec セキュリティアソシエーションを手動で作成する方法を参照してください。

  6. システムごとに、/etc/inet/ipsecinit.conf ファイルを編集して VPN ポリシーを追加します。

    1. たとえば、enigma で、ipsecinit.conf ファイルに次のエントリを入力します。


      # LAN traffic can bypass IPsec.
         {laddr 10.16.16.6 dir both} bypass {}
      
      # WAN traffic uses ESP with 3DES and MD5.
         {} ipsec {encr_algs 3des encr_auth_algs md5}
    2. たとえば、partym で、ipsecinit.conf ファイルに次のエントリを入力します。


      # LAN traffic can bypass IPsec.
         {laddr 10.1.3.3 dir both} bypass {}
      
      # WAN traffic uses ESP with 3DES and MD5.
         {} ipsec {encr_algs 3des encr_auth_algs md5}

    ipsec エントリは、リモートシステムがクリアパケットを送信してくるのを防止します。bypass エントリを指定すると、LAN に属するノードでは、VPN ルーターを、それが LAN の一部であるかのように扱うことができます。

  7. (省略可能) これより高いレベルのセキュリティが必要な場合は、LAN bypass エントリを削除します。

    ipsecinit.conf のエントリは次のようになります。


    # All traffic uses ESP with 3DES and MD5.
       {} ipsec {encr_algs 3des encr_auth_algs md5}

    これによって、LAN 上の各システムが VPN ルーターと通信するには、IPsec の起動が必要になります。

  8. システムごとに、保護トンネル ip.tun0 を設定します。

    このトンネルは、IP から見たもう 1 つの物理的インタフェースを追加します。3 つの ifconfig コマンドを入力してポイントツーポイントインタフェースを作成します。


    # ifconfig ip.tun0 plumb
    
    # ifconfig ip.tun0 system1-point system2-point \
    tsrc system1-taddr tdst system2-taddr encr_algs 3DES encr_auth_algs MD5
    
    # ifconfig ip.tun0 up
    
    1. たとえば、enigma で次のコマンドを入力します。


      # ifconfig ip.tun0 plumb
      
      # ifconfig ip.tun0 10.16.16.6 10.1.3.3   \
      tsrc 192.168.116.16 tdst 192.168.13.213 encr_algs 3DES encr_auth_algs MD5
      
      # ifconfig ip.tun0 up
      
    2. たとえば、partym で次のコマンドを入力します。


      # ifconfig ip.tun0 plumb
      
      # ifconfig ip.tun0 10.1.3.3 10.16.16.6  \
      tsrc 192.168.13.213 tdst 192.168.116.16 encr_algs 3DES encr_auth_algs MD5
      
      # ifconfig ip.tun0 up
      

    ifconfig コマンドに渡すポリシーは、ipsecinit.conf ファイルに指定されているポリシーと同じでなければなりません。リブート時に、各システムは ipsecinit.conf ファイルに指定されているポリシーを使用します。

  9. システムごとに、hme1ip.tun0 インタフェースの ip_forwarding をオンにします。


    # ndd -set /dev/ip hme1:ip_forwarding 1
    
    # ndd -set /dev/ip ip.tun0:ip_forwarding 1
    

    ip_forwarding は、別のインタフェースから到着したパケットを転送できることを意味します。ip_forwarding はまた、送信するパケットがもともとは別のインタフェースから発信されたパケットである可能性も、意味します。パケットを正しく転送するには、受信インタフェースと送信インタフェースの ip_forwarding をオンにしておきます。

    hme1 インタフェースはイントラネットの内部にあるため、hme1ip_forwarding はオンにしておきます。さらに、ip.tun0 はインターネットを通してこれら 2 つのシステムに接続されているため、ip.tun0ip_forwarding はオンにしておきます。

    hme0 インタフェースの ip_forwarding はオフです。そのため、外部からパケットが保護イントラネットに侵入するのを防ぐことができます。外部とはインターネットを意味します。

  10. システムごとに、次のコマンドを入力して、ルーティングプロトコルによってイントラネット内のデフォルトのルートが通知されないようにします。


    # ifconfig hme0 private
    

    hme0ip_forwarding がオフになっていても、ルーティングプロトコルの実装によっては、このインタフェースを通知することがあります。たとえば、in.routed プロトコルは、イントラネット内のピアにパケットが転送される際に hme0 を有効なインタフェースとして通知する場合があります。インタフェースの private フラグを設定すれば、このような通知を防止できます。

  11. hme0 経由のデフォルトルートを手動で追加します。

    このルートは、インターネットに直接アクセスできるルーターでなければなりません。


    # pkill in.rdisc
    
    # route add default router-on-hme0-subnet
    
    1. たとえば、enigma で次のルートを追加します。


      # pkill in.rdisc
      # route add default 192.168.116.4
      
    2. partym で次のルートを追加します。


      # pkill in.rdisc
      # route add default 192.168.13.5
      

      hme0 インタフェースはイントラネットの一部ではありませんが、インターネットを介してそのピアシステムにアクセスする必要があります。hme0 は、自身のピアを見つけるために、インターネットルーティング情報を必要とします。インターネットの残りの要素にとって、VPN システムは、ルーターというよりもホストのような存在です。したがって、デフォルトルーターを使用するか、ルーター発見プロトコルを実行すれば、ピアシステムを見つけることができます。詳細については、route(1M)in.routed(1M) のマニュアルページを参照してください。

  12. リブート後に hme0 がデフォルトルートを使用するように、defaultrouter ファイルを作成します。

    /etc/defaultrouter ファイルに hme0 のデフォルトルーターの IP アドレスを入力します。この手順により、in.rdisc デーモンがリブート時に起動しなくなります。

    1. たとえば、enigma で、そのインターネットルーターを /etc/defaultrouter ファイルに入力します。


      # vi /etc/defaultrouter
      
      192.168.116.4 router-E
    2. partym のインターネットルーターを partym/etc/defaultrouter ファイルに入力します。


      # vi /etc/defaultrouter
      
      192.168.13.5 router-C
  13. システムごとに、ブートシーケンスの初期にルーティングが起こらないようにします。これによって、セキュリティの脆弱性が軽減されます。


    # touch /etc/notrouter
    
  14. VPN がリブート後に開始するように、/etc/hostname.ip.tun0 ファイルを編集します。


    system1-point system2-point tsrc system1-taddr \
    tdst system2-taddr encr_algs 3des encr_auth_algs md5 up
    1. たとえば、enigma で、hostname.ip.tun0 ファイルに次のように追加します。


      10.16.16.6 10.1.3.3 tsrc 192.168.116.16 \
      tdst 192.168.13.213 encr_algs 3DES encr_auth_algs MD5 up
    2. partym で、hostname.ip.tun0 ファイルに次のように追加します。


      10.1.3.3 10.16.16.6 tsrc 192.168.13.213 \
      tdst 192.168.116.16 encr_algs 3DES encr_auth_algs MD5 up
  15. システムごとに、VPN パラメータの一部をブート時に設定するファイルを作成します。このファイルに /etc/rc3.d/S99vpn_setup という名前を付け、次のように入力します。


    ndd -set /dev/ip hme1:ip_forwarding 1
    ndd -set /dev/ip ip.tun0:ip_forwarding 1
    ifconfig hme0 private
    in.routed

    in.routed を使用する代わりに、手動で /etc/rc3.d/S99vpn_setup ファイルにルートを追加することもできます。

  16. システムごとに、次のコマンドを入力してルーティングプロトコルを実行します。


    # in.routed