Solaris のシステム管理 (IP サービス)

第 20 章 IPsec の構成 (手順)

この章では、ネットワークに IPsec を実装する手順について説明します。この手順は、次の作業マップで説明されています。

IPsec の概要については、第 19 章IP セキュリティーアーキテクチャー (概要)を参照してください。IPsec の参考情報については、第 21 章IP セキュリティーアーキテクチャー (リファレンス)を参照してください。

IPsec によるトラフィックの保護 (作業マップ)

次の作業マップに、1 台以上のシステム間で IPsec を設定する手順を示します。ipsecconf(1M)ipseckey(1M)、および ifconfig(1m) のマニュアルページも、それぞれの「例」で役立つ手順を説明しています。

作業 

説明 

説明 

システム間のトラフィックを保護します。 

あるシステムから別のシステムへのパケットを保護します。 

「IPsec で 2 つのシステム間のトラフィックを保護するには」

IPsec ポリシーによる Web サーバーを保護します。 

Web 以外のトラフィックに IPsec の使用を求めます。Web クライアントは、IPsec チェックをバイパスする特定のポートによって識別されます。 

「IPsec を使って Web 以外のトラフィックから Web サーバーを保護する方法」

IPsec ポリシーの表示 

現在実施されている IPsec ポリシーを、ポリシーの実行順序に従って表示します。 

「IPsec ポリシーを表示するには」

乱数を生成します。 

手動で作成するセキュリティーアソシエーションのためにキー作成素材用の乱数を生成します。 

「Solaris System で乱数を生成するには」

『Solaris のシステム管理 (セキュリティサービス)』「pktool コマンドを使用して対称鍵を生成する方法」

手動によるセキュリティーアソシエーションの作成または置き換えを行います。 

次のようなセキュリティーアソシエーション向けのローデータを提供します。 

  • IPsec アルゴリズム名とキー作成素材

  • セキュリティーパラメータインデックスのキー

  • IP 発信元アドレスおよび着信先アドレス

「IPsec セキュリティーアソシエーションを手動で作成する方法」

IPsec がパケットを保護しているかどうかを検査します。 

snoop の出力を調べ、IP データグラムがどのように保護されているかを示すヘッダーをチェックします。

「IPsec によってパケットが保護されていることを確認する方法」

(任意) ネットワークセキュリティーの役割を作成します。 

セキュリティーネットワークを設定できるが、スーパーユーザーより権限が少ない役割を作成します。 

「ネットワークセキュリティーの役割を設定する方法」

IPsec と鍵情報を一連の SMF サービスとして管理します。 

サービスの有効化、無効化、更新、および再起動を行うコマンドを、いつどのように使用するかについて説明します。サービスのプロパティー値を変更するコマンドについても説明します。 

「IKE および IPsec サービスを管理する方法」

セキュリティー保護された仮想プライベートネットワーク (VPN) を設定します。 

インターネットによって切り離されている 2 つのシステム間で IPsec を設定します。 

「IPsec による VPN の保護 (作業マップ) 」

IPsec によるトラフィックの保護

この節では、2 つのシステム間のトラフィックを保護する手順と、Web サーバーを保護する手順について説明します。VPN を保護する手順については、「IPsec による VPN の保護 (作業マップ) 」を参照してください。追加手順では、鍵情報とセキュリティーアソシエーションの提供、IPsec が設定どおり動作しているかどうかの確認を行います。

次の情報は、すべての IPsec 構成作業で使用されます。

ProcedureIPsec で 2 つのシステム間のトラフィックを保護するには

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

始める前に

システムまたは共有 IP ゾーンの IPsec ポリシーの構成は、大域ゾーンで行う必要があります。排他的 IP ゾーンについては、非大域ゾーンで IPsec ポリシーを構成します。

  1. システムコンソール上で、Primary Administrator の役割を引き受けるか、スーパーユーザーになります。

    Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。


    注 –

    リモートログインすると、セキュリティー上重要なトラフィックが盗聴される可能性があります。何らかの方法でリモートログインを保護していても、システムのセキュリティーがリモートログインセッションレベルに低下します。セキュリティー保護されたリモートログインには、ssh コマンドを使用してください。例については、例 20–1 を参照してください。


  2. 各システムでホストエントリを確認します。

    現在のリリースでは、/etc/inet/hosts ファイルにホストエントリを追加します。

    Solaris 10 7/07 リリースより前のリリースを実行しているシステムでは、/etc/inet/ipnodes ファイルに IPv4 と IPv6 のエントリを追加します。次のように、1 つのシステムのエントリは連続してそのファイルに入力します。システムの構成ファイルについては、「TCP/IP 構成ファイル」および第 11 章IPv6 の詳細 (リファレンス)を参照してください。

    IPv4 アドレスだけを持つシステムどうしを接続する場合は、/etc/inet/hosts ファイルに変更を加えます。この例で接続するシステムはどちらも、以前の Solaris リリースを実行しており、IPv6 アドレスを使用しています。

    1. enigma という名前のシステムでは、hosts または ipnodes ファイルに次のように入力します。


      # Secure communication with partym
      192.168.13.213 partym
      2001::eeee:3333:3333 partym
    2. partym という名前のシステムでは、hosts または ipnodes ファイルに次のように入力します。


      # Secure communication with enigma
      192.168.116.16 enigma
      2001::aaaa:6666:6666 enigma

    記号名にネームサービスを使用するのは安全ではありません。

  3. 各システムで IPsec ポリシーファイルを作成します。

    ファイル名は /etc/inet/ipsecinit.conf です。例は、/etc/inet/ipsecinit.sample ファイルを参照してください。

  4. IPsec ポリシーエントリを ipsecinit.conf ファイルに追加します。

    1. enigma システムで、次のポリシーを追加します。


      {laddr enigma raddr partym} ipsec {encr_algs aes encr_auth_algs sha1 sa shared}
    2. partym システムで、同じポリシーを追加します。


      {laddr partym raddr enigma} ipsec {encr_algs aes encr_auth_algs sha1 sa shared}

      IPsec ポリシーエントリの構文については、ipsecconf(1M)のマニュアルページを参照してください。

  5. 各システムで、2 つのシステム間に IPsec SA ペアを追加します。

    インターネットキー交換 (IKE) を設定すると、SA が自動的に生成されます。SA は手動でも追加できます。


    注 –

    キーの生成や保守を手動で行う必要が特にない場合は、IKE を使用すべきです。IKE 鍵管理では、手動での鍵管理よりも強力なセキュリティー効果が得られます。


  6. IPsec ポリシーを有効にします。

  7. IPsec ポリシーファイルの構文を確認します。


    # ipsecconf -c -f /etc/inet/ipsecinit.conf
    

    エラーがあれば修正し、ファイルの構文を確認してから続行します。

  8. IPsec ポリシーを更新します。


    # svcadm refresh svc:/network/ipsec/policy:default
    

    IPsec ポリシーはデフォルトで有効になっているので、「更新」を行います。IPsec ポリシーを無効にしてある場合は有効にしてください。


    # svcadm enable svc:/network/ipsec/policy:default
    
  9. IPsec 用の鍵を有効にします。

    • 手順 5 で IKE を構成した場合は、次のいずれかを実行します。

      • ike サービスが有効になっていない場合は有効にします。


        # svcadm enable svc:/network/ipsec/ike:default
        
      • ike サービスが有効になっている場合は再起動します。


        # svcadm restart svc:/network/ipsec/ike:default
        
    • 手順 5 で鍵を手動で構成した場合は、次のいずれかを実行します。

      • manual-key サービスが有効になっていない場合は有効にします。


        # svcadm enable svc:/network/ipsec/manual-key:default
        
      • manual-key サービスが有効になっている場合は更新します。


        # svcadm refresh svc:/network/ipsec/manual-key:default
        
  10. パケットが保護されていることを確認します。

    手順については、「IPsec によってパケットが保護されていることを確認する方法」を参照してください。


例 20–1 ssh 接続を使用している場合に IPsec ポリシーを追加する

この例では、管理者はスーパーユーザーとして 2 つのシステムの IPsec ポリシーと鍵を構成します。その際、ssh コマンドを使用して 2 番目のシステムにアクセスします。詳細は、ssh(1) のマニュアルページを参照してください。

2 つのシステムが次に通信を行うとき、ssh 接続を使用した通信も含め、通信は IPsec で保護されます。



例 20–2 リブートを行わないで IPsec によるトラフィックの保護

次の例は、Solaris 10 4/09 リリースより前のリリースを実行している場合に役立ちます。つまり、そのようなリリースでは、IPsec はサービスとして管理されません。この例では、テスト環境での IPsec の実装方法を示します。実際の稼働環境では、ipsecconf コマンドを実行するよりもリブートする方が安全です。セキュリティー上の考慮事項については、この例の最後を参照してください。

手順 6 でリブートする代わりに、次のオプションのいずれかを選択します。

セキュリティーについて – ipsecconf コマンドを実行するときには、警告を読んでください。ソケットがすでにラッチされている (使用されている) 場合には、システムへ侵入される恐れがあります。詳細については、ipsecinit.confipsecconf のセキュリティーについて」を参照してください。


ProcedureIPsec を使って Web 以外のトラフィックから Web サーバーを保護する方法

セキュリティー保護された Web サーバーでは、Web クライアントであれば Web サービスと通信できます。セキュリティー保護された Web サーバーでは、Web トラフィック以外のトラフィックは、セキュリティー検査を通る必要があります。次の手順には、Web トラフィックの検査省略手順が含まれています。さらに、この Web サーバーでは、セキュリティー保護されていない DNS クライアント要求を出すことができます。その他のすべてのトラフィックでは、AES と SHA-1 アルゴリズムによる ESP が必要です。

始める前に

IPsec ポリシーの構成は大域ゾーンで行う必要があります。排他的 IP ゾーンについては、非大域ゾーンで IPsec ポリシーを構成します。「IPsec で 2 つのシステム間のトラフィックを保護するには」を完了して、次の条件が成立しています。

  1. システムコンソール上で、Primary Administrator の役割を引き受けるか、スーパーユーザーになります。

    Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。


    注 –

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


  2. セキュリティーポリシー検査を省略するサービスを指定します。

    Web サーバーの場合、TCP ポート 80 (HTTP) と 443 (保護 HTTP) が該当します。Web サーバーが DNS 名検査をするときは、TCP と UDP の両方にポート 53 も組み込む必要がある場合もあります。

  3. Web サーバーの IPsec ポリシーを作成し、有効にします。

    • Solaris 10 4/09 リリース以降では、手順 4 から手順 7 までを実行します。

    • Solaris 10 4/09 リリースより前のリリースを実行している場合は、手順 8 から手順 11 までを実行します。

    手順 12 はすべての Solaris リリースで省略可能です。

  4. Web サーバーのポリシーを IPsec ポリシーファイルに追加します。

    /etc/inet/ipsecinit.conf ファイルに次の行を追加します。


    # Web traffic that web server should bypass.
    {lport  80 ulp tcp dir both} bypass {}
    {lport 443 ulp tcp dir both} bypass {}
    
    # Outbound DNS lookups should also be bypassed.
    {rport 53 dir both} bypass {}
    
    # Require all other traffic to use ESP with AES and SHA-1.
    # Use a unique SA for outbound traffic from the port
    {} ipsec {encr_algs aes encr_auth_algs sha1 sa shared}

    これで、保護トラフィックだけがシステムへのアクセスを許可されます。ただし、手順 4 で説明した、検査を省略するトラフィックは例外です。

  5. IPsec ポリシーファイルの構文を確認します。


    # ipsecconf -c -f /etc/inet/ipsecinit.conf
    
  6. IPsec ポリシーを更新します。


    # svcadm refresh svc:/network/ipsec/policy:default
    
  7. IPsec 用の鍵を更新します。

    これで設定が完了しました。必要に応じて、手順 12 を実行します。

  8. Web サーバーポリシー用のファイルを /etc/inet ディレクトリに 作成します。


    注 –

    次の手順は、Solaris 10 4/09 リリースより前のリリースを実行している Web サーバーを構成するためのものです。


    このファイルにその目的を表す名前を与えます (たとえば、IPsecWebInitFile)。このファイルに次のように入力します。


    # Web traffic that web server should bypass.
    {lport  80 ulp tcp dir both} bypass {}
    {lport 443 ulp tcp dir both} bypass {}
    
    # Outbound DNS lookups should also be bypassed.
    {rport 53 dir both} bypass {}
    
    # Require all other traffic to use ESP with AES and SHA-1.
    # Use a unique SA for outbound traffic from the port
    {} ipsec {encr_algs aes encr_auth_algs sha1 sa shared}

    これで、保護トラフィックだけがシステムへのアクセスを許可されます。ただし、手順 4 で説明した、検査を省略するトラフィックは例外です。

  9. 手順 8 で作成したファイルの内容を /etc/inet/ipsecinit.conf ファイルにコピーします。

  10. IPsecWebInitFile ファイルを読み取り専用アクセス権で保護します。


    # chmod 400 IPsecWebInitFile
    
  11. リブートせずに Web サーバーをセキュリティー保護します。

    次のオプションのいずれかを選択します。

    • 鍵管理に IKE を使用する場合は、in.iked デーモンをいったん停止後、再起動します。


      # pkill in.iked
      # /usr/lib/inet/in.iked
      
    • 手動でキーを管理する場合は、ipseckey および ipsecconf コマンドを実行します。

      ipsecconf コマンドの引数には、 IPsecWebInitFile を使用します。引数に ipsecinit.conf ファイルを使用すると、ipsecconf コマンドは、ファイル内のポリシーがすでにシステムに実装されている場合は、エラーを生成します。


      # ipseckey -c -f /etc/inet/secret/ipseckeys 
      # ipsecconf -a /etc/inet/IPsecWebInitFile 
      

    注意 – 注意 –

    ipsecconf コマンドの実行時には警告を読んでください。ソケットがすでにラッチされている (使用されている) 場合には、システムへ侵入される恐れがあります。詳細については、ipsecinit.confipsecconf のセキュリティーについて」を参照してください。in.iked デーモンの再起動時にも、同じ警告が表示されます。


    リブートすることもできます。システムをリブートすると、IPsec ポリシーがすべての TCP 接続に適用されます。リブート時に、IPsec ポリシーのファイルで指定したポリシーが TCP 接続で使用されます。

  12. (省略可能) Web 以外のトラフィックのために Web サーバーと通信する場合は、リモートシステムを有効にします。

    リモートシステムの ipsecinit.conf ファイルに次のポリシーを入力します。


    # Communicate with web server about nonweb stuff
    #
    {laddr webserver} ipsec {encr_algs aes encr_auth_algs sha1 sa shared}

    IPsec ポリシーが一致した場合にかぎり、リモートシステムは、非 Web トラフィックを持つ Web サーバーと安全に通信できます。

ProcedureIPsec ポリシーを表示するには

引数を指定しないで ipsecconf コマンドを実行すると、システムに構成されているポリシーを確認できます。

始める前に

ipsecconf コマンドは大域ゾーンで実行する必要があります。排他的 IP ゾーンについては、非大域ゾーンで ipsecconf コマンドを実行します。

  1. Network IPsec Management プロファイルを持つ役割またはスーパーユーザーになります。

    Solaris 10 4/09 リリースより前のリリースを実行している場合、Network IPsec Management プロファイルは使用できません。Network Security プロファイルを使用してください。

    ネットワークセキュリティープロファイルを含む役割を作成し、その役割をユーザーに割り当てるには、「ネットワークセキュリティーの役割を設定する方法」を参照してください。

  2. IPsec ポリシーの表示

    1. 追加された順序でグローバルな IPsec ポリシーエントリを表示します。


      $ ipsecconf
      

      各エントリが、「インデックス」とそのあとに番号が付いて表示されます。

    2. 一致した順序で IPsec ポリシーエントリを表示します。


      $ ipsecconf -l
      
    3. トンネルごとのエントリも含め、IPsec ポリシーエントリを一致した順序で表示します。


      $ ipsecconf -L
      

ProcedureSolaris System で乱数を生成するには

キーを手動で指定する場合、鍵情報はランダムでなければなりません。Solaris システム用の鍵情報は 16 進形式です。ほかのオペレーティングシステムでは、ASCII 形式の鍵情報が必要になる場合があります。ASCII 形式を必要とするオペレーティングシステムと通信する Solaris システム用に鍵情報を生成する方法については、例 23–1 を参照してください。

乱数発生関数がすでにある場合は、それを使用してください。ない場合は、Solaris の /dev/random デバイスを入力として od コマンドを実行できます。詳細は、od(1) のマニュアルページを参照してください。

Solaris 10 4/09 リリースでは、pktool コマンドも使用できます。このコマンドの構文は、od コマンドの構文より単純です。詳細は、『Solaris のシステム管理 (セキュリティサービス)』「pktool コマンドを使用して対称鍵を生成する方法」を参照してください。

  1. 16 進数の乱数を生成します。


    % od -x|-X -A n file | head -n
    
    -x

    8 進数ダンプを 16 進数形式で表示します。16 進数形式は鍵情報を表すのに役立ちます。16 進数を 4 文字単位で表示します。

    -X

    8 進数ダンプを 16 進数形式で表示します。16 進数を 8 文字単位で表示します。

    -A n

    表示から入力オフセットベースを取り除きます。

    file

    乱数のソースとなります。

    head -n

    出力の冒頭の n 行に表示を限定します。

  2. これらの出力を組み合わせて、適切な長さのキーを作成します。

    同じ行にある乱数間のスペースを取り除き、32 文字キーを作成します。32 文字キーの長さは 128 ビットです。セキュリティーパラメータインデックス (SPI) の場合は、8 文字キー 1 個を使用します。そのキーは、0x 接頭辞を使用します。


例 20–3 IPsec のキー素材の生成

次の例は、8 つ 16 進数文字のグループそれぞれに 2 行のキーを表示します。


% od -X -A n /dev/random | head -2
         d54d1536 4a3e0352 0faf93bd 24fd6cad
         8ecc2670 f3447465 20db0b0c c83f5a4b

最初の行で 4 つの数字を組み合わせることで、32 文字のキーを作成できます。0x に続く 8 文字の数字は、0xf3447465 などの適切な SPI 値を提供します。

次の例は、4 つ 16 進数文字のグループそれぞれに 2 行のキーを表示します。


% od -x -A n /dev/random | head -2
         34ce 56b2 8b1b 3677 9231 42e9 80b0 c673
         2f74 2817 8026 df68 12f4 905a db3d ef27

最初の行で 4 つの数字を組み合わせることで、32 文字のキーを作成できます。


ProcedureIPsec セキュリティーアソシエーションを手動で作成する方法

次の手順では、「IPsec で 2 つのシステム間のトラフィックを保護するには」の手順で使用するキー作成素材を提供します。partymenigma という 2 つのシステムの鍵を生成しようとしています。一方のシステムで鍵を生成してから、このシステムの鍵を両方のシステムで使用します。

始める前に

共有 IP ゾーンのキー情報の手動管理は、大域ゾーンで行う必要があります。

  1. SA の鍵情報を生成します。

    16 進のアウトバウンドトラフィックと、同じく 16 進のインバウンドトラフィックには、それぞれ 3 種類の乱数が必要です。

    つまり、1 台のシステムで次の数値を生成する必要があります。

    • spi キーワードの値として、2 つの 16 進数の乱数。1 つはアウトバウンドトラフィック用です。もう 1 つはインバウンドトラフィック用です。それぞれの乱数の最大桁数は 8 桁です。

    • 認証の SHA1 アルゴリズム用として、2 つの 16 進数の乱数。160 ビットのキーの場合、各乱数は 40 桁でなければなりません。1 つは dst enigma 用です。もう 1 つは dst partym 用です。

    • ESP 暗号化の AES アルゴリズム用として、2 つの 16 進数の乱数。256 ビットのキーの場合、各乱数は 64 桁でなければなりません。1 つは dst enigma 用です。もう 1 つは dst partym 用です。

    乱数発生関数がすでにある場合は、それを使用してください。ない場合は、od コマンドを使用できます。手順については、「Solaris System で乱数を生成するには」を参照してください。

  2. いずれかのシステムのシステムコンソールで、Primary Administrator の役割を引き受けるか、スーパーユーザーになります。

    Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。


    注 –

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


  3. SA を作成します。

    • Solaris 10 4/09 リリース以降では、手順 8 から手順 10 までを実行します。

    • Solaris 10 4/09 リリースより前のリリースを実行している場合は、手順 4 から手順 9 までを実行します。

  4. 次のコマンドを入力して ipseckey コマンドモードを有効にします。


    # ipseckey
    
    >

    > プロンプトは、ipseckey コマンドモードであることを示します。

  5. 既存の SA を置き換える場合は、現在の SA を消去してください。


    > flush
    > 

    攻撃者に SA を破る時間を与えないように、キー作成素材は置き換えが必要です。


    注 –

    管理者は、通信システム上のキーの置き換えを調整する必要があります。あるシステムの SA を置き換える場合は、それと通信しているリモートシステムの SA も置き換える必要があります。


  6. SA を作成するには、次のコマンドを実行します。


    > add protocol spi random-hex-string \
    src addr dst addr2 \
    protocol-prefix_alg protocol-algorithm  \
    protocol-prefixkey random-hex-string-of-algorithm-specified-length
    

    次の構文で、フラッシュした SA を置き換えることもできます。

    protocol

    esp または ah を指定します。

    random-hex-string

    16 進数形式の最大 8 桁の乱数を指定します。0x が前置されます。セキュリティーパラメータインデックス (SPI) が受け取る以上の桁数を入力すると、超過部分は無視されます。SPI が受け取るより少ない桁数を入力すると、パディングが行われます。

    addr

    システムの IP アドレスを指定します。

    addr2

    addr のピアシステムの IP アドレスを指定します。

    protocol-prefix

    encr または auth を指定します。encr 接頭辞は esp プロトコルとともに使用されます。auth 接頭辞は ah プロトコルとともに、そして、esp プロトコルを認証する場合に使用されます。

    protocol-algorithm

    ESP または AH のアルゴリズムを指定します。それぞれのアルゴリズムには、特定の長さのキーが必要です。

    認証アルゴリズムには MD5 と SHA1 があります。Solaris 10 4/09 リリース以降では、SHA256 と SHA512 がサポートされています。暗号化アルゴリズムには、DES、3DES、AES、および Blowfish があります。

    random-hex-string-of-algorithm-specified-length

    アルゴリズムによって必要とされる長さをもつ 16 進数の乱数を指定します。たとえば、MD5 アルゴリズムでは、128 ビットキーのため 32 桁の乱数が必要です。3DES アルゴリズムでは、192 ビットキーのため 48 桁の乱数が必要です。

    1. たとえば、enigma システムで出力パケットを保護します。

      手順 1 で生成した乱数を使用します。

      Solaris 10 1/06 の場合:


      > add esp spi 0x8bcd1407 \
      src 192.168.116.16 dst 192.168.13.213 \
      encr_alg aes \
      auth_alg sha1 \
      encrkey c0c65b888c2ee301c84245c3da63127e92b2676105d5330e85327c1442f37d49 \
      authkey 6fab07fec4f2895445500ed992ab48835b9286ff
      >

      注 –

      ピアシステムでは、同じ鍵情報および同じ SPI を使用する必要があります。


    2. enigma システムの ipseckey コマンドモードでは、入力パケットを保護します。

      パケットを保護するには、次のコマンドを入力します。


      > add esp spi 0x122a43e4 \
      src 192.168.13.213 dst 192.168.116.16 \
      encr_alg aes \
      auth_alg sha1 \
      encrkey a2ea934cd62ca7fa14907cb2ad189b68e4d18c976c14f22b30829e4b1ea4d2ae \
      authkey c80984bc4733cc0b7c228b9b74b988d2b7467745
      >

      注 –

      これらのキーと SPI は、SA ごとに変更できます。SA ごとに異なるキーと異なる SPI を割り当てるべきです


  7. ipseckey コマンドモードを終了するには、Control-D キーを押すか、quit と入力します。

  8. /etc/inet/secret/ipseckeys ファイルに鍵情報を追加します。

    Solaris 10 4/09 リリースより前のリリースでは、この手順により、リブート時に IPsec で鍵情報を確実に使用できるようになります。

    /etc/inet/secret/ipseckeys ファイルの行と ipseckey コマンド行の言語が同じになるようにします。

    1. たとえば、enigma システム上の /etc/inet/secret/ipseckeys ファイルは次のようになります。


      # ipseckeys - This file takes the file format documented in 
      #   ipseckey(1m).
      #   Note that naming services might not be available when this file
      #   loads, just like ipsecinit.conf.
      #
      # for outbound packets on enigma
      add esp spi 0x8bcd1407 \
         src 192.168.116.16 dst 192.168.13.213  \
         encr_alg aes \
         auth_alg sha1  \
         encrkey  c0c65b888c2ee301c84245c3da63127e92b2676105d5330e85327c1442f37d49 \
         authkey  6fab07fec4f2895445500ed992ab48835b9286ff
      #
      # for inbound packets
      add esp spi 0x122a43e4 \
         src 192.168.13.213 dst 192.168.116.16 \
         encr_alg aes \
         auth_alg sha1  \
         encrkey a2ea934cd62ca7fa14907cb2ad189b68e4d18c976c14f22b30829e4b1ea4d2ae \
         authkey c80984bc4733cc0b7c228b9b74b988d2b7467745
    2. 読み取り専用ファイルを保護します。


      # chmod 400 /etc/inet/secret/ipseckeys
      
  9. partym システムでこの手順を繰り返します。

    enigma システムの場合と同じ鍵情報を使用します。

    両システムの鍵情報は同じでなければなりません。次の例のように、ipseckeys ファイル内のコメントだけが異なります。コメントが異なるのは、dst enigmaenigma システム上ではインバウンド、partym システム上ではアウトバウンドになるからです。


    # partym ipseckeys file
    #
    # for inbound packets
    add esp spi 0x8bcd1407 \
       src 192.168.116.16 dst 192.168.13.213  \
       encr_alg aes \
       auth_alg sha1  \
       encrkey  c0c65b888c2ee301c84245c3da63127e92b2676105d5330e85327c1442f37d49 \
       authkey  6fab07fec4f2895445500ed992ab48835b9286ff
    #
    # for outbound packets
    add esp spi 0x122a43e4 \
       src 192.168.13.213 dst 192.168.116.16 \
       encr_alg aes \
       auth_alg sha1  \
       encrkey a2ea934cd62ca7fa14907cb2ad189b68e4d18c976c14f22b30829e4b1ea4d2ae \
       authkey c80984bc4733cc0b7c228b9b74b988d2b7467745
  10. manual-key サービスを有効にします。


    # svcadm enable svc:/network/ipsec/manual-key
    

    現在のリリースで鍵を置き換える方法については、例 20–4 を参照してください。


例 20–4 IPsec SA を置き換える

この例では、管理者が現在の Solaris 10 リリースを実行しているシステムを構成しようとしています。管理者は新しい鍵を生成し、ipseckeys ファイルの鍵情報を変更してから、サービスを再起動します。


ProcedureIPsec によってパケットが保護されていることを確認する方法

パケットが保護されていることを確認するには、snoop コマンドで接続をテストします。snoop 出力に表示される接頭辞は、次のとおりです。

始める前に

snoop 出力を作成するためには、スーパーユーザーであるか、それと同等の役割でなければなりません。さらに、接続をテストするためには、両方のシステムにアクセスできなければなりません。

  1. 一方のシステム (たとえば、partym) でスーパーユーザー になります。


    % su -
    Password: Type root password
    # 
  2. partym システムから、リモートシステムからパケットをスヌープする準備をします。

    partym の端末ウィンドウで、enigma システムからパケットをスヌープします。


    # snoop -v enigma
    Using device /dev/hme (promiscuous mode)
  3. リモートシステムからパケットを送信します。

    別の端末ウィンドウで、enigma システムにリモートからログインします。パスワードを入力します。次に、スーパーユーザーになり、enigma システムからのパケットを partym システムに送信します。パケットは、snoop -v enigma コマンドで取り込む必要があります。


    % ssh enigma
    Password: Type your password
    % su -
    Password: Type root password
    # ping partym
    
  4. snoop の出力を調べます。

    partym システムで、冒頭の IP ヘッダー情報のあとに AHESP 情報が含まれている出力を確認します。次のような AHESP の情報は、パケットが保護されていることを示します。


    IP:   Time to live = 64 seconds/hops
    IP:   Protocol = 51 (AH)
    IP:   Header checksum = 4e0e
    IP:   Source address = 192.168.116.16, enigma
    IP:   Destination address = 192.168.13.213, partym
    IP:   No options
    IP:
    AH:  ----- Authentication Header -----
    AH:
    AH:  Next header = 50 (ESP)
    AH:  AH length = 4 (24 bytes)
    AH:  <Reserved field = 0x0>
    AH:  SPI = 0xb3a8d714
    AH:  Replay = 52
    AH:  ICV = c653901433ef5a7d77c76eaa
    AH:
    ESP:  ----- Encapsulating Security Payload -----
    ESP:
    ESP:  SPI = 0xd4f40a61
    ESP:  Replay = 52
    ESP:     ....ENCRYPTED DATA....
    
    ETHER:  ----- Ether Header -----
    ...

Procedureネットワークセキュリティーの役割を設定する方法

役割によるアクセス制御 (RBAC) でシステムを管理している場合は、ネットワーク管理またはネットワークセキュリティー上の役割を提供するためにこの手順を使用します。

  1. ローカルの prof_attr データベースで Network 権利プロファイルを検索します。

    現在のリリースでは、次のような出力が表示されます。


    % cd /etc/security
    % grep Network prof_attr
    Network IPsec Management:::Manage IPsec and IKE...
    Network Link Security:::Manage network link security...
    Network Management:::Manage the host and network configuration...
    Network Security:::Manage network and host security...
    Network Wifi Management:::Manage wifi network configuration...
    Network Wifi Security:::Manage wifi network security...

    Solaris 10 4/09 リリースより前のリリースを実行している場合は、次のような出力が表示されます。


    % cd /etc/security
    % grep Network prof_attr
    Network Management:::Manage the host and network configuration  
    Network Security:::Manage network and host security  
    System Administrator::: Network Management 

    Network Management プロファイルは、System Administrator プロファイルを補完するプロファイルです。System Administrator 権利プロファイルを役割に含めると、その役割は Network Management プロファイルでコマンドを実行できます。

  2. Network Management 権利プロファイルに含まれているコマンドを調べます。


    % grep "Network Management" /etc/security/exec_attr
    Network Management:solaris:cmd:::/usr/sbin/ifconfig:privs=sys_net_config
    …
    Network Management:suser:cmd:::/usr/sbin/snoop:uid=0

    solaris ポリシーコマンドは、特権 (privs=sys_net_config) で実行されます。suser ポリシーコマンドは、スーパーユーザー (uid=0) として実行されます。

  3. サイトでのネットワークセキュリティーの役割の範囲を決定します。

    決定には、手順 1 の権利プロファイルの定義を参考にしてください。

    • すべてのネットワークセキュリティーを扱う役割を作成する場合は、Network Security 権利プロファイルを使用します。

    • 現在のリリースで、IPsec と IKE だけを扱う役割を作成する場合は、Network IPsec Management 権利プロファイルを使用します。

  4. Network Management 権利プロファイルを含むネットワークセキュリティーの役割を作成します。

    Network Management プロファイルに加え、Network Security または Network IPsec Management 権利プロファイルを持つ役割は、ifconfigsnoopipsecconf、および ipseckey コマンドなどを適切な特権で実行できます。

    役割の作成、役割のユーザーへの割り当て、ネームサービスによる変更点の登録については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。


例 20–5 ネットワークセキュリティーの責任を役割に振り分ける

この例では、管理者がネットワークセキュリティーの責任を 2 つの役割に振り分けます。一方の役割は wifi とリンクのセキュリティーを管理し、もう一方の役割は IPsec と IKE を管理します。各役割には、シフトごとに 1 人、合計 3 人を割り当てます。

管理者によって次のように役割が作成されます。


ProcedureIKE および IPsec サービスを管理する方法

次の手順では、IPsec の管理、IKE の管理、および手動での鍵管理に SMF サービスを使用する代表的な方法について説明します。デフォルトでは、policy サービスと ipsecalgs サービスは有効になっています。また、デフォルトでは、ike サービスと manual-key サービスは無効になっています。

  1. IPsec ポリシーを管理するには、次のいずれかを実行します。

    • ipsecinit.conf ファイルに新しいポリシーを追加したあと、policy サービスを更新します。


      # svcadm refresh svc:/network/ipsec/policy
      
    • サービスのプロパティーの値を変更したあと、プロパティーの値を表示し、policy サービスを更新してから再起動します。


      # svccfg -s policy setprop config/config_file=/etc/inet/MyIpsecinit.conf
      # svcprop -p config/config_file policy
      /etc/inet/MyIpsecinit.conf
      # svcadm refresh svc:/network/ipsec/policy
      # svcadm restart svc:/network/ipsec/policy
      
  2. 鍵を自動的に管理するには、次のいずれかを実行します。

    • /etc/inet/ike/config ファイルにエントリを追加したあと、ike サービスを有効にします。


      # svcadm enable svc:/network/ipsec/ike
      
    • /etc/inet/ike/config ファイルのエントリを変更したあと、ike サービスを更新します。


      # svcadm refresh svc:/network/ipsec/ike
      
    • サービスのプロパティーの値を変更したあと、プロパティーの値を表示し、サービスを更新してから再起動します。


      # svccfg -s ike setprop config/admin_privilege=modkeys
      # svcprop -p config/admin_privilege ike
      modkeys
      # svcadm refresh svc:/network/ipsec/ike
      # svcadm restart svc:/network/ipsec/ike
      
    • ike サービスを停止するには、無効にします。


      # svcadm disable svc:/network/ipsec/ike
      
  3. 鍵を手動で管理するには、次のいずれかを実行します。

    • /etc/inet/secret/ipseckeys ファイルにエントリを追加したあと、manual-key サービスを有効にします。


      # svcadm enable svc:/network/ipsec/manual-key
      
    • ipseckeys ファイルを変更したあと、サービスを更新します。


      # svcadm refresh manual-key
      
    • サービスのプロパティーの値を変更したあと、プロパティーの値を表示し、サービスを更新してから再起動します。


      # svccfg -s manual-key setprop config/config_file=/etc/inet/secret/MyIpseckeyfile
      # svcprop -p config/config_file manual-key
      /etc/inet/secret/MyIpseckeyfile
      # svcadm refresh svc:/network/ipsec/manual-key
      # svcadm restart svc:/network/ipsec/manual-key
      
    • 鍵を手動で管理できないようにするには、manual-key サービスを無効にします。


      # svcadm disable svc:/network/ipsec/manual-key
      
  4. IPsec のプロトコルとアルゴリズムのテーブルを変更した場合は、ipsecalgs サービスを更新します。


    # svcadm refresh svc:/network/ipsec/ipsecalgs
    
注意事項

サービスの状態を調べるには、svcs service コマンドを使用します。サービスが maintenance (保守) モードになっている場合は、svcs -x service コマンドの出力に表示されるデバッグのヒントに従ってください。

IPsec による VPN の保護

IPsec トンネルで VPN を保護することができます。Solaris 10 7/07 リリースでは、トンネルはトンネルモードまたはトランスポートモードで使用できます。「トンネルモード」は、ほかのベンダーによって実装された IPsec と相互運用できます。「トランスポートモード」は、以前のバージョンの Solaris OS と相互運用できます。トンネルのモードについては、「IPsec のトランスポートモードとトンネルモード」を参照してください。

トンネルモードのトンネルを使用すると、トラフィックをよりきめ細かく制御できます。トンネルモードでは、内側の IP アドレスに対して、必要に応じて特定の保護をポート単位まで細かく指定できます。

トンネルモードのトンネルを使用して VPN を IPsec で保護する例

図 20–1 IPsec トンネル図

この図は、2 つの LAN を接続する VPN を示しています。各 LAN には 4 つのサブネットがあります。

次の例では、LAN のすべてのサブネットに対してトンネルを構成することを前提にしています。


## Tunnel configuration ##
# Tunnel name is ip.tun0
# Intranet point for the source is 10.1.2.1
# Intranet point for the destination is 10.2.3.1
# Tunnel source is 192.168.1.10
# Tunnel destination is 192.168.2.10

例 20–6 すべてのサブネットで使用できるトンネルの作成

この例では、図 20–1 の Central LAN のローカル LAN から送信されるすべてのトラフィックが、ルーター 1 からルーター 2 にトンネリングされ、Overseas LAN のすべてのローカル LAN に配信されます。トラフィックは AES で暗号化されます。


## IPsec policy ##
{tunnel ip.tun0 negotiate tunnel} 
 ipsec {encr_algs aes encr_auth_algs sha1 sa shared}


例 20–7 2 つのサブネットだけを接続するトンネルの作成

この例では、Central LAN のサブネット 10.1.2.0/24 と Overseas LAN のサブネット 10.2.3.0/24 の間のトラフィックだけがトンネリングされ、暗号化されます。Central に対するほかの IPsec ポリシーがない場合、Central LAN がこのトンネル経由でほかの LAN にトラフィックを配信しようとすると、トラフィックはルーター 1 でドロップされます。


## IPsec policy ##
{tunnel ip.tun0 negotiate tunnel laddr 10.1.2.0/24 raddr 10.2.3.0/24} 
 ipsec {encr_algs aes encr_auth_algs md5 sha1 shared}


例 20–8 2 つのサブネット間だけの電子メールトラフィック用トンネルの作成

この例では、電子メールトラフィック専用のトンネルが作成されます。トラフィックは、Central LAN のサブネット 10.1.2.0/24 から、Overseas LAN の 10.2.3.0/24 サブネット上にある電子メールサーバーに配信されます。電子メールは Blowfish で暗号化されます。ポリシーは、リモートおよびローカルの電子メールポートに適用されます。rport ポリシーは、Central からリモートの Overseas の電子メールポートに送信される電子メールを保護します。lport ポリシーは、Central のローカルポート 25 で受信される Overseas からの電子メールを保護します。


## IPsec policy for email from Central to Overseas ##
{tunnel ip.tun0 negotiate tunnel ulp tcp rport 25 
 laddr 10.1.2.0/24 raddr 10.2.3.0/24} 
 ipsec {encr_algs blowfish encr_auth_algs sha1 sa shared}

## IPsec policy for email from Overseas to Central ##
{tunnel ip.tun0 negotiate tunnel ulp tcp lport 25 
 laddr 10.1.2.0/24 raddr 10.2.3.0/24} 
 ipsec {encr_algs blowfish encr_auth_algs sha1 sa shared}


例 20–9 すべてのサブネットに対する FTP トラフィック用トンネルの作成

この例の IPsec ポリシーは、図 20–1 の Central LAN のすべてのサブネットから Overseas LAN のすべてのサブネットまで、FTP ポートを AES で保護します。この構成は、FTP アクティブモードで機能します。


## IPsec policy for outbound FTP from Central to Overseas ##
{tunnel ip.tun0 negotiate tunnel ulp tcp rport 21} 
  ipsec {encr_algs aes encr_auth_algs sha1 sa shared}
{tunnel ip.tun0 negotiate tunnel ulp tcp lport 20} 
  ipsec {encr_algs aes encr_auth_algs sha1 sa shared}

## IPsec policy for inbound FTP from Central to Overseas ##
{tunnel ip.tun0 negotiate tunnel ulp tcp lport 21} 
  ipsec {encr_algs aes encr_auth_algs sha1 sa shared}
{tunnel ip.tun0 negotiate tunnel ulp tcp rport 20} 
  ipsec {encr_algs aes encr_auth_algs sha1 sa shared}

IPsec による VPN の保護 (作業マップ)

次の作業マップに、インターネット経由のトラフィックを保護するように IPsec を構成する手順を示します。これらの手順を使用すると、インターネットで隔てられている 2 つのシステムの間に、セキュリティー保護された仮想プライベートネットワーク (VPN) を設定できます。この技術の一般的な使用法の 1 つは、自宅勤務者と会社のオフィスの間のトラフィックを保護することです。

タスク 

説明 

説明 

IPv4 トンネルモードでトンネルトラフィックを保護します。 

2 つの Solaris 10 システム間、2 つの Oracle Solaris システム間、または Solaris 10 システムと Oracle Solaris Express システムの間で、トンネルモードでトラフィックを保護します。Solaris 10 システムで Solaris 10 7/07 リリース以上が実行されている必要があります。 

また、Solaris 10 システムまたは Oracle Solaris Express システムと、別のプラットフォームで稼働中のシステムの間でも、トンネルモードでトラフィックを保護します。Solaris 10 システムで Solaris 10 7/07 リリース以上が実行されている必要があります。 

「IPv4 トンネルモードの IPsec トンネルで VPN を保護する方法」

IPv6 トンネルモードでトンネルトラフィックを保護します。 

IPv6 プロトコルを使用している 2 つの Oracle Solaris システム間で、トンネルモードでトラフィックを保護します。 

「IPv6 トンネルモードの IPsec トンネルで VPN を保護する方法」

IPv4 トランスポートモードでトンネルトラフィックを保護します。 

2 つの Solaris 10 システム間、2 つの Solaris システム間、または Solaris 10 システムと Oracle Solaris システムの間で、トランスポートモードでトラフィックを保護します。Solaris 10 システムで Solaris 10 7/07 リリース以上が実行されている必要があります。 

また、以前のバージョンの Solaris OS を実行しているシステムと、Solaris 10 または Oracle Solaris システムの間でも、トランスポートモードでトラフィックを保護します。Solaris 10 システムで Solaris 10 7/07 リリース以上が実行されている必要があります。 

「IPv4 トランスポートモードの IPsec トンネルで VPN を保護する方法」

推奨されなくなった古い構文を使用してトラフィックを保護します。この方法は、以前のバージョンの Solaris OS を実行しているシステムと通信する場合に役立ちます。この方法を使用すると、2 つのシステム上にある構成ファイルの比較が簡単になります。 

例 20–11

例 20–16

IPv6 トランスポートモードでトンネルトラフィックを保護します。 

IPv6 プロトコルを使用している 2 つの Oracle Solaris システム間で、トランスポートモードでトラフィックを保護します。 

「IPv6 トランスポートモードの IPsec トンネルで VPN を保護する方法」

IP のスプーフィングを防止します。 

SMF サービスを作成して、システムがパケットを復号化せずに VPN 上で転送することを防止します。 

「IP のスプーフィングを防止する方法」

IPsec で VPN を保護する作業のためのネットワークトポロジの説明

この節以降に説明する手順では、次の設定がすでになされているものとします。図 20–2 はこのネットワークを表しています。

図 20–2 インターネットで隔てられているオフィス間の VPN の例

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

前の図に示すように、IPv4 ネットワーク向けの手順では次の構成パラメータを使用します。

パラメータ 

ヨーロッパ 

カリフォルニア 

システム名 


enigma

partym

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


hme1

hme1

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


10.16.16.6

10.1.3.3

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


hme0

hme0

システムイントラネットアドレス。手順 7tsrc アドレスでもある


192.168.116.16

192.168.13.213

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


router-E

router-C

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


192.168.116.4

192.168.13.5

トンネル名 


ip.tun0

ip.tun0

手順では次の IPv6 アドレスを使用します。トンネル名は同じです。

パラメータ 

ヨーロッパ 

カリフォルニア 

システムイントラネットアドレス 


6000:6666::aaaa:1116

6000:3333::eeee:1113

システムインターネットアドレス 


2001::aaaa:6666:6666

2001::eeee:3333:3333

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


2001::aaaa:0:4

2001::eeee:0:1

ProcedureIPv4 トンネルモードの IPsec トンネルで VPN を保護する方法

トンネルモードでは、内側の IP パケットによって、その内容を保護する IPsec ポリシーが決まります。

この手順は、「IPsec で 2 つのシステム間のトラフィックを保護するには」の手順の応用です。設定については、「IPsec で VPN を保護する作業のためのネットワークトポロジの説明」を参照してください。


注 –

両方のシステムでこの手順を実行してください。


この手順では、2 つのシステムを接続するだけでなく、これら 2 つのシステムに接続している 2 つのイントラネットを接続します。この手順における 2 つのシステムはゲートウェイとして機能します。

始める前に

システムまたは共有 IP ゾーンの IPsec ポリシーの構成は、大域ゾーンで行う必要があります。排他的 IP ゾーンについては、非大域ゾーンで IPsec ポリシーを構成します。

  1. システムコンソール上で、Primary Administrator の役割を引き受けるか、スーパーユーザーになります。

    Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。


    注 –

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


  2. IPsec を構成する前に、パケットフローを制御します。

    1. IP 転送と IP 動的経路制御が無効になっていることを確認します。


      # routeadm
      Configuration       Current         Current
             Option       Configuration  System State
      --------------------------------------------------
      IPv4 forwarding     disabled           disabled
         IPv4 routing     default (enabled)   enabled
      …

      IP 転送や IP 動的経路制御が有効な場合は、次のように入力して無効にします。


      # routeadm -d ipv4-routing -d ipv4-forwarding
      # routeadm -u
      

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

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


      # ndd -set /dev/ip ip_strict_dst_multihoming 1
      

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

      厳密宛先マルチホームが有効な状態では、特定のインタフェースに到着したパケットに、そのインタフェースのいずれかのローカル IP アドレスを指定する必要があります。その他のパケットは、システムのほかのローカルアドレスが指定されているものも含めてすべて捨てられます。


      注意 – 注意 –

      システムの起動時に、マルチホームの値はデフォルトに戻ります。変更した値を持続させる方法については、「IP のスプーフィングを防止する方法」を参照してください。


    3. 大部分のネットワークサービス、可能な場合はすべてのネットワークサービスを無効にします。


      注 –

      「制限付き」SMF プロファイルでシステムをインストールした場合、この手順は省略できます。Solaris Secure Shell 以外のネットワークサービスは無効になります。


      ネットワークサービスを無効にすると、IP パケットがシステムにダメージを与えるのを防止できます。たとえば、SNMP デーモン、telnet 接続、rlogin 接続などを最大限に活用できます。

      次のオプションのいずれかを選択します。

      • Solaris 10 11/06 以降のリリースが稼働している場合は、「制限付き」SMF プロファイルを実行します。


        # netservices limited
        
      • それ以外の場合は、ネットワークサービスを個別に無効にします。


        # svcadm disable network/ftp:default
        # svcadm disable network/finger:default
        # svcadm disable network/login:rlogin
        # svcadm disable network/nfs/server:default
        # svcadm disable network/rpc/rstat:default
        # svcadm disable network/smtp:sendmail
        # svcadm disable network/telnet:default
        
    4. ほとんどのネットワークサービスが無効になっていることを確認します。

      ループバックマウントと ssh サービスが稼働していることを確認します。


      # svcs | grep network
      online         Aug_02   svc:/network/loopback:default
      …
      online         Aug_09   svc:/network/ssh:default
  3. 2 つのシステム間に SA ペアを追加します。

    次のオプションのいずれかを選択します。

  4. IPsec ポリシーを追加します。

    /etc/inet/ipsecinit.conf ファイルを編集して、VPN 用の IPsec ポリシーを追加します。ポリシーを強化する方法については、例 20–12 を参照してください。その他の例については、「トンネルモードのトンネルを使用して VPN を IPsec で保護する例」を参照してください。

    このポリシーでは、ローカル LAN 上のシステムとゲートウェイの内部 IP アドレスの間に IPsec 保護は必要でないため、bypass 文を追加します。

    1. enigma システムで、ipsecinit.conf ファイルに次のエントリを入力します。


      # LAN traffic to and from this host can bypass IPsec.
      {laddr 10.16.16.6 dir both} bypass {}
      
      # WAN traffic uses ESP with AES and SHA-1.
      {tunnel ip.tun0 negotiate tunnel} 
       ipsec {encr_algs aes encr_auth_algs sha1 sa shared}
    2. partym システムで、ipsecinit.conf ファイルに次のエントリを追加します。


      # LAN traffic to and from this host can bypass IPsec.
      {laddr 10.1.3.3 dir both} bypass {}
      
      # WAN traffic uses ESP with AES and SHA-1.
      {tunnel ip.tun0 negotiate tunnel} 
       ipsec {encr_algs aes encr_auth_algs sha1 sa shared}
  5. (省略可能) IPsec ポリシーファイルの構文を確認します。


    # ipsecconf -c -f /etc/inet/ipsecinit.conf
    
  6. トンネルを構成し、それを IPsec で保護する場合は、Solaris のリリースに応じて次の手順に従います。

    • Solaris 10 4/09 リリース以降では、手順 7 から手順 13 までを実行したあと、手順 22 の経路制御プロトコルを実行します。

    • Solaris 10 4/09 リリースより前のリリースを実行している場合は、手順 14 から手順 22 までを実行します。

  7. トンネル ip.tun0/etc/hostname.ip.tun0 ファイルで構成します。

    ファイルの構文は次のとおりです。


    system1-point system2-point tsrc system1-taddr tdst system2-taddr router up
    1. enigma システムで、hostname.ip.tun0 ファイルに次のエントリを追加します。


      10.16.16.6 10.1.3.3 tsrc 192.168.116.16 tdst 192.168.13.213 router up
    2. partym システムで、hostname.ip.tun0 ファイルに次のように追加します。


      10.1.3.3 10.16.16.6 tsrc 192.168.13.213 tdst 192.168.116.16 router up
  8. 作成した IPsec ポリシーでトンネルを保護します。


    # svcadm refresh svc:/network/ipsec/policy:default
    
  9. トンネル構成ファイルの内容をカーネルに読み込むには、ネットワークサービスを再起動します。


    # svcadm restart svc:/network/initial:default
    
  10. hme1 インタフェースの IP 転送をオンに設定します。

    1. enigma システムで、/etc/hostname.hme1 ファイルにルーターエントリを追加します。


      192.168.116.16 router
    2. partym システムで、/etc/hostname.hme1 ファイルにルーターエントリを追加します。


      192.168.13.213 router

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

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

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

  11. 経路制御プロトコルによってイントラネット内のデフォルトのルートが通知されていないことを確認します。

    1. enigma システムで、private フラグを /etc/hostname.hme0 ファイルに追加します。


      10.16.16.6 private
    2. partym システムで、private フラグを /etc/hostname.hme0 ファイルに追加します。


      10.1.3.3 private

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

  12. hme0 インタフェース経由のデフォルトルートを手動で追加します。

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

    1. enigma システムで、次のルートを追加します。


      # route add default 192.168.116.4
      
    2. partym システムで次のルートを追加します。


      # route add default 192.168.13.5
      

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

  13. 手順を完了するために、手順 22 に進んで経路制御プロトコルを実行します。

  14. トンネル ip.tun0 を構成します。


    注 –

    次の手順は、Solaris 10 4/09 リリースより前のリリースを実行しているシステムでトンネルを構成するためのものです。


    ifconfig コマンドを使用してポイントツーポイントインタフェースを作成します。


    # ifconfig ip.tun0 plumb
    
    # ifconfig ip.tun0 system1-point system2-point \
    tsrc system1-taddr tdst system2-taddr
    
    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
      
    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
      
  15. 作成した IPsec ポリシーでトンネルを保護します。


    # ipsecconf
    
  16. トンネル用のルーターを起動します。


    # ifconfig ip.tun0 router up
    
  17. hme1 インタフェースの IP 転送をオンに設定します。


    # ifconfig hme1 router
    

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

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

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

  18. 経路制御プロトコルによってイントラネット内のデフォルトのルートが通知されていないことを確認します。


    # ifconfig hme0 private
    

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

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

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

    1. enigma システムで、次のルートを追加します。


      # route add default 192.168.116.4
      
    2. partym システムで次のルートを追加します。


      # route add default 192.168.13.5
      

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

  20. VPN がリブート後に開始するように、/etc/hostname.ip.tun0 ファイルにエントリを追加します。


    system1-point system2-point tsrc system1-taddr tdst system2-taddr router up
    1. enigma システムで、hostname.ip.tun0 ファイルに次のエントリを追加します。


      10.16.16.6 10.1.3.3 tsrc 192.168.116.16 tdst 192.168.13.213 router up
    2. partym システムで、hostname.ip.tun0 ファイルに次のように追加します。


      10.1.3.3 10.16.16.6 tsrc 192.168.13.213 tdst 192.168.116.16 router up
  21. 適切なパラメータが経路制御デーモンに渡されるようにインタフェースファイルを設定します。

    1. enigma システムで、/etc/hostname.interface ファイルを変更します。


      # cat /etc/hostname.hme0
      ## enigma
      10.16.16.6 private

      # cat /etc/hostname.hme1
      ## enigma
      192.168.116.16 router
    2. partym システムで、/etc/hostname.interface ファイルを変更します。


      # cat /etc/hostname.hme0
      ## partym
      10.1.3.3 private

      # cat /etc/hostname.hme1
      ## partym
      192.168.13.213 router
  22. 経路制御プロトコルを実行します。


    # routeadm -e ipv4-routing
    # routeadm -u
    

    経路制御プロトコルを実行する前に経路制御プロトコルの構成が必要な場合があります。詳細は、「Oracle Solaris の経路制御プロトコル」を参照してください。手順については、「IPv4 ルーターの構成方法」を参照してください。


例 20–10 テスト時に一時的なトンネルを作成する

この例では、管理者が Solaris 10 4/09 システムでトンネルの作成をテストします。あとで 「IPv4 トンネルモードの IPsec トンネルで VPN を保護する方法」の手順を使用して、これらを永続的なトンネルにします。テスト中に、管理者はシステム system1 および system2 で次の一連の手順を実行します。



例 20–11 コマンド行を使用して以前のバージョンの Solaris システムにトンネルを作成する

Solaris 10 7/07 リリースでは、ifconfig コマンドの構文が簡素化されました。この例では、Solaris 10 7/07 リリースより前のバージョンの Solaris を実行しているシステムに対するトンネルの作成を管理者がテストします。ifconfig コマンドの元の構文を使用すれば、通信する 2 つのシステムで同じコマンドを使用できます。あとで 「IPv4 トンネルモードの IPsec トンネルで VPN を保護する方法」の手順を使用して、これらを永続的なトンネルにします。

テスト中に、管理者はシステム system1 および system2 で次の手順を実行します。



例 20–12 LAN 上のすべてのシステムでの IPsec ポリシーの要求

この例では、手順 4 で構成した bypass ポリシーをコメントにして、保護を強化します。このポリシーを構成した場合は、LAN 上のすべてのシステムが、ルーターと通信するために IPsec を有効にしなければなりません。


# LAN traffic must implement IPsec.
# {laddr 10.1.3.3 dir both} bypass {}

# WAN traffic uses ESP with AES and SHA-1.
{tunnel ip.tun0 negotiate tunnel} ipsec {encr_algs aes encr_auth_algs sha1}


例 20–13 IPsec を使用して Telnet トラフィックと SMTP トラフィックを異なる方法で保護する

この例の最初の規則は、ポート 23 の telnet トラフィックを Blowfish と SHA-1 で保護します。2 番目の規則はポート 25 の SMTP トラフィックを AES と MD5 で保護します。


{laddr 10.1.3.3 ulp tcp dport 23 dir both} 
  ipsec {encr_algs blowfish encr_auth_algs sha1 sa unique}
{laddr 10.1.3.3 ulp tcp dport 25 dir both} 
 ipsec {encr_algs aes encr_auth_algs md5 sa unique}


例 20–14 トンネルモードの IPsec トンネルを使用して、ほかのネットワークトラフィックとは異なる方法でサブネットを保護する

次のトンネル構成は、トンネルを経由するサブネット 10.1.3.0/24 からのすべてのトラフィックを保護します。


{tunnel ip.tun0 negotiate tunnel laddr 10.1.3.0/24} 
  ipsec {encr_algs aes encr_auth_algs sha1 sa shared}

次のトンネル構成は、トンネルを経由するサブネット 10.1.3.0/24 からほかのサブネットへのトラフィックを保護します。10.2.x.x で始まるサブネットはトンネルを経由します。


{tunnel ip.tun0 negotiate tunnel laddr 10.1.3.0/24 raddr 10.2.1.0/24} 
  ipsec {encr_algs blowfish encr_auth_algs sha1 sa shared}

{tunnel ip.tun0 negotiate tunnel laddr 10.1.3.0/24 raddr 10.2.2.0/24} 
  ipsec {encr_algs blowfish encr_auth_algs sha1 sa shared}

{tunnel ip.tun0 negotiate tunnel laddr 10.1.3.0/24 raddr 10.2.3.0/24} 
  ipsec {encr_algs aes encr_auth_algs sha1 sa shared}

ProcedureIPv6 トンネルモードの IPsec トンネルで VPN を保護する方法

IPv6 ネットワークで VPN を使用するには、IPv4 ネットワークの場合と同じ手順を実行します。ただし、コマンドの構文は少し違います。特定のコマンドを実行する理由についての詳細は、「IPv4 トンネルモードの IPsec トンネルで VPN を保護する方法」の該当する手順を参照してください。


注 –

両方のシステムでこの手順を実行してください。


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

パラメータ 

ヨーロッパ 

カリフォルニア 

システム名 


enigma

partym

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


hme1

hme1

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


hme0

hme0

システムイントラネットアドレス 


6000:6666::aaaa:1116

6000:3333::eeee:1113

システムインターネットアドレス 


2001::aaaa:6666:6666

2001::eeee:3333:3333

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


router-E

router-C

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


2001::aaaa:0:4

2001::eeee:0:1

トンネル名 


ip6.tun0

ip6.tun0

  1. システムコンソール上で、Primary Administrator の役割を引き受けるか、スーパーユーザーになります。

    Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。


    注 –

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


  2. IPsec を構成する前に、パケットフローを制御します。

    これらのコマンドの効果については、「IPv4 トンネルモードの IPsec トンネルで VPN を保護する方法」手順 2 を参照してください。

    1. IP 転送と IP 動的経路制御が無効になっていることを確認します。


      # routeadm
      Configuration       Current         Current
             Option       Configuration  System State
      --------------------------------------------------
      …
      IPv6 forwarding     disabled          disabled
         IPv6 routing     disabled          disabled

      IP 転送や IP 動的経路制御が有効な場合は、次のように入力して無効にします。


      # routeadm -d ipv6-forwarding -d ipv6-routing
      # routeadm -u
      
    2. 次のコマンドを入力して IP の厳密宛先マルチホームをオンに設定します。


      # ndd -set /dev/ip ip6_strict_dst_multihoming 1
      

      注意 – 注意 –

      システムの起動時に、ip6_strict_dst_multihoming の値はデフォルトに戻ります。変更した値を持続させる方法については、「IP のスプーフィングを防止する方法」を参照してください。


    3. 大部分のネットワークサービス、可能な場合はすべてのネットワークサービスを無効にします。


      注 –

      「制限付き」SMF プロファイルでシステムをインストールした場合、この手順は省略できます。Solaris Secure Shell 以外のネットワークサービスは無効になります。


      ネットワークサービスを無効にすると、IP パケットがシステムにダメージを与えるのを防止できます。たとえば、SNMP デーモン、telnet 接続、rlogin 接続などを最大限に活用できます。

      次のオプションのいずれかを選択します。

      • Solaris 10 11/06 以降のリリースが稼働している場合は、「制限付き」SMF プロファイルを実行します。


        # netservices limited
        
      • それ以外の場合は、ネットワークサービスを個別に無効にします。


        # svcadm disable network/ftp:default
        # svcadm disable network/finger:default
        # svcadm disable network/login:rlogin
        # svcadm disable network/nfs/server:default
        # svcadm disable network/rpc/rstat:default
        # svcadm disable network/smtp:sendmail
        # svcadm disable network/telnet:default 
    4. ほとんどのネットワークサービスが無効になっていることを確認します。

      ループバックマウントと ssh サービスが稼働していることを確認します。


      # svcs | grep network
      online         Aug_02   svc:/network/loopback:default
      ...
      online         Aug_09   svc:/network/ssh:default
  3. 2 つのシステム間に SA ペアを追加します。

    次のオプションのいずれかを選択します。

  4. VPN 用の IPsec ポリシーを追加します。

    /etc/inet/ipsecinit.conf ファイルを編集して、VPN 用の IPsec ポリシーを追加します。

    1. enigma システムで、ipsecinit.conf ファイルに次のエントリを追加します。


      # IPv6 Neighbor Discovery messages bypass IPsec.
      {ulp ipv6-icmp type 133-137 dir both} pass {}
      
      # LAN traffic to and from this host can bypass IPsec.
      {laddr 6000:6666::aaaa:1116 dir both} bypass {}
      
      # WAN traffic uses ESP with AES and SHA-1.
      {tunnel ip6.tun0 negotiate tunnel} 
        ipsec {encr_algs aes encr_auth_algs sha1 sa shared}
    2. partym システムで、ipsecinit.conf ファイルに次のエントリを追加します。


      # IPv6 Neighbor Discovery messages bypass IPsec.
      {ulp ipv6-icmp type 133-137 dir both} pass {}
      
      # LAN traffic to and from this host can bypass IPsec.
      {laddr 6000:3333::eeee:1113 dir both} bypass {}
      
      # WAN traffic uses ESP with AES and SHA-1.
      {tunnel ip6.tun0 negotiate tunnel} 
        ipsec {encr_algs aes encr_auth_algs sha1 sa shared}
  5. (省略可能) IPsec ポリシーファイルの構文を確認します。


    # ipsecconf -c -f /etc/inet/ipsecinit.conf
    
  6. トンネルを構成し、それを IPsec で保護する場合は、Solaris のリリースに応じて次の手順に従います。

    • Solaris 10 4/09 リリース以降では、手順 7 から手順 13 までを実行したあと、手順 22 の経路制御プロトコルを実行します。

    • Solaris 10 4/09 リリースより前のリリースを実行している場合は、手順 14 から手順 22 までを実行します。

  7. /etc/hostname.ip6.tun0 ファイルで、トンネル ip6.tun0 を構成します。

    1. enigma システムで、hostname.ip6.tun0 ファイルに次のエントリを追加します。


      6000:6666::aaaa:1116 6000:3333::eeee:1113 tsrc 2001::aaaa:6666:6666 tdst 2001::eeee:3333:3333 router up
    2. partym システムで、hostname.ip6.tun0 ファイルに次のエントリを追加します。


      6000:3333::eeee:1113  6000:6666::aaaa:1116 tsrc 2001::eeee:3333:3333 tdst 2001::aaaa:6666:6666 router up
  8. 作成した IPsec ポリシーでトンネルを保護します。


    # svcadm refresh svc:/network/ipsec/policy:default
    
  9. トンネル構成ファイルの内容をカーネルに読み込むには、ネットワークサービスを再起動します。


    # svcadm restart svc:/network/initial:default
    
  10. hme1 インタフェースの IP 転送をオンに設定します。

    1. enigma システムで、/etc/hostname6.hme1 ファイルにルーターエントリを追加します。


      2001::aaaa:6666:6666 inet6 router
    2. partym システムで、/etc/hostname6.hme1 ファイルにルーターエントリを追加します。


      2001::eeee:3333:3333 inet6 router
  11. 経路制御プロトコルによってイントラネット内のデフォルトのルートが通知されていないことを確認します。

    1. enigma システムで、private フラグを /etc/hostname6.hme0 ファイルに追加します。


      6000:6666::aaaa:1116 inet6 private
    2. partym システムで、private フラグを /etc/hostname6.hme0 ファイルに追加します。


      6000:3333::eeee:1113 inet6 private
  12. hme0 経由のデフォルトルートを手動で追加します。

    1. enigma システムで、次のルートを追加します。


      # route add -inet6 default 2001::aaaa:0:4
      
    2. partym システムで次のルートを追加します。


      # route add -inet6 default 2001::eeee:0:1
      
  13. 手順を完了するために、手順 22 に進んで経路制御プロトコルを実行します。

  14. セキュアトンネル ip6.tun0 を構成します。


    注 –

    次の手順は、Solaris 10 4/09 リリースより前のリリースを実行しているシステムでトンネルを構成するためのものです。


    1. enigma システムで、次のコマンドを入力します。


      # ifconfig ip6.tun0 inet6 plumb
      
      # ifconfig ip6.tun0 inet6 6000:6666::aaaa:1116 6000:3333::eeee:1113 \
      tsrc 2001::aaaa:6666:6666   tdst 2001::eeee:3333:3333
      
    2. partym システムで、次のコマンドを入力します。


      # ifconfig ip6.tun0 inet6 plumb
      
      # ifconfig ip6.tun0 inet6 6000:3333::eeee:1113 6000:6666::aaaa:1116 \
      tsrc 2001::eeee:3333:3333   tdst 2001::aaaa:6666:6666
      
  15. 作成した IPsec ポリシーでトンネルを保護します。


    # ipsecconf
    
  16. トンネル用のルーターを起動します。


    # ifconfig ip6.tun0 router up
    
  17. 各システムで、hme1 インタフェースの IP 転送をオンに設定します。


    # ifconfig hme1 router
    
  18. 経路制御プロトコルによってイントラネット内のデフォルトのルートが通知されていないことを確認します。


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

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

    1. enigma システムで、次のルートを追加します。


      # route add -inet6 default 2001::aaaa:0:4
      
    2. partym システムで次のルートを追加します。


      # route add -inet6 default 2001::eeee:0:1
      
  20. VPN がリブート後に開始するように、/etc/hostname6.ip6.tun0 ファイルにエントリを追加します。

    このエントリは、手順 14ifconfigコマンドに渡されたパラメータを複製します。

    1. enigma システムで、hostname6.ip6.tun0 ファイルに次のエントリを追加します。


      6000:6666::aaaa:1116 6000:3333::eeee:1113 \
      tsrc 2001::aaaa:6666:6666  tdst 2001::eeee:3333:3333 router up
    2. partym システムでは、次のエントリを hostname6.ip6.tun0 ファイルに追加します。


      6000:3333::eeee:1113 6000:6666::aaaa:1116 \
      tsrc 2001::eeee:3333:3333   tdst 2001::aaaa:6666:6666  router up
  21. 各システムで、適切なパラメータが経路制御デーモンに渡されるようにインタフェースファイルを設定します。

    1. enigma システムで、/etc/hostname6.interface ファイルを変更します。


      # cat /etc/hostname6.hme0
      ## enigma
      6000:6666::aaaa:1116 inet6 private

      #  cat /etc/hostname6.hme1
      ## enigma
      2001::aaaa:6666:6666 inet6 router
    2. partym システムで、/etc/hostname6.interface ファイルを変更します。


      # cat /etc/hostname6.hme0
      ## partym
      6000:3333::eeee:1113 inet6 private

      # cat /etc/hostname6.hme1
      ## partym
      2001::eeee:3333:3333 inet6 router
  22. 経路制御プロトコルを実行します。


    # routeadm -e ipv6-routing
    # routeadm -u
    

    経路制御プロトコルを実行する前に経路制御プロトコルの構成が必要な場合があります。詳細は、「Oracle Solaris の経路制御プロトコル」を参照してください。手順については、「IPv6 ルーターの構成」を参照してください。

ProcedureIPv4 トランスポートモードの IPsec トンネルで VPN を保護する方法

トランスポートモードでは、外側のヘッダーによって、内側の IP パケットを保護する IPsec ポリシーが決まります。

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

この手順では、「IPsec で VPN を保護する作業のためのネットワークトポロジの説明」で説明されている設定を使用します。特定のコマンドを実行する理由についての詳細は、「IPv4 トンネルモードの IPsec トンネルで VPN を保護する方法」の該当する手順を参照してください。


注 –

両方のシステムでこの手順を実行してください。


  1. システムコンソール上で、Primary Administrator の役割を引き受けるか、スーパーユーザーになります。

    Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。


    注 –

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


  2. IPsec を構成する前に、パケットフローを制御します。

    1. IP 転送と IP 動的経路制御が無効になっていることを確認します。


      # routeadm
      Configuration       Current         Current
             Option       Configuration  System State
      --------------------------------------------------
      IPv4 forwarding     disabled           disabled
         IPv4 routing     default (enabled)   enabled
      …

      IP 転送や IP 動的経路制御が有効な場合は、次のように入力して無効にします。


      # routeadm -d ipv4-routing -d ipv4-forwarding
      # routeadm -u
      
    2. 次のコマンドを入力して IP の厳密宛先マルチホームをオンに設定します。


      # ndd -set /dev/ip ip_strict_dst_multihoming 1
      

      注意 – 注意 –

      システムの起動時に、ip_strict_dst_multihoming の値はデフォルトに戻ります。変更した値を持続させる方法については、「IP のスプーフィングを防止する方法」を参照してください。


    3. 大部分のネットワークサービス、可能な場合はすべてのネットワークサービスを無効にします。


      注 –

      「制限付き」SMF プロファイルでシステムをインストールした場合、この手順は省略できます。Solaris Secure Shell 以外のネットワークサービスは無効になります。


      ネットワークサービスを無効にすると、IP パケットがシステムにダメージを与えるのを防止できます。たとえば、SNMP デーモン、telnet 接続、rlogin 接続などを最大限に活用できます。

      次のオプションのいずれかを選択します。

      • Solaris 10 11/06 以降のリリースが稼働している場合は、「制限付き」SMF プロファイルを実行します。


        # netservices limited
        
      • それ以外の場合は、ネットワークサービスを個別に無効にします。


        # svcadm disable network/ftp:default
        # svcadm disable network/finger:default
        # svcadm disable network/login:rlogin
        # svcadm disable network/nfs/server:default
        # svcadm disable network/rpc/rstat:default
        # svcadm disable network/smtp:sendmail
        # svcadm disable network/telnet:default 
    4. ほとんどのネットワークサービスが無効になっていることを確認します。

      ループバックマウントと ssh サービスが稼働していることを確認します。


      # svcs | grep network
      online         Aug_02   svc:/network/loopback:default
      …
      online         Aug_09   svc:/network/ssh:default
  3. 2 つのシステム間に SA ペアを追加します。

    次のオプションのいずれかを選択します。

  4. IPsec ポリシーを追加します。

    /etc/inet/ipsecinit.conf ファイルを編集して、VPN 用の IPsec ポリシーを追加します。ポリシーを強化する方法については、例 20–15 を参照してください。

    1. enigma システムで、ipsecinit.conf ファイルに次のエントリを入力します。


      # LAN traffic to and from this host can bypass IPsec.
      {laddr 10.16.16.6 dir both} bypass {}
      
      # WAN traffic uses ESP with AES and SHA-1.
      {tunnel ip.tun0 negotiate transport} 
       ipsec {encr_algs aes encr_auth_algs sha1 sa shared}
    2. partym システムで、ipsecinit.conf ファイルに次のエントリを追加します。


      # LAN traffic to and from this host can bypass IPsec.
      {laddr 10.1.3.3 dir both} bypass {}
      
      # WAN traffic uses ESP with AES and SHA-1.
      {tunnel ip.tun0 negotiate transport} 
       ipsec {encr_algs aes encr_auth_algs sha1 sa shared}
  5. (省略可能) IPsec ポリシーファイルの構文を確認します。


    # ipsecconf -c -f /etc/inet/ipsecinit.conf
    
  6. トンネルを構成し、それを IPsec で保護する場合は、Solaris のリリースに応じて次の手順に従います。

    • Solaris 10 4/09 リリース以降では、手順 7 から手順 13 までを実行したあと、手順 22 の経路制御プロトコルを実行します。

    • Solaris 10 4/09 リリースより前のリリースを実行している場合は、手順 14 から手順 22 までを実行します。

  7. /etc/hostname.ip.tun0 ファイルで、トンネル ip.tun0 を構成します。

    1. enigma システムで、hostname.ip.tun0 ファイルに次のエントリを追加します。


      10.16.16.6 10.1.3.3 tsrc 192.168.116.16 tdst 192.168.13.213 router up
    2. partym システムで、hostname.ip.tun0 ファイルに次のように追加します。


      10.1.3.3 10.16.16.6 tsrc 192.168.13.213 tdst 192.168.116.16 router up
  8. 作成した IPsec ポリシーでトンネルを保護します。


    # svcadm refresh svc:/network/ipsec/policy:default
    
  9. hostname.ip.tun0 ファイルの内容をカーネルに読み込むには、ネットワークサービスを再起動します。


    # svcadm restart svc:/network/initial:default
    
  10. hme1 インタフェースの IP 転送をオンに設定します。

    1. enigma システムで、ルーターエントリを /etc/hostname.hme1 ファイルに追加します。


      192.168.116.16 router
    2. partym システムで、ルーターエントリを /etc/hostname.hme1 ファイルに追加します。


      192.168.13.213 router
  11. 経路制御プロトコルによってイントラネット内のデフォルトのルートが通知されていないことを確認します。

    1. enigma システムで、private フラグを /etc/hostname.hme0 ファイルに追加します。


      10.16.16.6 private
    2. partym システムで、private フラグを /etc/hostname.hme0 ファイルに追加します。


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

    1. enigma システムで、次のルートを追加します。


      # route add default 192.168.116.4
      
    2. partym システムで次のルートを追加します。


      # route add default 192.168.13.5
      
  13. 手順を完了するために、手順 22 に進んで経路制御プロトコルを実行します。

  14. トンネル ip.tun0 を構成します。


    注 –

    次の手順は、Solaris 10 4/09 リリースより前のリリースを実行しているシステムでトンネルを構成するためのものです。


    ifconfig コマンドを使用してポイントツーポイントインタフェースを作成します。


    # ifconfig ip.tun0 plumb
    
    # ifconfig ip.tun0 system1-point system2-point \
    tsrc system1-taddr tdst system2-taddr
    
    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
      
    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
      
  15. 作成した IPsec ポリシーでトンネルを保護します。


    # ipsecconf
    
  16. トンネル用のルーターを起動します。


    # ifconfig ip.tun0 router up
    
  17. hme1 インタフェースの IP 転送をオンに設定します。


    # ifconfig hme1 router
    
  18. 経路制御プロトコルによってイントラネット内のデフォルトのルートが通知されていないことを確認します。


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

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


    # route add default router-on-hme0-subnet
    
    1. enigma システムで、次のルートを追加します。


      # route add default 192.168.116.4
      
    2. partym システムで次のルートを追加します。


      # route add default 192.168.13.5
      
  20. VPN がリブート後に開始するように、/etc/hostname.ip.tun0 ファイルにエントリを追加します。


    system1-point system2-point tsrc system1-taddr \
    tdst system2-taddr encr_algs aes encr_auth_algs sha1 router up
    1. enigma システムで、hostname.ip.tun0 ファイルに次のエントリを追加します。


      10.16.16.6 10.1.3.3 tsrc 192.168.116.16 \
      tdst 192.168.13.213 router up
    2. partym システムで、hostname.ip.tun0 ファイルに次のように追加します。


      10.1.3.3 10.16.16.6 tsrc 192.168.13.213 \
      tdst 192.168.116.16 router up
  21. 適切なパラメータが経路制御デーモンに渡されるようにインタフェースファイルを設定します。

    1. enigma システムで、/etc/hostname.interface ファイルを変更します。


      # cat /etc/hostname.hme0
      ## enigma
      10.16.16.6 private

      # cat /etc/hostname.hme1
      ## enigma
      192.168.116.16 router
    2. partym システムで、/etc/hostname.interface ファイルを変更します。


      # cat /etc/hostname.hme0
      ## partym
      10.1.3.3 private

      # cat /etc/hostname.hme1
      ## partym
      192.168.13.213 router
  22. 経路制御プロトコルを実行します。


    # routeadm -e ipv4-routing
    # routeadm -u
    

例 20–15 すべてのシステムにトランスポートモードで IPsec ポリシーを要求する

この例では、手順 4 で構成した bypass ポリシーをコメントにして、保護を強化します。このポリシーを構成した場合は、LAN 上のすべてのシステムが、ルーターと通信するために IPsec を有効にしなければなりません。


# LAN traffic must implement IPsec.
# {laddr 10.1.3.3 dir both} bypass {}

# WAN traffic uses ESP with AES and SHA-1.
{tunnel ip.tun0 negotiate transport} ipsec {encr_algs aes encr_auth_algs sha1}


例 20–16 推奨されなくなった構文を使用してトランスポートモードの IPsec トンネルを構成する

この例では、Solaris 10 7/07 システムを、Solaris 10 リリースを実行しているシステムに接続します。したがって、管理者は構成ファイルで Solaris 10 の構文を使用し、ifconfig コマンドに IPsec アルゴリズムを含めます。

管理者は、「IPv4 トランスポートモードの IPsec トンネルで VPN を保護する方法」の手順に従いますが、構文を次のように変更します。


ProcedureIPv6 トランスポートモードの IPsec トンネルで VPN を保護する方法

IPv6 ネットワークで VPN を使用するには、IPv4 ネットワークの場合と同じ手順を実行します。ただし、コマンドの構文は少し違います。特定のコマンドを実行する理由についての詳細は、「IPv4 トンネルモードの IPsec トンネルで VPN を保護する方法」の該当する手順を参照してください。


注 –

両方のシステムでこの手順を実行してください。


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

パラメータ 

ヨーロッパ 

カリフォルニア 

システム名 


enigma

partym

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


hme1

hme1

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


hme0

hme0

システムイントラネットアドレス 


6000:6666::aaaa:1116

6000:3333::eeee:1113

システムインターネットアドレス 


2001::aaaa:6666:6666

2001::eeee:3333:3333

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


router-E

router-C

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


2001::aaaa:0:4

2001::eeee:0:1

トンネル名 


ip6.tun0

ip6.tun0

  1. システムコンソール上で、Primary Administrator の役割を引き受けるか、スーパーユーザーになります。

    Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。


    注 –

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


  2. IPsec を構成する前に、パケットフローを制御します。

    1. IP 転送と IP 動的経路制御が無効になっていることを確認します。


      # routeadm
      Configuration       Current         Current
             Option       Configuration  System State
      --------------------------------------------------
      …
      IPv6 forwarding     disabled          disabled
         IPv6 routing     disabled          disabled

      IP 転送や IP 動的経路制御が有効な場合は、次のように入力して無効にします。


      # routeadm -d ipv6-forwarding -d ipv6-routing
      # routeadm -u
      
    2. 次のコマンドを入力して IP の厳密宛先マルチホームをオンに設定します。


      # ndd -set /dev/ip ip6_strict_dst_multihoming 1
      

      注意 – 注意 –

      システムの起動時に、ip6_strict_dst_multihoming の値はデフォルトに戻ります。変更した値を持続させる方法については、「IP のスプーフィングを防止する方法」を参照してください。


    3. ほとんどのネットワークサービスが無効になっていることを確認します。

      ループバックマウントと ssh サービスが稼働していることを確認します。


      # svcs | grep network
      online         Aug_02   svc:/network/loopback:default
      …
      online         Aug_09   svc:/network/ssh:default
  3. 2 つのシステム間に SA ペアを追加します。

    次のオプションのいずれかを選択します。

  4. IPsec ポリシーを追加します。

    /etc/inet/ipsecinit.conf ファイルを編集して、VPN 用の IPsec ポリシーを追加します。

    1. enigma システムで、ipsecinit.conf ファイルに次のエントリを追加します。


      # IPv6 Neighbor Discovery messages bypass IPsec.
      {ulp ipv6-icmp type 133-137 dir both} pass {}
      
      # LAN traffic can bypass IPsec.
      {laddr 6000:6666::aaaa:1116 dir both} bypass {}
      
      # WAN traffic uses ESP with AES and SHA-1.
      {tunnel ip6.tun0 negotiate transport} 
       ipsec {encr_algs aes encr_auth_algs sha1}
    2. partym システムで、ipsecinit.conf ファイルに次のエントリを追加します。


      # IPv6 Neighbor Discovery messages bypass IPsec.
      {ulp ipv6-icmp type 133-137 dir both} pass {}
      
      # LAN traffic can bypass IPsec.
      {laddr 6000:3333::eeee:1113 dir both} bypass {}
      
      # WAN traffic uses ESP with AES and SHA-1.
      {tunnel ip6.tun0 negotiate transport} 
       ipsec {encr_algs aes encr_auth_algs sha1}
  5. (省略可能) IPsec ポリシーファイルの構文を確認します。


    # ipsecconf -c -f /etc/inet/ipsecinit.conf
    
  6. トンネルを構成し、それを IPsec で保護する場合は、Solaris のリリースに応じて次の手順に従います。

    • Solaris 10 4/09 リリース以降では、手順 7 から手順 13 までを実行したあと、手順 22 の経路制御プロトコルを実行します。

    • Solaris 10 4/09 リリースより前のリリースを実行している場合は、手順 14 から手順 22 までを実行します。

  7. /etc/hostname.ip6.tun0 ファイルで、トンネル ip6.tun0 を構成します。

    1. enigma システムで、hostname.ip6.tun0 ファイルに次のエントリを追加します。


      6000:6666::aaaa:1116 6000:3333::eeee:1113 tsrc 2001::aaaa:6666:6666 tdst 2001::eeee:3333:3333 router up
    2. partym システムで、hostname.ip6.tun0 ファイルに次のエントリを追加します。


      6000:3333::eeee:1113  6000:6666::aaaa:1116 tsrc 2001::eeee:3333:3333 tdst 2001::aaaa:6666:6666 router up
  8. 作成した IPsec ポリシーでトンネルを保護します。


    # svcadm refresh svc:/network/ipsec/policy:default
    
  9. hostname.ip6.tun0 ファイルの内容をカーネルに読み込むには、ネットワークサービスを再起動します。


    # svcadm restart svc:/network/initial:default
    
  10. hme1 インタフェースの IP 転送をオンに設定します。

    1. enigma システムで、/etc/hostname6.hme1 ファイルにルーターエントリを追加します。


      2001::aaaa:6666:6666 inet6 router
    2. partym システムで、/etc/hostname6.hme1 ファイルにルーターエントリを追加します。


      2001::eeee:3333:3333 inet6 router
  11. 経路制御プロトコルによってイントラネット内のデフォルトのルートが通知されていないことを確認します。

    1. enigma システムで、private フラグを /etc/hostname6.hme0 ファイルに追加します。


      6000:6666::aaaa:1116 inet6 private
    2. partym システムで、private フラグを /etc/hostname6.hme0 ファイルに追加します。


      6000:3333::eeee:1113 inet6 private
  12. hme0 経由のデフォルトルートを手動で追加します。

    1. enigma システムで、次のルートを追加します。


      # route add -inet6 default 2001::aaaa:0:4
      
    2. partym システムで次のルートを追加します。


      # route add -inet6 default 2001::eeee:0:1
      
  13. 手順を完了するために、手順 22 に進んで経路制御プロトコルを実行します。

  14. セキュアトンネル ip6.tun0 を構成します。


    注 –

    次の手順は、Solaris 10 4/09 リリースより前のリリースを実行しているシステムでトンネルを構成するためのものです。


    1. enigma システムで、次のコマンドを入力します。


      # ifconfig ip6.tun0 inet6 plumb
      
      # ifconfig ip6.tun0 inet6 6000:6666::aaaa:1116 6000:3333::eeee:1113 \
      tsrc 2001::aaaa:6666:6666   tdst 2001::eeee:3333:3333
      
    2. partym システムで、次のコマンドを入力します。


      # ifconfig ip6.tun0 inet6 plumb
      
      # ifconfig ip6.tun0 inet6  6000:3333::eeee:1113  6000:6666::aaaa:1116 \
      tsrc 2001::eeee:3333:3333   tdst 2001::aaaa:6666:6666
      
  15. 作成した IPsec ポリシーでトンネルを保護します。


    # ipsecconf
    
  16. トンネル用のルーターを起動します。


    # ifconfig ip6.tun0 router up
    
  17. hme1 インタフェースの IP 転送をオンに設定します。


    # ifconfig hme1 router
    
  18. 経路制御プロトコルによってイントラネット内のデフォルトのルートが通知されていないことを確認します。


    # ifconfig hme0 private
    
  19. 各システムで、hme0 経由のデフォルトルートを手動で追加します。

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

    1. enigma システムで、次のルートを追加します。


      # route add -inet6 default 2001::aaaa:0:4
      
    2. partym システムで次のルートを追加します。


      # route add -inet6 default 2001::eeee:0:1
      
  20. 各システムで、VPN がリブート後に開始するように、/etc/hostname6.ip6.tun0 ファイルにエントリを追加します。

    このエントリは、手順 14ifconfigコマンドに渡されたパラメータを複製します。

    1. enigma システムで、hostname6.ip6.tun0 ファイルに次のエントリを追加します。


      6000:6666::aaaa:1116  6000:3333::eeee:1113 \
      tsrc 2001::aaaa:6666:6666   tdst 2001::eeee:3333:3333  router up
    2. partym システムでは、次のエントリを hostname6.ip6.tun0 ファイルに追加します。


      6000:3333::eeee:1113  6000:6666::aaaa:1116 \
      tsrc 2001::eeee:3333:3333   tdst 2001::aaaa:6666:6666  router up
  21. 適切なパラメータが経路制御デーモンに渡されるようにインタフェースファイルを設定します。

    1. enigma システムで、/etc/hostname6.interface ファイルを変更します。


      # cat /etc/hostname6.hme0
      ## enigma
      6000:6666::aaaa:1116 inet6 private

      #  cat /etc/hostname6.hme1
      ## enigma
      2001::aaaa:6666:6666 inet6 router
    2. partym システムで、/etc/hostname6.interface ファイルを変更します。


      # cat /etc/hostname6.hme0
      ## partym
      6000:3333::eeee:1113 inet6 private

      # cat /etc/hostname6.hme1
      ## 
      partym2001::eeee:3333:3333 inet6 router
  22. 経路制御プロトコルを実行します。


    # routeadm -e ipv6-routing
    # routeadm -u
    

例 20–17 推奨されなくなった構文を使用して IPv6 トランスポートモードの IPsec トンネルを構成する

この例では、Solaris 10 7/07 システムを、Solaris 10 リリースを実行しているシステムに接続します。したがって、管理者は構成ファイルで Solaris 10 の構文を使用し、ifconfig コマンドに IPsec アルゴリズムを含めます。

管理者は、「IPv6 トランスポートモードの IPsec トンネルで VPN を保護する方法」の手順に従いますが、構文を次のように変更します。


ProcedureIP のスプーフィングを防止する方法

システムがパケットの復号化を試みずに別のインタフェースに転送することを防止するには、IP のスプーフィングをチェックする必要があります。その方法の 1 つは、ndd コマンドを使用して IP 厳密宛先マルチホームのパラメータを設定することです。SMF マニフェストでこのパラメータが設定されている場合、システムのリブート時にこのパラメータが設定されます。


注 –

両方のシステムでこの手順を実行してください。


  1. システムコンソール上で、Primary Administrator の役割を引き受けるか、スーパーユーザーになります。

    Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。

  2. IP のスプーフィングをチェックするように、サイト固有の SMF マニフェストを作成します。

    次のサンプルスクリプト /var/svc/manifest/site/spoof_check.xml を使用します。

    <?xml version="1.0"?>
    <!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
    
    <service_bundle type='manifest' name='Custom:ip_spoof_checking'>
    
    <!--    This is a custom smf(5) manifest for this system. Place this
            file in /var/svc/manifest/site, the directory for local
            system customizations. The exec method uses an unstable
            interface to provide a degree of protection against IP
            spoofing attacks when this system is acting as a router.
    
            IP spoof protection can also be achieved by using ipfilter(5).
            If ipfilter is configured, this service can be disabled.
    
            Note: Unstable interfaces might be removed in later
            releases.  See attributes(5).
    -->
    
    <service
            name='site/ip_spoofcheck'
            type='service'
            version='1'>
    
            <create_default_instance enabled='false' />
            <single_instance />
    
            <!--    Don't enable spoof protection until the
                    network is up.
            -->
            <dependency
                    name='basic_network'
                    grouping='require_all'
                    restart_on='none'
                    type='service'>
            <service_fmri value='svc:/milestone/network' />
            </dependency>
    
            <exec_method
                    type='method'
                    name='start'
                    exec='/usr/sbin/ndd -set /dev/ip ip_strict_dst_multihoming 1'
    <!--    
         For an IPv6 network, use the IPv6 version of this command, as in:
                    exec='/usr/sbin/ndd -set /dev/ip ip6_strict_dst_multihoming 1
    -->
                    timeout_seconds='60'
            />
    
            <exec_method
                    type='method'
                    name='stop'
                    exec=':true'
                    timeout_seconds='3'
            />
    
            <property_group name='startd' type='framework'>
                    <propval
                            name='duration'
                            type='astring'
                            value='transient'
                    />
            </property_group>
    
            <stability value='Unstable' />
    
    </service>
    </service_bundle>
  3. このマニフェストを SMF リポジトリにインポートします。


    # svccfg import /var/svc/manifest/site/spoof_check.xml
    
  4. ip_spoofcheck サービスを有効にします。

    マニフェストで定義されている名前 /site/ip_spoofcheck を使用します。


    # svcadm enable /site/ip_spoofcheck
    
  5. ip_spoofcheck サービスがオンラインになっていることを確認します。


    # svcs /site/ip_spoofcheck