作業 |
説明 |
参照先 |
---|---|---|
事前共有鍵による IKE の設定 |
有効な IKE ポリシーファイルと ike.preshared ファイルを作成する。また、システムをブートして IKE によって生成された鍵を使用する前に、IPsec ファイルも設定する | |
実行中の IKE システムでの事前共有鍵の更新 |
IKE 権限レベルをチェックし、通信するシステムの ipseckeys ファイルに最新のキー情報を追加する | |
実行中の IKE システムへの事前共有鍵の追加 |
IKE 権限レベルをチェックし、通信するシステムの最新キー情報に応じて ikeadm コマンドを実行する | |
事前共有鍵が同一であることのチェック |
両方のシステムの事前共有鍵のダンプを行う |
IKE 実装では、鍵の長さが異なるさまざまなアルゴリズムが提供されます。キーの長さは、サイトのセキュリティに応じて選択します。一般的に、鍵の長さが長いほど、セキュリティが高くなります。
これらの手順には、システム名 enigma および partym を使用します。enigma と partym を各自使用しているシステムの名前に置き換えてください。
システムコンソールから、スーパーユーザーになるか、同等の役割を引き受けます。
リモートログインすると、セキュリティ上重要なトラフィックが盗聴される恐れがあります。何らかの方法でリモートログインを保護していても、システムのセキュリティがリモートログインセッションレベルに低下します。
システムごとに、/etc/inet/ike/config.sample ファイルを /etc/inet/ike/config にコピーします。
システムごとに、規則とグローバルパラメータを ike/config ファイルに入力します。
これらの規則やグローバルパラメータは、システムの ipsecinit.conf ファイルに設定されている IPsec ポリシーが正しく動作するものでなければなりません。次の ike/config の例は、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 "enigma-partym" ラベルは一意でなくてはなりません local_addr 192.168.116.16 remote_addr 192.168.13.213 p1_xform { auth_method preshared oakley_group 5 auth_alg md5 encr_alg 3des } 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 "partym-enigma" ラベルは一意でなくてはなりません local_addr 192.168.13.213 remote_addr 192.168.116.16 p1_xform { auth_method preshared oakley_group 5 auth_alg md5 encr_alg 3des } 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 コマンドの説明については、乱数を生成する方法と od(1) のマニュアルページを参照してください。
手順 5 の出力から、キーを 1 つ作成します。
f47cb0f432e14480951095f82b735ba80a9467d08f92c88068b6a40e |
この手順の認証アルゴリズムは MD5 です (手順 3 を参照)。事前共有鍵として推奨する最小のサイズは、ハッシュのサイズ (つまり、認証アルゴリズムの出力のサイズ) で決まります。MD5 アルゴリズムの出力は 128 ビットすなわち 32 文字です。この例の鍵は、推奨されている最小文字数より長い 56 文字です。
システムごとに /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 } |
両システムの事前共有鍵は同一にする必要があります。
この手順では、リブートすることなく、一定の間隔で既存の事前共有鍵を置き換えたい場合を想定しています。3DES や Blowfish などの強力な暗号化アルゴリズムを使用するときは、両方のシステムのリブート時に鍵を変更するようスケジュールしたほうがよい場合もあります。
システムコンソールから、スーパーユーザーになるか、同等の役割を引き受けます。
リモートログインすると、セキュリティ上重要なトラフィックが盗聴される恐れがあります。何らかの方法でリモートログインを保護していても、システムのセキュリティがリモートログインセッションレベルに低下します。
乱数を生成し、適切な長さのキーを作成します。
詳細については、乱数を生成する方法を参照してください。
システムごとに /etc/inet/secret/ike.preshared ファイルを編集して、現在のキーを新しいキーに変更します。
たとえば、ホスト enigma と partym で、key の値をそれと同じ長さの新しい数値で置き換えます。
in.iked デーモンがキー情報の変更を許可するかどうか確認します。
# /usr/sbin/ikeadm get priv Current privilege level is 0x2, access to keying material enabled |
コマンドから 0x1 または 0x2 の権限レベルが戻された場合には、キー情報を変更できます。レベル 0x0 の場合には、キー情報を操作できません。デフォルトでは、in.iked デーモンは 0x0 の権限レベルで実行されます。
in.iked デーモンがキー情報の変更を許可する場合は、ike.preshared ファイルの新しいバージョンを読み込みます。
# ikeadm read preshared |
in.iked デーモンがキー情報の変更を許可しない場合は、デーモンを強制終了してから再起動します。
# pkill in.iked # /usr/lib/inet/in.iked |
デーモンは再起動時に ike.preshared ファイルの新しいバージョンを読み込みます。
ipsecinit.conf ファイルのポリシーエントリごとに 1 つの事前共有鍵が必要です。IPsec と IKE が動作している間に新しいポリシーエントリを追加すれば、in.iked デーモンはそれらの新しい鍵を読み込むことができます。この手順では、次の条件がすでにそろっているものとします。
2 つのシステム enigma および ada(実際に使用するシステムの名前で置き換え)
両システムで in.iked デーモンが動作している
IPsec を使って保護したいインタフェースが、両システムの /etc/hosts ファイルのエントリとして存在する。次に例を示す
192.168.15.7 ada |
/etc/inet/ipnodes ファイル内の Ipv6 アドレスにも同じ手順を適用
両システムの /etc/inet/ipsecinit.conf ファイルに新しいポリシーエントリが追加されている。たとえば、enigma システムの新しいエントリは次のようになる
{laddr enigma raddr ada} ipsec {auth_algs any encr_algs any sa shared} |
ada システムのエントリは次のようになる
{laddr ada raddr enigma} ipsec {auth_algs any encr_algs any sa shared} |
enigma システムと ada システムが安全に通信できるようにするための規則を、両システムの /etc/inet/ike/config ファイルに記述している。たとえば、enigma システム上の規則は次のようになる
### 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 md5 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 md5 encr_alg blowfish } p2_pfs 5 } |
システムコンソールから、スーパーユーザーになるか、同等の役割を引き受けます。
リモートログインすると、セキュリティ上重要なトラフィックが盗聴される恐れがあります。何らかの方法でリモートログインを保護していても、システムのセキュリティがリモートログインセッションレベルに低下します。
in.iked デーモンがキー情報の変更を許可するかどうか確認します。
# /usr/sbin/ikeadm get priv Current privilege level is 0x0, base privileges enabled |
コマンドから 0x1 または 0x2 の権限レベルが戻された場合には、キー情報を変更できます。レベル 0x0 の場合には、キー情報を操作できません。デフォルトでは、in.iked デーモンは 0x0 の権限レベルで実行されます。
in.iked デーモンがキー情報の変更を許可しない場合は、デーモンを強制終了します。次に、正しい権限レベルでデーモンを再起動します。
# pkill in.iked # /usr/lib/inet/in.iked -p 2 Setting priv/usr/lib/inet/in.iked -pilege level to 2! |
乱数を生成し、64 〜 448 ビットのキーを作成します。
詳細については、乱数を生成する方法を参照してください。
このキーを何らかの方法でリモートシステムの管理者に送信します。
両者は、同じ事前共有鍵を同時に追加する必要があります。
ikeadm コマンドモードの add preshared サブコマンドを使って新しいキー情報を追加します。
ikeadm> add preshared { localidtype id-type localid id remoteidtype id-type remoteid id ike_mode mode key key } |
id のタイプを指定する
id-type が IP のとき IP アドレスを指定する
16 進数の事前共有鍵を指定する
たとえば、ホスト enigma で新しいインタフェース ada 用のキーを追加します。
# ikeadm ikeadm> add preshared { localidtype ip localid 192.168.116.16 remoteidtype ip remoteid 192.168.15.7 ike_mode main key 8d1fb4ee500e2bea071deb2e781cb48374411af5a9671714672bb1749ad9364d } ikeadm: Successfully created new preshared key. |
ホスト ada でも、同じキーを追加します。
# ikeadm ikeadm> add preshared { localidtype ip localid 192.168.116.16 remoteidtype ip remoteid 192.168.15.7 ike_mode main key 8d1fb4ee500e2bea071deb2e781cb48374411af5a9671714672bb1749ad9364d } ikeadm: Successfully created new preshared key. |
ikeadm コマンドモードを終了します。
ikeadm> exit # |
システムごとに、in.iked デーモンの権限レベルを低くします。
# ikeadm set priv base |
システムごとに、ipsecinit.conf ファイルを有効にして、追加したインタフェースを保護します。
# ipsecconf -a /etc/inet/ipsecinit.conf |
ipsecconf コマンドの実行時には警告を読んでください。in.iked デーモンの再起動時にも、同じ警告が表示されます。ソケットがすでにラッチされている (使用されている) 場合には、システムへ侵入される恐れがあります。詳細については、ipsecinit.conf と ipsecconf のセキュリティについてを参照してください。
システムごとに、ikeadm コマンドを実行して新しい規則を読み込みます。
# ikeadm read rules |
ada および enigma システムの新しい規則の例がこの手順の始めにあります。規則は /etc/inet/ike/config ファイルに格納されているため、ikeadm コマンドでファイル名を指定する必要はありません。
IKE 事前共有鍵がリブート時に確実に使用できるように、この鍵を /etc/inet/secret/ike.preshared ファイルに追加します。
たとえば、enigma システムで、次のキー情報を 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 } |
両システムが通信できることを確認します。事前共有鍵が同一であることを確認する方法を参照してください。
通信する各システムの事前共有鍵が同一でない場合は、次のエラーメッセージが表示されます。
# rup system2 system2: RPC: Rpcbind failure |
システムコンソールから、スーパーユーザーになるか、同等の役割を引き受けます。
リモートログインすると、セキュリティ上重要なトラフィックが盗聴される恐れがあります。何らかの方法でリモートログインを保護していても、システムのセキュリティがリモートログインセッションレベルに低下します。
in.iked デーモンがキー情報の変更を許可していることを確認します。
# /usr/sbin/ikeadm get priv Current privilege level is 0x0, base privileges enabled |
権限レベル 0x2 が返される場合は、キー情報を表示できます。レベル 0x0 の場合には、キー情報を操作できません。デフォルトでは、in.iked デーモンは、0x0 の権限レベルで実行されます。
in.iked デーモンがキー情報の表示を許可しない場合は、このデーモンを強制終了します。次に、正しい権限レベルでデーモンを再起動します。
# pkill in.iked # /usr/lib/inet/in.iked -p 2 Setting priv/usr/lib/inet/in.iked -pilege level to 2! |
システムごとに、事前共有鍵情報を表示します。
# 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 ファイルで、一方のキーを他方のキーで置き換えます。
確認が終わったら、in.iked デーモンの権限レベルを低くします。
# ikeadm set priv base |