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

事前共有鍵による IKE の設定

事前共有鍵は、IKE 用の最も簡単な認証方法です。2 つのシステムが IKE を使用するように設定している場合、さらに、両方のシステムの管理者である場合、事前共有鍵を使用することはよい選択です。しかし、公開鍵認証とは異なり、事前共有鍵は特定の IP アドレスに縛られます。事前共有鍵は、移動体システムなど、番号が変更される可能性があるシステムでは使用できません。また、事前共有鍵を使用するときには、接続されたハードウェアに IKE 計算を任せることはできません。

Procedure事前共有鍵により IKE を設定する方法

IKE 実装では、鍵の長さが異なるさまざまなアルゴリズムが提供されます。鍵の長さは、サイトのセキュリティーに応じて選択します。一般的に、鍵の長さが長いほど、セキュリティーが高くなります。

これらの手順には、システム名 enigma および partym を使用します。enigmapartym を各自使用しているシステムの名前に置き換えてください。

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

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


    注 –

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


  2. システムごとに、/etc/inet/ike/config.sample ファイルを /etc/inet/ike/config にコピーします。

  3. システムごとに、規則とグローバルパラメータを ike/config ファイルに入力します。

    これらの規則やグローバルパラメータは、システムの ipsecinit.conf ファイルに設定されている IPsec ポリシーが正しく動作するものでなければなりません。次の ike/config の例は、「IPsec で 2 つのシステム間のトラフィックを保護するには」ipsecinit.conf の例で機能します。

    1. たとえば、enigma システムの /etc/inet/ike/config ファイルを次のように変更します。


      ### ike/config file on enigma, 192.168.116.16
      
      ## Global parameters
      #
      ## Phase 1 transform defaults
      p1_lifetime_secs 14400
      p1_nonce_len 40
      #
      ## Defaults that individual rules can override.
      p1_xform
        { auth_method preshared oakley_group 5 auth_alg sha encr_alg des }
      p2_pfs 2
      #
      ## The rule to communicate with partym
      #  Label must be unique
      { label "enigma-partym"
        local_addr 192.168.116.16
        remote_addr 192.168.13.213
        p1_xform
         { auth_method preshared oakley_group 5 auth_alg sha1 encr_alg aes }
        p2_pfs 5
      }
      

      注 –

      auth_method パラメータのすべての引数は同じ行になければなりません。


    2. partym システムの /etc/inet/ike/config ファイルを次のように変更します。


      ### ike/config file on partym, 192.168.13.213
      ## Global Parameters
      #
      p1_lifetime_secs 14400
      p1_nonce_len 40
      #
      p1_xform
        { auth_method preshared oakley_group 5 auth_alg sha encr_alg des }
      p2_pfs 2
      
      ## The rule to communicate with enigma
      #  Label must be unique
      { label "partym-enigma"
        local_addr 192.168.13.213
        remote_addr 192.168.116.16
      p1_xform
         { auth_method preshared oakley_group 5 auth_alg sha1 encr_alg aes }
      p2_pfs 5
      }
      
  4. システムごとに、ファイルの構文を確認します。


    # /usr/lib/inet/in.iked -c -f /etc/inet/ike/config
    
  5. 鍵情報として使用する乱数を生成します。

    乱数発生関数がすでにある場合は、それを使用してください。Solaris システムでは、od コマンドを使用できます。たとえば、次のコマンドを入力すると、16 進数の数値が 2 行に渡って表示されます。


    % od -X -A n /dev/random | head -2
             f47cb0f4 32e14480 951095f8 2b735ba8
             0a9467d0 8f92c880 68b6a40e 0efe067d

    od コマンドについては、「Solaris System で乱数を生成するには」od(1) のマニュアルページを参照してください。


    注 –

    ほかのオペレーティングシステムでは、ASCII 形式の鍵情報が必要になる場合があります。同じ鍵を 16 進形式と ASCII 形式で生成する方法については、例 23–1 を参照してください。


  6. 手順 5 の出力から、1 つの鍵を作成します。


    f47cb0f432e14480951095f82b735ba80a9467d08f92c88068b6a40e

    この手順における認証アルゴリズムは SHA–1 です (手順 3 を参照)。事前共有鍵として推奨する最小のサイズは、ハッシュのサイズ (つまり、認証アルゴリズムの出力のサイズ) で決まります。SHA–1 アルゴリズムの出力は 160 ビット、すなわち 40 文字です。例の鍵の長さは 56 文字であり、IKE が使用する鍵情報が追加されています。

  7. システムごとに /etc/inet/secret/ike.preshared ファイルを作成します。

    各ファイルに事前共有鍵を書き込みます。

    1. たとえば、enigma システムの ike.preshared ファイルは次のようになります。


      # ike.preshared on enigma, 192.168.116.16
      #…
      { localidtype IP
      	localid 192.168.116.16
      	remoteidtype IP
      	remoteid 192.168.13.213
      	# enigma and partym's shared key in hex (192 bits)
      	key f47cb0f432e14480951095f82b735ba80a9467d08f92c88068b6a40e
      	}
    2. partym システムの ike.preshared ファイルは次のようになります。


      # ike.preshared on partym, 192.168.13.213
      #…
      { localidtype IP
      	localid 192.168.13.213
      	remoteidtype IP
      	remoteid 192.168.116.16
      	# partym and enigma's shared key in hex (192 bits)
      	key f47cb0f432e14480951095f82b735ba80a9467d08f92c88068b6a40e
      	}

    注 –

    両システムの事前共有鍵は同一にする必要があります。



例 23–1 オペレーティングシステムの異なる 2 つのシステムに対して同じ鍵情報を生成する

Solaris IPsec は、ほかのオペレーティングシステムと相互運用できます。ASCII 形式の事前共有鍵を必要とするシステムと通信する場合は、1 つの鍵を 16 進形式と ASCII 形式の 2 つの形式で生成する必要があります。

この例では、Solaris システムの管理者が 56 文字の鍵情報を使用しようとしています。管理者は、次のコマンドを使用して、ASCII パスフレーズから 16 進形式の鍵を生成します。オプション -tx1 を指定すると、一度に 1 バイトずつ、すべての Solaris システムに出力されます。


# /bin/echo "papiermache with cashews and\c" | od -tx1 | cut -c 8-55 | \
tr -d '\n' | tr -d ' ' | awk '{print}'
7061706965726d616368652077697468206361736865777320616e64

オフセットを削除して 16 進出力を連結すると、Solaris システム用の 16 進形式の鍵は 7061706965726d616368652077697468206361736865777320616e64 になります。管理者は、この値を Solaris システムの ike.preshared ファイルに格納します。


# Shared key in hex (192 bits)
key 7061706965726d616368652077697468206361736865777320616e64

ASCII 形式の事前共有鍵を必要とするシステムでは、パスフレーズが事前共有鍵になります。Solaris システムの管理者は、相手の管理者に電話し、パスフレーズ papiermache with cashews and を伝えます。


ProcedureIKE の事前共有鍵を更新する方法

この手順では、一定の間隔で既存の事前共有鍵を置き換えたい場合を想定しています。

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

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


    注 –

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


  2. 乱数を生成し、適切な長さのキーを作成します。

    詳細については、「Solaris System で乱数を生成するには」を参照してください。Solaris システムが ASCII 形式を必要とするオペレーティングシステムと通信する場合、事前共有鍵を生成する方法については、例 23–1 を参照してください。

  3. 現在の鍵を新しい鍵で置き換えます。

    たとえば、ホスト enigmapartym において、 /etc/inet/secret/ike.preshared ファイルの key の値を、同じ長さの新しい番号で置き換えます。

  4. 新しい鍵をカーネルに読み込みます。

    • Solaris 10 4/09 リリース以降では、ike サービスを更新します。


      # svcadm refresh ike
      
    • Solaris 10 4/09 リリースより前のリリースを実行している場合は、in.iked デーモンを強制終了および再起動します。

      1. in.iked デーモンの特権レベルをチェックします。


        # /usr/sbin/ikeadm get priv
        Current privilege level is 0x0, base privileges enabled

        コマンドから 0x1 または 0x2 の特権レベルが戻された場合には、鍵情報を変更できます。0x0 の特権レベルでは、鍵情報を変更または表示する操作を行うことはできません。デフォルトでは、in.iked デーモンは 0x0 の特権レベルで実行されます。

      2. 特権レベルが 0x0 の場合、デーモンを強制終了および再起動します。

        デーモンを再起動すると、ike.preshared ファイルの新しいバージョンを読み取ります。


        # pkill in.iked
        # /usr/lib/inet/in.iked
        
      3. 特権レベルが 0x1 または 0x2 である場合、ike.preshared ファイルの新しいバージョンを読み取ります。


        # ikeadm read preshared
        

ProcedureIKE の事前共有鍵を表示する方法

デフォルトでは、ikeadm コマンドではフェーズ 1 SA のダンプに実際の鍵を表示できないようになっています。鍵を表示するとデバッグに役立ちます。

実際の鍵を表示するには、デーモンの特権レベルを高くする必要があります。特権レベルについては、「IKE 管理コマンド」を参照してください。


注 –

Solaris 10 4/09 リリースより前のリリースでこの手順を実行するには、例 23–2 を参照してください。


始める前に

IKE は構成済みで、ike サービスは実行中です。

  1. IKE の事前共有鍵を表示します。


    # ikeadm
    ikeadm> dump preshared
    
  2. エラーが発生する場合は、in.iked デーモンの特権レベルを高くします。

    1. SMF リポジトリの in.iked デーモンの特権レベルを高くします。


      # svcprop -p config/admin_privilege ike
      base
      # svccfg -s ike setprop config/admin_privilege=keymat
      
    2. 実行中の in.iked デーモンの特権レベルを高くします。


      # svcadm refresh ike ; svcadm restart ike
      
    3. (省略可能) 特権レベルが keymat であることを確認します。


      # svcprop -p config/admin_privilege ike
      keymat
    4. 手順 1 をもう一度実行して鍵を表示します。

  3. IKE デーモンを基本の特権レベルに戻します。

    1. 鍵を表示したあと、特権レベルをデフォルトに戻します。


      # svccfg -s ike setprop config/admin_privilege=base
      
    2. IKE を更新してから再起動します。


      # svcadm refresh ike ; svcadm restart ike
      

例 23–2 Solaris 10 4/09 リリースより前のリリースで IKE の事前共有鍵を確認する

次の例では、現在の Solaris リリースが稼働していない Solaris システムで管理者が鍵を表示しようとしています。管理者は、このシステムの鍵が通信先のシステムの鍵と同じであることを確認する必要があります。2 つのシステムの鍵が同じであることを確認したあと、管理者は特権レベルを 0 に戻します。


Procedureipsecinit.conf の新しいポリシーエントリ用に IKE 事前共有鍵を追加する方法

IPsec と IKE の実行中に IPsec ポリシーのエントリを追加した場合は、新しいポリシーおよび IKE ルールをカーネルに読み込む必要があります。Solaris 10 4/09 リリース以降では、新しい鍵を追加したあと policy サービスを再起動し、ike サービスを更新します。


注 –

Solaris 10 4/09 リリースより前のリリースでこの手順を実行するには、例 23–3 を参照してください。


始める前に

この手順では、次のように仮定しています。

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

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


    注 –

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


  2. このシステムで乱数を生成し、64 から 448 ビットの鍵を作成します。

    詳細については、「Solaris System で乱数を生成するには」を参照してください。Solaris システムが ASCII 形式を必要とするオペレーティングシステムと通信する場合、事前共有鍵を生成する方法については、例 23–1 を参照してください。

  3. このキーを何らかの方法でリモートシステムの管理者に送信します。

    両者は、同じ事前共有鍵を同時に追加する必要があります。この鍵の安全性は転送機構の安全性と同じです。登録済みメールや保護済み FAX マシンなど、帯域外機構を使用することが最良です。ssh セッションを使用して両方のシステムを管理することもできます。

  4. enigmaada の鍵を管理するための IKE の規則を作成します。

    1. enigma システムで、次の規則を /etc/inet/ike/config ファイルに追加します。


      ### ike/config file on enigma, 192.168.116.16
       
      ## The rule to communicate with ada
      
      {label "enigma-to-ada"
       local_addr 192.168.116.16
       remote_addr 192.168.15.7
       p1_xform
       {auth_method preshared oakley_group 5 auth_alg sha1 encr_alg blowfish}
       p2_pfs 5
      	}
    2. ada システムで、次の規則を追加します。


      ### ike/config file on ada, 192.168.15.7
       
      ## The rule to communicate with enigma
      
      {label "ada-to-enigma"
       local_addr 192.168.15.7
       remote_addr 192.168.116.16
       p1_xform
       {auth_method preshared oakley_group 5 auth_alg sha1 encr_alg blowfish}
       p2_pfs 5
      }
  5. リブート時に IKE 事前共有鍵が利用できることを確認します。

    1. enigma システムで、次の情報を /etc/inet/secret/ike.preshared ファイルに追加します。


      # ike.preshared on enigma for the ada interface
      # 
      { localidtype IP
        localid 192.168.116.16
        remoteidtype IP
        remoteid 192.168.15.7
        # enigma and ada's shared key in hex (32 - 448 bits required)
        key 8d1fb4ee500e2bea071deb2e781cb48374411af5a9671714672bb1749ad9364d
      }
    2. ada システムで、次の情報を ike.preshared ファイルに追加します。


      # ike.preshared on ada for the enigma interface
      # 
      { localidtype IP
        localid 192.168.15.7
        remoteidtype IP
        remoteid 192.168.116.16
        # ada and enigma's shared key in hex (32 - 448 bits required)
        key 8d1fb4ee500e2bea071deb2e781cb48374411af5a9671714672bb1749ad9364d
      }
  6. 各システムで、IPsec ポリシーサービスを再起動して、追加したインタフェースをセキュリティー保護します。


    # svcadm restart policy
    
  7. 各システムで、ike サービスを更新します。


    # svcadm refresh ike
    
  8. 両システムが通信できることを確認します。

    詳細は、「事前共有鍵が同一であることを確認する方法」を参照してください。


例 23–3 新しい IPsec ポリシーエントリに IKE 事前共有鍵を追加する

次の例では、現在の Solaris リリースが稼働していない Solaris システムに管理者が事前共有鍵を追加しようとしています。管理者は前の手順に従って ike/config ファイルと ike.preshared ファイルを変更し、鍵を生成し、リモートシステムに接続します。管理者は各種のコマンドを使用して、新しい IPsec ポリシーおよび IKE ルールをカーネルに読み込みます。


Procedure事前共有鍵が同一であることを確認する方法

通信するシステム上の事前共有鍵が同一でない場合、それらのシステムは認証できません。

始める前に

テストしている 2 つのシステム間では IPsec が設定されており、有効になっています。現在の Solaris 10 リリースが稼働しています。


注 –

Solaris 10 4/09 リリースより前のリリースでこの手順を実行するには、例 23–2 を参照してください。


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

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


    注 –

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


  2. 各システムで、in.iked デーモンの特権レベルをチェックします。


    # svcprop -p config/admin_privilege ike
    base
    • 特権レベルが keymat であれば、手順 3 に進みます。

    • 特権レベルが base または modkeys の場合は、特権レベルを高くします。

      その後、ike サービスを更新してから再起動します。


      # svccfg -s ike setprop config/admin_privilege=keymat
      # svcadm refresh ike ; svcadm restart ike
      # svcprop -p config/admin_privilege ike
      keymat
  3. システムごとに、事前共有鍵情報を表示します。


    # ikeadm dump preshared
    PSKEY: Preshared key (24 bytes): f47cb…/192
    LOCIP: AF_INET: port 0, 192.168.116.16 (enigma).
    REMIP: AF_INET: port 0, 192.168.13.213 (partym).
  4. 両方のダンプを比較します。

    事前共有鍵が同一でない場合は、/etc/inet/secret/ike.preshared ファイルで、一方のキーを他方のキーで置き換えます。

  5. 確認が終わったら、各システム上で特権レベルをデフォルトに戻します。


    # svccfg -s ike setprop config/admin_privilege=base
    # svcadm restart ike