事前共有鍵は、IKE 用の最も簡単な認証方法です。2 つのシステムが IKE を使用するように設定している場合、さらに、両方のシステムの管理者である場合、事前共有鍵を使用することはよい選択です。しかし、公開鍵認証とは異なり、事前共有鍵は特定の IP アドレスに縛られます。事前共有鍵は、移動体システムなど、番号が変更される可能性があるシステムでは使用できません。また、事前共有鍵を使用するときには、接続されたハードウェアに IKE 計算を任せることはできません。
IKE 実装では、鍵の長さが異なるさまざまなアルゴリズムが提供されます。鍵の長さは、サイトのセキュリティーに応じて選択します。一般的に、鍵の長さが長いほど、セキュリティーが高くなります。
これらの手順には、システム名 enigma および partym を使用します。enigma と partym を各自使用しているシステムの名前に置き換えてください。
システムコンソール上で、Primary Administrator の役割を引き受けるか、スーパーユーザーになります。
Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。
リモートログインすると、セキュリティー上重要なトラフィックが盗聴される恐れがあります。何らかの方法でリモートログインを保護していても、システムのセキュリティーがリモートログインセッションレベルに低下します。セキュリティー保護されたリモートログインには、ssh コマンドを使用してください。
システムごとに、/etc/inet/ike/config.sample ファイルを /etc/inet/ike/config にコピーします。
システムごとに、規則とグローバルパラメータを ike/config ファイルに入力します。
これらの規則やグローバルパラメータは、システムの ipsecinit.conf ファイルに設定されている IPsec ポリシーが正しく動作するものでなければなりません。次の ike/config の例は、「IPsec で 2 つのシステム間のトラフィックを保護するには」の ipsecinit.conf の例で機能します。
たとえば、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 パラメータのすべての引数は同じ行になければなりません。
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 } |
# /usr/lib/inet/in.iked -c -f /etc/inet/ike/config |
乱数発生関数がすでにある場合は、それを使用してください。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 を参照してください。
手順 5 の出力から、1 つの鍵を作成します。
f47cb0f432e14480951095f82b735ba80a9467d08f92c88068b6a40e |
この手順における認証アルゴリズムは SHA–1 です (手順 3 を参照)。事前共有鍵として推奨する最小のサイズは、ハッシュのサイズ (つまり、認証アルゴリズムの出力のサイズ) で決まります。SHA–1 アルゴリズムの出力は 160 ビット、すなわち 40 文字です。例の鍵の長さは 56 文字であり、IKE が使用する鍵情報が追加されています。
システムごとに /etc/inet/secret/ike.preshared ファイルを作成します。
各ファイルに事前共有鍵を書き込みます。
たとえば、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 } |
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 } |
両システムの事前共有鍵は同一にする必要があります。
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 を伝えます。
この手順では、一定の間隔で既存の事前共有鍵を置き換えたい場合を想定しています。
システムコンソール上で、Primary Administrator の役割を引き受けるか、スーパーユーザーになります。
Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。
リモートログインすると、セキュリティー上重要なトラフィックが盗聴される恐れがあります。何らかの方法でリモートログインを保護していても、システムのセキュリティーがリモートログインセッションレベルに低下します。セキュリティー保護されたリモートログインには、ssh コマンドを使用してください。
乱数を生成し、適切な長さのキーを作成します。
詳細については、「Solaris System で乱数を生成するには」を参照してください。Solaris システムが ASCII 形式を必要とするオペレーティングシステムと通信する場合、事前共有鍵を生成する方法については、例 23–1 を参照してください。
現在の鍵を新しい鍵で置き換えます。
たとえば、ホスト enigma と partym において、 /etc/inet/secret/ike.preshared ファイルの key の値を、同じ長さの新しい番号で置き換えます。
Solaris 10 4/09 リリース以降では、ike サービスを更新します。
# svcadm refresh ike |
Solaris 10 4/09 リリースより前のリリースを実行している場合は、in.iked デーモンを強制終了および再起動します。
# /usr/sbin/ikeadm get priv Current privilege level is 0x0, base privileges enabled |
コマンドから 0x1 または 0x2 の特権レベルが戻された場合には、鍵情報を変更できます。0x0 の特権レベルでは、鍵情報を変更または表示する操作を行うことはできません。デフォルトでは、in.iked デーモンは 0x0 の特権レベルで実行されます。
特権レベルが 0x0 の場合、デーモンを強制終了および再起動します。
デーモンを再起動すると、ike.preshared ファイルの新しいバージョンを読み取ります。
# pkill in.iked # /usr/lib/inet/in.iked |
特権レベルが 0x1 または 0x2 である場合、ike.preshared ファイルの新しいバージョンを読み取ります。
# ikeadm read preshared |
デフォルトでは、ikeadm コマンドではフェーズ 1 SA のダンプに実際の鍵を表示できないようになっています。鍵を表示するとデバッグに役立ちます。
実際の鍵を表示するには、デーモンの特権レベルを高くする必要があります。特権レベルについては、「IKE 管理コマンド」を参照してください。
Solaris 10 4/09 リリースより前のリリースでこの手順を実行するには、例 23–2 を参照してください。
IKE は構成済みで、ike サービスは実行中です。
IKE の事前共有鍵を表示します。
# ikeadm ikeadm> dump preshared |
エラーが発生する場合は、in.iked デーモンの特権レベルを高くします。
SMF リポジトリの in.iked デーモンの特権レベルを高くします。
# svcprop -p config/admin_privilege ike base # svccfg -s ike setprop config/admin_privilege=keymat |
実行中の in.iked デーモンの特権レベルを高くします。
# svcadm refresh ike ; svcadm restart ike |
(省略可能) 特権レベルが keymat であることを確認します。
# svcprop -p config/admin_privilege ike keymat |
手順 1 をもう一度実行して鍵を表示します。
IKE デーモンを基本の特権レベルに戻します。
次の例では、現在の Solaris リリースが稼働していない Solaris システムで管理者が鍵を表示しようとしています。管理者は、このシステムの鍵が通信先のシステムの鍵と同じであることを確認する必要があります。2 つのシステムの鍵が同じであることを確認したあと、管理者は特権レベルを 0 に戻します。
まず、管理者は in.iked デーモンの特権レベルを調べます。
adm1 # /usr/sbin/ikeadm get priv Current privilege level is 0x0, base privileges enabled |
特権レベルが 0x1 または 0x2 になっていないため、管理者は in.iked デーモンを停止してから特権レベルを 2 に上げます。
adm1 # pkill in.iked adm1 # /usr/lib/inet/in.iked -p 2 Setting privilege level to 2 |
管理者は鍵を表示します。
adm1 # ikeadm dump preshared PSKEY: Preshared key (24 bytes): f47cb…/192 LOCIP: AF_INET: port 0, 192.168.116.16 (adm1). REMIP: AF_INET: port 0, 192.168.13.213 (com1). |
管理者は通信先のシステムにリモートでログインし、鍵が同じかどうかを調べます。
その後、基本の特権レベルに戻します。
# ikeadm set priv base |
IPsec と IKE の実行中に IPsec ポリシーのエントリを追加した場合は、新しいポリシーおよび IKE ルールをカーネルに読み込む必要があります。Solaris 10 4/09 リリース以降では、新しい鍵を追加したあと policy サービスを再起動し、ike サービスを更新します。
Solaris 10 4/09 リリースより前のリリースでこの手順を実行するには、例 23–3 を参照してください。
この手順では、次のように仮定しています。
enigma システムは、「事前共有鍵により IKE を設定する方法」で説明されているように設定されている。
enigma システムは、新しいシステム ada を使用して、そのトラフィックを保護しようとしている。
両システムで in.iked デーモンが動作している。
両システムの /etc/hosts ファイルには、各システムのインタフェースのエントリが登録されている。次に例を示します。
192.168.15.7 ada 192.168.116.16 enigma |
この手順は、/etc/inet/ipnodes ファイル内の Ipv6 アドレスにも適用されます。Solaris 10 6/07 リリース以降では、IPv6 エントリは /etc/hosts ファイルに格納されています。
両システムの /etc/inet/ipsecinit.conf ファイルに新しいポリシーエントリが追加されている。この場合、エントリは次のようになります。
# ipsecinit.conf file for enigma {laddr enigma raddr ada} ipsec {auth_algs any encr_algs any sa shared} |
# ipsecinit.conf file for ada {laddr ada raddr enigma} ipsec {auth_algs any encr_algs any sa shared} |
現在のリリースの場合は、次のコマンドを使用して、各システムの /etc/inet/ipsecinit.conf ファイルの構文を確認してある。
# ipsecconf -c -f /etc/inet/ipsecinit.conf |
システムコンソール上で、Primary Administrator の役割を引き受けるか、スーパーユーザーになります。
Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。
リモートログインすると、セキュリティー上重要なトラフィックが盗聴される恐れがあります。何らかの方法でリモートログインを保護していても、システムのセキュリティーがリモートログインセッションレベルに低下します。セキュリティー保護されたリモートログインには、ssh コマンドを使用してください。
このシステムで乱数を生成し、64 から 448 ビットの鍵を作成します。
詳細については、「Solaris System で乱数を生成するには」を参照してください。Solaris システムが ASCII 形式を必要とするオペレーティングシステムと通信する場合、事前共有鍵を生成する方法については、例 23–1 を参照してください。
このキーを何らかの方法でリモートシステムの管理者に送信します。
両者は、同じ事前共有鍵を同時に追加する必要があります。この鍵の安全性は転送機構の安全性と同じです。登録済みメールや保護済み FAX マシンなど、帯域外機構を使用することが最良です。ssh セッションを使用して両方のシステムを管理することもできます。
enigma と ada の鍵を管理するための IKE の規則を作成します。
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 } |
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 } |
リブート時に IKE 事前共有鍵が利用できることを確認します。
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 } |
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 } |
各システムで、IPsec ポリシーサービスを再起動して、追加したインタフェースをセキュリティー保護します。
# svcadm restart policy |
各システムで、ike サービスを更新します。
# svcadm refresh ike |
両システムが通信できることを確認します。
詳細は、「事前共有鍵が同一であることを確認する方法」を参照してください。
次の例では、現在の Solaris リリースが稼働していない Solaris システムに管理者が事前共有鍵を追加しようとしています。管理者は前の手順に従って ike/config ファイルと ike.preshared ファイルを変更し、鍵を生成し、リモートシステムに接続します。管理者は各種のコマンドを使用して、新しい IPsec ポリシーおよび IKE ルールをカーネルに読み込みます。
新しい鍵を生成する前に、管理者は in.iked デーモンの特権レベルを 2 に設定します。
# pkill in.iked # /usr/lib/inet/in.iked -p 2 Setting privilege level to 2 |
通信先のシステムに鍵を送信し、新しい鍵をシステムに追加したあと、管理者は特権レベルを低くします。
# ikeadm set priv base |
次に、管理者は新しい IPsec ポリシーをカーネルに読み込みます。
# ipsecconf -a /etc/inet/ipsecinit.conf |
最後に、新しい IKE ルールをカーネルに読み込みます。
# ikeadm read rules |
通信するシステム上の事前共有鍵が同一でない場合、それらのシステムは認証できません。
テストしている 2 つのシステム間では IPsec が設定されており、有効になっています。現在の Solaris 10 リリースが稼働しています。
Solaris 10 4/09 リリースより前のリリースでこの手順を実行するには、例 23–2 を参照してください。
システムコンソール上で、Primary Administrator の役割を引き受けるか、スーパーユーザーになります。
Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。
リモートログインすると、セキュリティー上重要なトラフィックが盗聴される恐れがあります。何らかの方法でリモートログインを保護していても、システムのセキュリティーがリモートログインセッションレベルに低下します。セキュリティー保護されたリモートログインには、ssh コマンドを使用してください。
各システムで、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 |
システムごとに、事前共有鍵情報を表示します。
# 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). |
両方のダンプを比較します。
事前共有鍵が同一でない場合は、/etc/inet/secret/ike.preshared ファイルで、一方のキーを他方のキーで置き換えます。
確認が終わったら、各システム上で特権レベルをデフォルトに戻します。
# svccfg -s ike setprop config/admin_privilege=base # svcadm restart ike |