この章では、ネットワークに IPsec を実装する手順について説明します。この手順は、次の作業マップで説明されています。
IPsec の概要については、第 19 章IP セキュリティーアーキテクチャー (概要)を参照してください。IPsec の参考情報については、第 21 章IP セキュリティーアーキテクチャー (リファレンス)を参照してください。
次の作業マップに、1 台以上のシステム間で IPsec を設定する手順を示します。ipsecconf(1M)、ipseckey(1M)、および ifconfig(1m) のマニュアルページも、それぞれの「例」で役立つ手順を説明しています。
この節では、2 つのシステム間のトラフィックを保護する手順と、Web サーバーを保護する手順について説明します。VPN を保護する手順については、「IPsec による VPN の保護 (作業マップ) 」を参照してください。追加手順では、鍵情報とセキュリティーアソシエーションの提供、IPsec が設定どおり動作しているかどうかの確認を行います。
次の情報は、すべての IPsec 構成作業で使用されます。
IPsec とゾーン – 共有 IP 非大域ゾーンの IPsec ポリシーとキーを管理するには、大域ゾーンで IPsec ポリシーファイルを作成し、大域ゾーンで IPsec 構成コマンドを実行します。構成中の非大域ゾーンに対応する発信元アドレスを使用してください。大域ゾーンでは、大域ゾーンの IPsec ポリシーとキーも設定できます。排他的 IP ゾーンについては、非大域ゾーンで IPsec ポリシーを構成します。Solaris 10 7/07 リリース以降では、非大域ゾーンのキーの管理に IKE を使用できます。
IPsec と RBAC – IPsec を管理する役割を使用する方法については、『Solaris のシステム管理 (セキュリティサービス)』の第 9 章「役割によるアクセス制御の使用 (手順)」を参照してください。例については、「ネットワークセキュリティーの役割を設定する方法」を参照してください。
IPsec と SCTP – IPsec は、Streams Control Transmission Protocol (SCTP) アソシエーションを保護するのに使用できますが、注意が必要です。詳細は、「IPsec と SCTP」を参照してください。
この手順では、次の設定がすでになされているものとします。
2 つのシステムが enigma および partym と名付けられている。
各システムには、2 つのアドレス (IPv4 アドレスと IPv6 アドレス) がある。
各システムには、AES アルゴリズムを使用した ESP 暗号化 (128 ビットのキーが必要) と、SHA1 メッセージ要約を使用した ESP 認証 (160 ビットのキーが必要) が必要です。
各システムは、共有セキュリティーアソシエーションを使用します。
共有セキュリティーアソシエーションでは、2 つのシステムを保護するのに必要なのは 1 組だけの SA です。
システムまたは共有 IP ゾーンの IPsec ポリシーの構成は、大域ゾーンで行う必要があります。排他的 IP ゾーンについては、非大域ゾーンで IPsec ポリシーを構成します。
システムコンソール上で、Primary Administrator の役割を引き受けるか、スーパーユーザーになります。
Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。
リモートログインすると、セキュリティー上重要なトラフィックが盗聴される可能性があります。何らかの方法でリモートログインを保護していても、システムのセキュリティーがリモートログインセッションレベルに低下します。セキュリティー保護されたリモートログインには、ssh コマンドを使用してください。例については、例 20–1 を参照してください。
現在のリリースでは、/etc/inet/hosts ファイルにホストエントリを追加します。
Solaris 10 7/07 リリースより前のリリースを実行しているシステムでは、/etc/inet/ipnodes ファイルに IPv4 と IPv6 のエントリを追加します。次のように、1 つのシステムのエントリは連続してそのファイルに入力します。システムの構成ファイルについては、「TCP/IP 構成ファイル」および第 11 章IPv6 の詳細 (リファレンス)を参照してください。
IPv4 アドレスだけを持つシステムどうしを接続する場合は、/etc/inet/hosts ファイルに変更を加えます。この例で接続するシステムはどちらも、以前の Solaris リリースを実行しており、IPv6 アドレスを使用しています。
ファイル名は /etc/inet/ipsecinit.conf です。例は、/etc/inet/ipsecinit.sample ファイルを参照してください。
IPsec ポリシーエントリを ipsecinit.conf ファイルに追加します。
enigma システムで、次のポリシーを追加します。
{laddr enigma raddr partym} ipsec {encr_algs aes encr_auth_algs sha1 sa shared} |
partym システムで、同じポリシーを追加します。
{laddr partym raddr enigma} ipsec {encr_algs aes encr_auth_algs sha1 sa shared} |
IPsec ポリシーエントリの構文については、ipsecconf(1M)のマニュアルページを参照してください。
各システムで、2 つのシステム間に IPsec SA ペアを追加します。
インターネットキー交換 (IKE) を設定すると、SA が自動的に生成されます。SA は手動でも追加できます。
キーの生成や保守を手動で行う必要が特にない場合は、IKE を使用すべきです。IKE 鍵管理では、手動での鍵管理よりも強力なセキュリティー効果が得られます。
「IKE の設定 (作業マップ)」の構成手順のいずれかに従って、IKE を構成します。IKE 構成ファイルの構文については、ike.config(4) のマニュアルページを参照してください。
SA を手動で追加する場合は、「IPsec セキュリティーアソシエーションを手動で作成する方法」を参照してください。
IPsec ポリシーを有効にします。
Solaris 10 4/09 リリースより前のリリースを実行している場合は、システムを再起動します。
# init 6 |
その後、「IPsec によってパケットが保護されていることを確認する方法」に進みます。
Solaris 10 4/09 リリース以降では、IPsec サービスを更新し、鍵管理サービスを有効にします。
# ipsecconf -c -f /etc/inet/ipsecinit.conf |
エラーがあれば修正し、ファイルの構文を確認してから続行します。
# svcadm refresh svc:/network/ipsec/policy:default |
IPsec ポリシーはデフォルトで有効になっているので、「更新」を行います。IPsec ポリシーを無効にしてある場合は有効にしてください。
# svcadm enable svc:/network/ipsec/policy:default |
IPsec 用の鍵を有効にします。
パケットが保護されていることを確認します。
手順については、「IPsec によってパケットが保護されていることを確認する方法」を参照してください。
この例では、管理者はスーパーユーザーとして 2 つのシステムの IPsec ポリシーと鍵を構成します。その際、ssh コマンドを使用して 2 番目のシステムにアクセスします。詳細は、ssh(1) のマニュアルページを参照してください。
次に、別の端末ウィンドウで、ssh コマンドを使用して 2 番目のシステムにログインします。
local-system # ssh other-system other-system # |
ssh セッションの端末ウィンドウで、手順 2 から 手順 6 までを実行して、2 番目のシステムの IPsec ポリシーと鍵を構成します。
ここで ssh セッションを終了します。
other-system # exit local-system # |
最後に、手順 6 を実行して、最初のシステムの IPsec ポリシーを有効にします。
2 つのシステムが次に通信を行うとき、ssh 接続を使用した通信も含め、通信は IPsec で保護されます。
次の例は、Solaris 10 4/09 リリースより前のリリースを実行している場合に役立ちます。つまり、そのようなリリースでは、IPsec はサービスとして管理されません。この例では、テスト環境での IPsec の実装方法を示します。実際の稼働環境では、ipsecconf コマンドを実行するよりもリブートする方が安全です。セキュリティー上の考慮事項については、この例の最後を参照してください。
手順 6 でリブートする代わりに、次のオプションのいずれかを選択します。
IKE を使って鍵情報を作成した場合は、in.iked デーモンをいったん停止後、再起動します。
# pkill in.iked # /usr/lib/inet/in.iked |
キーを手動で追加した場合は、ipseckey コマンドを使用して、データベースに SA を追加します。
# ipseckey -c -f /etc/inet/secret/ipseckeys |
続いて、ipsecconf コマンドを使用して IPsec ポリシーを有効にします。
# ipsecconf -a /etc/inet/ipsecinit.conf |
セキュリティーについて – ipsecconf コマンドを実行するときには、警告を読んでください。ソケットがすでにラッチされている (使用されている) 場合には、システムへ侵入される恐れがあります。詳細については、「ipsecinit.conf と ipsecconf のセキュリティーについて」を参照してください。
セキュリティー保護された Web サーバーでは、Web クライアントであれば Web サービスと通信できます。セキュリティー保護された Web サーバーでは、Web トラフィック以外のトラフィックは、セキュリティー検査を通る必要があります。次の手順には、Web トラフィックの検査省略手順が含まれています。さらに、この Web サーバーでは、セキュリティー保護されていない DNS クライアント要求を出すことができます。その他のすべてのトラフィックでは、AES と SHA-1 アルゴリズムによる ESP が必要です。
IPsec ポリシーの構成は大域ゾーンで行う必要があります。排他的 IP ゾーンについては、非大域ゾーンで IPsec ポリシーを構成します。「IPsec で 2 つのシステム間のトラフィックを保護するには」を完了して、次の条件が成立しています。
2 つのシステム間の通信は IPsec で保護されています。
鍵情報は手動または IKE によって生成されます。
パケットが保護されていることを確認してあります。
システムコンソール上で、Primary Administrator の役割を引き受けるか、スーパーユーザーになります。
Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。
リモートログインすると、セキュリティー上重要なトラフィックが盗聴される恐れがあります。何らかの方法でリモートログインを保護していても、システムのセキュリティーがリモートログインセッションレベルに低下します。セキュリティー保護されたリモートログインには、ssh コマンドを使用してください。
セキュリティーポリシー検査を省略するサービスを指定します。
Web サーバーの場合、TCP ポート 80 (HTTP) と 443 (保護 HTTP) が該当します。Web サーバーが DNS 名検査をするときは、TCP と UDP の両方にポート 53 も組み込む必要がある場合もあります。
Web サーバーの IPsec ポリシーを作成し、有効にします。
手順 12 はすべての Solaris リリースで省略可能です。
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 で説明した、検査を省略するトラフィックは例外です。
IPsec ポリシーファイルの構文を確認します。
# ipsecconf -c -f /etc/inet/ipsecinit.conf |
IPsec ポリシーを更新します。
# svcadm refresh svc:/network/ipsec/policy:default |
IPsec 用の鍵を更新します。
「IPsec で 2 つのシステム間のトラフィックを保護するには」の手順 5 で IKE を構成した場合は、ike サービスを再起動します。
# svcadm restart svc:/network/ipsec/ike |
「IPsec で 2 つのシステム間のトラフィックを保護するには」の手順 5 で鍵を手動で構成した場合は、manual-key サービスを更新します。
# svcadm refresh svc:/network/ipsec/manual-key:default |
これで設定が完了しました。必要に応じて、手順 12 を実行します。
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 で説明した、検査を省略するトラフィックは例外です。
手順 8 で作成したファイルの内容を /etc/inet/ipsecinit.conf ファイルにコピーします。
IPsecWebInitFile ファイルを読み取り専用アクセス権で保護します。
# chmod 400 IPsecWebInitFile |
リブートせずに 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.conf と ipsecconf のセキュリティーについて」を参照してください。in.iked デーモンの再起動時にも、同じ警告が表示されます。
リブートすることもできます。システムをリブートすると、IPsec ポリシーがすべての TCP 接続に適用されます。リブート時に、IPsec ポリシーのファイルで指定したポリシーが TCP 接続で使用されます。
(省略可能) 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 サーバーと安全に通信できます。
引数を指定しないで ipsecconf コマンドを実行すると、システムに構成されているポリシーを確認できます。
ipsecconf コマンドは大域ゾーンで実行する必要があります。排他的 IP ゾーンについては、非大域ゾーンで ipsecconf コマンドを実行します。
Network IPsec Management プロファイルを持つ役割またはスーパーユーザーになります。
Solaris 10 4/09 リリースより前のリリースを実行している場合、Network IPsec Management プロファイルは使用できません。Network Security プロファイルを使用してください。
ネットワークセキュリティープロファイルを含む役割を作成し、その役割をユーザーに割り当てるには、「ネットワークセキュリティーの役割を設定する方法」を参照してください。
IPsec ポリシーの表示
キーを手動で指定する場合、鍵情報はランダムでなければなりません。Solaris システム用の鍵情報は 16 進形式です。ほかのオペレーティングシステムでは、ASCII 形式の鍵情報が必要になる場合があります。ASCII 形式を必要とするオペレーティングシステムと通信する Solaris システム用に鍵情報を生成する方法については、例 23–1 を参照してください。
乱数発生関数がすでにある場合は、それを使用してください。ない場合は、Solaris の /dev/random デバイスを入力として od コマンドを実行できます。詳細は、od(1) のマニュアルページを参照してください。
Solaris 10 4/09 リリースでは、pktool コマンドも使用できます。このコマンドの構文は、od コマンドの構文より単純です。詳細は、『Solaris のシステム管理 (セキュリティサービス)』の「pktool コマンドを使用して対称鍵を生成する方法」を参照してください。
16 進数の乱数を生成します。
% od -x|-X -A n file | head -n |
8 進数ダンプを 16 進数形式で表示します。16 進数形式は鍵情報を表すのに役立ちます。16 進数を 4 文字単位で表示します。
8 進数ダンプを 16 進数形式で表示します。16 進数を 8 文字単位で表示します。
表示から入力オフセットベースを取り除きます。
乱数のソースとなります。
出力の冒頭の n 行に表示を限定します。
これらの出力を組み合わせて、適切な長さのキーを作成します。
同じ行にある乱数間のスペースを取り除き、32 文字キーを作成します。32 文字キーの長さは 128 ビットです。セキュリティーパラメータインデックス (SPI) の場合は、8 文字キー 1 個を使用します。そのキーは、0x 接頭辞を使用します。
次の例は、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 文字のキーを作成できます。
次の手順では、「IPsec で 2 つのシステム間のトラフィックを保護するには」の手順で使用するキー作成素材を提供します。partym と enigma という 2 つのシステムの鍵を生成しようとしています。一方のシステムで鍵を生成してから、このシステムの鍵を両方のシステムで使用します。
共有 IP ゾーンのキー情報の手動管理は、大域ゾーンで行う必要があります。
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 で乱数を生成するには」を参照してください。
いずれかのシステムのシステムコンソールで、Primary Administrator の役割を引き受けるか、スーパーユーザーになります。
Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。
リモートログインすると、セキュリティー上重要なトラフィックが盗聴される恐れがあります。何らかの方法でリモートログインを保護していても、システムのセキュリティーがリモートログインセッションレベルに低下します。セキュリティー保護されたリモートログインには、ssh コマンドを使用してください。
SA を作成します。
次のコマンドを入力して ipseckey コマンドモードを有効にします。
# ipseckey > |
既存の SA を置き換える場合は、現在の SA を消去してください。
> flush > |
攻撃者に SA を破る時間を与えないように、キー作成素材は置き換えが必要です。
管理者は、通信システム上のキーの置き換えを調整する必要があります。あるシステムの SA を置き換える場合は、それと通信しているリモートシステムの SA も置き換える必要があります。
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 を置き換えることもできます。
esp または ah を指定します。
16 進数形式の最大 8 桁の乱数を指定します。0x が前置されます。セキュリティーパラメータインデックス (SPI) が受け取る以上の桁数を入力すると、超過部分は無視されます。SPI が受け取るより少ない桁数を入力すると、パディングが行われます。
システムの IP アドレスを指定します。
addr のピアシステムの IP アドレスを指定します。
encr または auth を指定します。encr 接頭辞は esp プロトコルとともに使用されます。auth 接頭辞は ah プロトコルとともに、そして、esp プロトコルを認証する場合に使用されます。
ESP または AH のアルゴリズムを指定します。それぞれのアルゴリズムには、特定の長さのキーが必要です。
認証アルゴリズムには MD5 と SHA1 があります。Solaris 10 4/09 リリース以降では、SHA256 と SHA512 がサポートされています。暗号化アルゴリズムには、DES、3DES、AES、および Blowfish があります。
アルゴリズムによって必要とされる長さをもつ 16 進数の乱数を指定します。たとえば、MD5 アルゴリズムでは、128 ビットキーのため 32 桁の乱数が必要です。3DES アルゴリズムでは、192 ビットキーのため 48 桁の乱数が必要です。
たとえば、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 を使用する必要があります。
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 を割り当てるべきです。
ipseckey コマンドモードを終了するには、Control-D キーを押すか、quit と入力します。
/etc/inet/secret/ipseckeys ファイルに鍵情報を追加します。
Solaris 10 4/09 リリースより前のリリースでは、この手順により、リブート時に IPsec で鍵情報を確実に使用できるようになります。
/etc/inet/secret/ipseckeys ファイルの行と ipseckey コマンド行の言語が同じになるようにします。
たとえば、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 |
# chmod 400 /etc/inet/secret/ipseckeys |
partym システムでこの手順を繰り返します。
enigma システムの場合と同じ鍵情報を使用します。
両システムの鍵情報は同じでなければなりません。次の例のように、ipseckeys ファイル内のコメントだけが異なります。コメントが異なるのは、dst enigma が enigma システム上ではインバウンド、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 |
manual-key サービスを有効にします。
# svcadm enable svc:/network/ipsec/manual-key |
現在のリリースで鍵を置き換える方法については、例 20–4 を参照してください。
この例では、管理者が現在の Solaris 10 リリースを実行しているシステムを構成しようとしています。管理者は新しい鍵を生成し、ipseckeys ファイルの鍵情報を変更してから、サービスを再起動します。
まず、管理者は 「Solaris System で乱数を生成するには」を実行して鍵を生成します。
次に、生成された鍵を /etc/inet/secret/ipseckeys ファイルで使用します。
管理者は同じアルゴリズムを使用しました。そのため、SPI、encrkey、および authkey の値だけを変更します。
add esp spi 0x8xzy1492 \ src 192.168.116.16 dst 192.168.13.213 \ encr_alg aes \ auth_alg sha1 \ encrkey 0a1f3886b06ebd7d39f6f89e4c29c93f2741c6fa598a38af969907a29ab1b42a \ authkey a7230aabf513f35785da73e33b064608be41f69a # # add esp spi 0x177xce34\ src 192.168.13.213 dst 192.168.116.16 \ encr_alg aes \ auth_alg sha1 \ encrkey 4ef5be40bf93498017b2151d788bb37e372f091add9b11149fba42435fefe328 \ authkey 0e1875d9ff8e42ab652766a5cad49f38c9152821 |
最後に、管理者は manual-key サービスを再起動します。restart コマンドにより、新しい鍵を追加する前に古い鍵が消去されます
# svcadm restart manual-key |
パケットが保護されていることを確認するには、snoop コマンドで接続をテストします。snoop 出力に表示される接頭辞は、次のとおりです。
AH: 接頭辞は、AH がヘッダーを保護していることを示します。AH: が表示されるのは、auth_alg を使ってトラフィックを保護している場合です。
ESP: 接頭辞は、暗号化されたデータが送信されていることを示します。ESP: が表示されるのは、encr_auth_alg か encr_alg を使ってトラフィックを保護している場合です。
snoop 出力を作成するためには、スーパーユーザーであるか、それと同等の役割でなければなりません。さらに、接続をテストするためには、両方のシステムにアクセスできなければなりません。
一方のシステム (たとえば、partym) でスーパーユーザー になります。
% su - Password: Type root password # |
partym システムから、リモートシステムからパケットをスヌープする準備をします。
partym の端末ウィンドウで、enigma システムからパケットをスヌープします。
# snoop -v enigma Using device /dev/hme (promiscuous mode) |
リモートシステムからパケットを送信します。
別の端末ウィンドウで、enigma システムにリモートからログインします。パスワードを入力します。次に、スーパーユーザーになり、enigma システムからのパケットを partym システムに送信します。パケットは、snoop -v enigma コマンドで取り込む必要があります。
% ssh enigma Password: Type your password % su - Password: Type root password # ping partym |
snoop の出力を調べます。
partym システムで、冒頭の IP ヘッダー情報のあとに AH と ESP 情報が含まれている出力を確認します。次のような AH と ESP の情報は、パケットが保護されていることを示します。
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 ----- ... |
役割によるアクセス制御 (RBAC) でシステムを管理している場合は、ネットワーク管理またはネットワークセキュリティー上の役割を提供するためにこの手順を使用します。
ローカルの 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 プロファイルでコマンドを実行できます。
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) として実行されます。
サイトでのネットワークセキュリティーの役割の範囲を決定します。
決定には、手順 1 の権利プロファイルの定義を参考にしてください。
Network Management 権利プロファイルを含むネットワークセキュリティーの役割を作成します。
Network Management プロファイルに加え、Network Security または Network IPsec Management 権利プロファイルを持つ役割は、ifconfig、snoop、ipsecconf、および ipseckey コマンドなどを適切な特権で実行できます。
役割の作成、役割のユーザーへの割り当て、ネームサービスによる変更点の登録については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
この例では、管理者がネットワークセキュリティーの責任を 2 つの役割に振り分けます。一方の役割は wifi とリンクのセキュリティーを管理し、もう一方の役割は IPsec と IKE を管理します。各役割には、シフトごとに 1 人、合計 3 人を割り当てます。
管理者によって次のように役割が作成されます。
最初の役割には LinkWifi という名前を付けます。
この役割には Network Wifi、Network Link Security、および Network Management 権利プロファイルを割り当てます。
その後、該当するユーザーにこの LinkWifi 役割を割り当てます。
2 番目の役割には IPsec Administrator という名前を付けます。
この役割には Network IPsec Management および Network Management 権利プロファイルを割り当てます。
その後、該当するユーザーにこの IPsec Administrator 役割を割り当てます。
次の手順では、IPsec の管理、IKE の管理、および手動での鍵管理に SMF サービスを使用する代表的な方法について説明します。デフォルトでは、policy サービスと ipsecalgs サービスは有効になっています。また、デフォルトでは、ike サービスと manual-key サービスは無効になっています。
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 |
鍵を自動的に管理するには、次のいずれかを実行します。
/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 |
鍵を手動で管理するには、次のいずれかを実行します。
/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 |
IPsec のプロトコルとアルゴリズムのテーブルを変更した場合は、ipsecalgs サービスを更新します。
# svcadm refresh svc:/network/ipsec/ipsecalgs |
サービスの状態を調べるには、svcs service コマンドを使用します。サービスが maintenance (保守) モードになっている場合は、svcs -x service コマンドの出力に表示されるデバッグのヒントに従ってください。
IPsec トンネルで VPN を保護することができます。Solaris 10 7/07 リリースでは、トンネルはトンネルモードまたはトランスポートモードで使用できます。「トンネルモード」は、ほかのベンダーによって実装された IPsec と相互運用できます。「トランスポートモード」は、以前のバージョンの Solaris OS と相互運用できます。トンネルのモードについては、「IPsec のトランスポートモードとトンネルモード」を参照してください。
トンネルモードのトンネルを使用すると、トラフィックをよりきめ細かく制御できます。トンネルモードでは、内側の IP アドレスに対して、必要に応じて特定の保護をポート単位まで細かく指定できます。
トンネルモードのトンネルに使用する IPsec ポリシーの例については、「トンネルモードのトンネルを使用して VPN を IPsec で保護する例」を参照してください。
VPN を保護する手順については、「IPsec による VPN の保護 (作業マップ) 」を参照してください。
次の例では、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–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} |
この例では、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} |
この例では、電子メールトラフィック専用のトンネルが作成されます。トラフィックは、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} |
この例の 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 を構成する手順を示します。これらの手順を使用すると、インターネットで隔てられている 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 リリース以上が実行されている必要があります。 | |
IPv6 トンネルモードでトンネルトラフィックを保護します。 |
IPv6 プロトコルを使用している 2 つの Oracle Solaris システム間で、トンネルモードでトラフィックを保護します。 | |
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 リリース以上が実行されている必要があります。 | |
推奨されなくなった古い構文を使用してトラフィックを保護します。この方法は、以前のバージョンの Solaris OS を実行しているシステムと通信する場合に役立ちます。この方法を使用すると、2 つのシステム上にある構成ファイルの比較が簡単になります。 | ||
IPv6 トランスポートモードでトンネルトラフィックを保護します。 |
IPv6 プロトコルを使用している 2 つの Oracle Solaris システム間で、トランスポートモードでトラフィックを保護します。 | |
IP のスプーフィングを防止します。 |
SMF サービスを作成して、システムがパケットを復号化せずに VPN 上で転送することを防止します。 |
この節以降に説明する手順では、次の設定がすでになされているものとします。図 20–2 はこのネットワークを表しています。
各システムは IPv4 アドレス空間を使用します。
IPv6 アドレスを使用する同様の例については、「IPv6 トンネルモードの IPsec トンネルで VPN を保護する方法」を参照してください。
各システムには 2 つのインタフェースがあります。hme0 インタフェースはインターネットに接続しています。この例では、インターネット IP アドレスは 192.168 で始まります。hme1 インタフェースは社内の LAN、すなわちイントラネットに接続します。この例では、イントラネット IP アドレスは 10 で始まります。
各システムには、SHA–1 アルゴリズムを使用した ESP 認証が必要です。SHA–1 アルゴリズムには 160 ビットのキーが必要です。
各システムには、AES アルゴリズムを使用した ESP 暗号化が必要です。AES アルゴリズムは 128 ビットのキーまたは 256 ビットのキーを使用します。
各システムは、インターネットに直接アクセスするルーターに接続できます。
各システムは、共有セキュリティーアソシエーションを使用します。
前の図に示すように、IPv4 ネットワーク向けの手順では次の構成パラメータを使用します。
パラメータ |
ヨーロッパ |
カリフォルニア |
||
---|---|---|---|---|
システム名 |
|
|
||
システムイントラネットインタフェース |
|
|
||
システムイントラネットアドレス。手順 7 の -point アドレスでもある |
|
|
||
システムインターネットインタフェース |
|
|
||
システムイントラネットアドレス。手順 7 の tsrc アドレスでもある |
|
|
||
インターネットルーターの名前 |
|
|
||
インターネットルーターのアドレス |
|
|
||
トンネル名 |
|
|
手順では次の IPv6 アドレスを使用します。トンネル名は同じです。
パラメータ |
ヨーロッパ |
カリフォルニア |
||
---|---|---|---|---|
システムイントラネットアドレス |
|
|
||
システムインターネットアドレス |
|
|
||
インターネットルーターのアドレス |
|
|
トンネルモードでは、内側の IP パケットによって、その内容を保護する IPsec ポリシーが決まります。
この手順は、「IPsec で 2 つのシステム間のトラフィックを保護するには」の手順の応用です。設定については、「IPsec で VPN を保護する作業のためのネットワークトポロジの説明」を参照してください。
両方のシステムでこの手順を実行してください。
この手順では、2 つのシステムを接続するだけでなく、これら 2 つのシステムに接続している 2 つのイントラネットを接続します。この手順における 2 つのシステムはゲートウェイとして機能します。
システムまたは共有 IP ゾーンの IPsec ポリシーの構成は、大域ゾーンで行う必要があります。排他的 IP ゾーンについては、非大域ゾーンで IPsec ポリシーを構成します。
システムコンソール上で、Primary Administrator の役割を引き受けるか、スーパーユーザーになります。
Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。
リモートログインすると、セキュリティー上重要なトラフィックが盗聴される恐れがあります。何らかの方法でリモートログインを保護していても、システムのセキュリティーがリモートログインセッションレベルに低下します。セキュリティー保護されたリモートログインには、ssh コマンドを使用してください。
IPsec を構成する前に、パケットフローを制御します。
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) のマニュアルページを参照してください。
次のコマンドを入力して IP の厳密宛先マルチホームをオンに設定します。
# ndd -set /dev/ip ip_strict_dst_multihoming 1 |
IP 厳密宛先マルチホームをオンに設定すると、システムの宛先アドレスのうちの 1 つに宛てたパケットは、正しい宛先アドレスに必ず到着します。
厳密宛先マルチホームが有効な状態では、特定のインタフェースに到着したパケットに、そのインタフェースのいずれかのローカル IP アドレスを指定する必要があります。その他のパケットは、システムのほかのローカルアドレスが指定されているものも含めてすべて捨てられます。
システムの起動時に、マルチホームの値はデフォルトに戻ります。変更した値を持続させる方法については、「IP のスプーフィングを防止する方法」を参照してください。
大部分のネットワークサービス、可能な場合はすべてのネットワークサービスを無効にします。
「制限付き」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 |
ほとんどのネットワークサービスが無効になっていることを確認します。
ループバックマウントと ssh サービスが稼働していることを確認します。
# svcs | grep network online Aug_02 svc:/network/loopback:default … online Aug_09 svc:/network/ssh:default |
2 つのシステム間に SA ペアを追加します。
次のオプションのいずれかを選択します。
SA 用のキーを管理するように IKE を設定します。「IKE の設定 (作業マップ)」のいずれかの手順に従って、VPN 用の IKE を構成します。
キーを手動で管理する決定的な理由がある場合は、「IPsec セキュリティーアソシエーションを手動で作成する方法」を参照してください。
IPsec ポリシーを追加します。
/etc/inet/ipsecinit.conf ファイルを編集して、VPN 用の IPsec ポリシーを追加します。ポリシーを強化する方法については、例 20–12 を参照してください。その他の例については、「トンネルモードのトンネルを使用して VPN を IPsec で保護する例」を参照してください。
このポリシーでは、ローカル LAN 上のシステムとゲートウェイの内部 IP アドレスの間に IPsec 保護は必要でないため、bypass 文を追加します。
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} |
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} |
(省略可能) IPsec ポリシーファイルの構文を確認します。
# ipsecconf -c -f /etc/inet/ipsecinit.conf |
トンネルを構成し、それを IPsec で保護する場合は、Solaris のリリースに応じて次の手順に従います。
トンネル ip.tun0 を /etc/hostname.ip.tun0 ファイルで構成します。
ファイルの構文は次のとおりです。
system1-point system2-point tsrc system1-taddr tdst system2-taddr router up |
作成した IPsec ポリシーでトンネルを保護します。
# svcadm refresh svc:/network/ipsec/policy:default |
トンネル構成ファイルの内容をカーネルに読み込むには、ネットワークサービスを再起動します。
# svcadm restart svc:/network/initial:default |
enigma システムで、/etc/hostname.hme1 ファイルにルーターエントリを追加します。
192.168.116.16 router |
partym システムで、/etc/hostname.hme1 ファイルにルーターエントリを追加します。
192.168.13.213 router |
IP 転送とは、別のインタフェースから到着したパケットを転送できることを意味します。IP 転送はまた、送信するパケットがもともとは別のインタフェースから発信されたパケットである可能性も意味します。パケットを正しく転送するには、受信インタフェースと送信インタフェースの IP 転送をオンに設定しておきます。
hme1 インタフェースはイントラネットの「内部」にあるため、hme1 の IP 転送はオンに設定しておきます。さらに、ip.tun0 はインターネットを通してこれら 2 つのシステムを接続するため、ip.tun0 の IP 転送はオンに設定しておきます。
hme0 インタフェースの IP 転送はオフです。そのため、「外部」からパケットが保護イントラネットに侵入するのを防ぐことができます。「外部」とはインターネットを意味します。
経路制御プロトコルによってイントラネット内のデフォルトのルートが通知されていないことを確認します。
enigma システムで、private フラグを /etc/hostname.hme0 ファイルに追加します。
10.16.16.6 private |
partym システムで、private フラグを /etc/hostname.hme0 ファイルに追加します。
10.1.3.3 private |
hme0 の IP 転送がオフになっていても、経路制御プロトコルの実装によっては、このインタフェースを通知することがあります。たとえば、in.routed プロトコルは、イントラネット内のピアにパケットが転送される際に hme0 を有効なインタフェースとして通知する場合があります。インタフェースの「private」フラグを設定して、このような通知が行われないようにします。
hme0 インタフェース経由のデフォルトルートを手動で追加します。
デフォルトルートは、インターネットに直接アクセスできるルーターでなければなりません。
enigma システムで、次のルートを追加します。
# route add default 192.168.116.4 |
# route add default 192.168.13.5 |
hme0 インタフェースはイントラネットの一部ではありませんが、インターネットを介してそのピアシステムにアクセスする必要があります。hme0 は、自身のピアを見つけるために、インターネット経路制御情報を必要とします。インターネットの残りの要素にとって、VPN システムは、ルーターというよりもホストのような存在です。したがって、デフォルトルーターを使用するか、ルーター発見プロトコルを実行すれば、ピアシステムを見つけることができます。詳細については、route(1M) と in.routed(1M) のマニュアルページを参照してください。
手順を完了するために、手順 22 に進んで経路制御プロトコルを実行します。
次の手順は、Solaris 10 4/09 リリースより前のリリースを実行しているシステムでトンネルを構成するためのものです。
ifconfig コマンドを使用してポイントツーポイントインタフェースを作成します。
# ifconfig ip.tun0 plumb # ifconfig ip.tun0 system1-point system2-point \ tsrc system1-taddr tdst system2-taddr |
作成した IPsec ポリシーでトンネルを保護します。
# ipsecconf |
トンネル用のルーターを起動します。
# ifconfig ip.tun0 router up |
# ifconfig hme1 router |
IP 転送とは、別のインタフェースから到着したパケットを転送できることを意味します。IP 転送はまた、送信するパケットがもともとは別のインタフェースから発信されたパケットである可能性も意味します。パケットを正しく転送するには、受信インタフェースと送信インタフェースの IP 転送をオンに設定しておきます。
hme1 インタフェースはイントラネットの「内部」にあるため、hme1 の IP 転送はオンに設定しておきます。さらに、ip.tun0 はインターネットを通してこれら 2 つのシステムを接続するため、ip.tun0 の IP 転送はオンに設定しておきます。
hme0 インタフェースの IP 転送はオフです。そのため、「外部」からパケットが保護イントラネットに侵入するのを防ぐことができます。「外部」とはインターネットを意味します。
経路制御プロトコルによってイントラネット内のデフォルトのルートが通知されていないことを確認します。
# ifconfig hme0 private |
hme0 の IP 転送がオフになっていても、経路制御プロトコルの実装によっては、このインタフェースを通知することがあります。たとえば、in.routed プロトコルは、イントラネット内のピアにパケットが転送される際に hme0 を有効なインタフェースとして通知する場合があります。インタフェースの「private」フラグを設定して、このような通知が行われないようにします。
hme0 経由のデフォルトルートを手動で追加します。
デフォルトルートは、インターネットに直接アクセスできるルーターでなければなりません。
enigma システムで、次のルートを追加します。
# route add default 192.168.116.4 |
# route add default 192.168.13.5 |
hme0 インタフェースはイントラネットの一部ではありませんが、インターネットを介してそのピアシステムにアクセスする必要があります。hme0 は、自身のピアを見つけるために、インターネット経路制御情報を必要とします。インターネットの残りの要素にとって、VPN システムは、ルーターというよりもホストのような存在です。したがって、デフォルトルーターを使用するか、ルーター発見プロトコルを実行すれば、ピアシステムを見つけることができます。詳細については、route(1M) と in.routed(1M) のマニュアルページを参照してください。
VPN がリブート後に開始するように、/etc/hostname.ip.tun0 ファイルにエントリを追加します。
system1-point system2-point tsrc system1-taddr tdst system2-taddr router up |
適切なパラメータが経路制御デーモンに渡されるようにインタフェースファイルを設定します。
enigma システムで、/etc/hostname.interface ファイルを変更します。
# cat /etc/hostname.hme0 ## enigma 10.16.16.6 private |
# cat /etc/hostname.hme1 ## enigma 192.168.116.16 router |
partym システムで、/etc/hostname.interface ファイルを変更します。
# cat /etc/hostname.hme0 ## partym 10.1.3.3 private |
# cat /etc/hostname.hme1 ## partym 192.168.13.213 router |
経路制御プロトコルを実行します。
# routeadm -e ipv4-routing # routeadm -u |
経路制御プロトコルを実行する前に経路制御プロトコルの構成が必要な場合があります。詳細は、「Oracle Solaris の経路制御プロトコル」を参照してください。手順については、「IPv4 ルーターの構成方法」を参照してください。
この例では、管理者が Solaris 10 4/09 システムでトンネルの作成をテストします。あとで 「IPv4 トンネルモードの IPsec トンネルで VPN を保護する方法」の手順を使用して、これらを永続的なトンネルにします。テスト中に、管理者はシステム system1 および system2 で次の一連の手順を実行します。
両方のシステムで、管理者は 「IPv4 トンネルモードの IPsec トンネルで VPN を保護する方法」の最初から 5 番目までの手順を完了します。
管理者は ifconfig コマンドを使用して、一時的なトンネルを plumb して構成します。
system1 # ifconfig ip.tun0 plumb system1 # ifconfig ip.tun0 10.16.16.6 10.1.3.3 \ tsrc 192.168.116.16 tdst 192.168.13.213 # ssh system2 Password: admin-password-on-system2 system2 # ifconfig ip.tun0 plumb system2 # ifconfig ip.tun0 10.1.3.3 10.16.16.6 \ tsrc 192.168.13.213 tdst 192.168.116.16 |
管理者はトンネルに対して IPsec ポリシーを有効にします。このポリシーは、「IPv4 トンネルモードの IPsec トンネルで VPN を保護する方法」の手順 4 で作成したものです。
system1 # svcadm refresh svc:/network/ipsec/policy:default system2 # svcadm refresh svc:/network/ipsec/policy:default |
管理者はインターネットインタフェースをルーターにし、経路制御プロトコルがイントラネットインタフェースを越えないようにします。
system1 # ifconfig hme1 router ; ifconfig hme0 private system2 # ifconfig hme1 router ; ifconfig hme0 private |
両方のシステムで 「IPv4 トンネルモードの IPsec トンネルで VPN を保護する方法」の手順 12 と 手順 22 を実行して、ルートを手動で追加し、経路制御プロトコルを実行します。
Solaris 10 7/07 リリースでは、ifconfig コマンドの構文が簡素化されました。この例では、Solaris 10 7/07 リリースより前のバージョンの Solaris を実行しているシステムに対するトンネルの作成を管理者がテストします。ifconfig コマンドの元の構文を使用すれば、通信する 2 つのシステムで同じコマンドを使用できます。あとで 「IPv4 トンネルモードの IPsec トンネルで VPN を保護する方法」の手順を使用して、これらを永続的なトンネルにします。
テスト中に、管理者はシステム system1 および system2 で次の手順を実行します。
両方のシステムで、管理者は 「IPv4 トンネルモードの IPsec トンネルで VPN を保護する方法」の最初から 5 番目までの手順を完了します。
管理者はトンネルを plumb して構成します。
system1 # ifconfig ip.tun0 plumb system1 # ifconfig ip.tun0 10.16.16.6 10.1.3.3 \ tsrc 192.168.116.16 tdst 192.168.13.213 \ encr_algs aes encr_auth_algs sha1 system1 # ifconfig ip.tun0 router up |
# ssh system2 Password: admin-password-on-system2 system2 # ifconfig ip.tun0 plumb system2 # ifconfig ip.tun0 10.1.3.3 10.16.16.6 \ tsrc 192.168.13.213 tdst 192.168.116.16 \ encr_algs aes encr_auth_algs sha1 system2 # ifconfig ip.tun0 router up |
管理者はトンネルに対して IPsec ポリシーを有効にします。このポリシーは、「IPv4 トンネルモードの IPsec トンネルで VPN を保護する方法」の手順 4 で作成したものです。
system1 # svcadm refresh svc:/network/ipsec/policy:default system2 # svcadm refresh svc:/network/ipsec/policy:default |
管理者はインターネットインタフェースをルーターにし、経路制御プロトコルがイントラネットインタフェースを越えないようにします。
system1 # ifconfig hme1 router ; ifconfig hme0 private system2 # ifconfig hme1 router ; ifconfig hme0 private |
両方のシステムで 「IPv4 トンネルモードの IPsec トンネルで VPN を保護する方法」の手順 12 と 手順 22 を実行して、ルートを追加します。
この例では、手順 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} |
この例の最初の規則は、ポート 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} |
次のトンネル構成は、トンネルを経由するサブネット 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} |
IPv6 ネットワークで VPN を使用するには、IPv4 ネットワークの場合と同じ手順を実行します。ただし、コマンドの構文は少し違います。特定のコマンドを実行する理由についての詳細は、「IPv4 トンネルモードの IPsec トンネルで VPN を保護する方法」の該当する手順を参照してください。
両方のシステムでこの手順を実行してください。
この手順では、次の構成パラメータを使用します。
パラメータ |
ヨーロッパ |
カリフォルニア |
||
---|---|---|---|---|
システム名 |
|
|
||
システムイントラネットインタフェース |
|
|
||
システムインターネットインタフェース |
|
|
||
システムイントラネットアドレス |
|
|
||
システムインターネットアドレス |
|
|
||
インターネットルーターの名前 |
|
|
||
インターネットルーターのアドレス |
|
|
||
トンネル名 |
|
|
システムコンソール上で、Primary Administrator の役割を引き受けるか、スーパーユーザーになります。
Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。
リモートログインすると、セキュリティー上重要なトラフィックが盗聴される恐れがあります。何らかの方法でリモートログインを保護していても、システムのセキュリティーがリモートログインセッションレベルに低下します。セキュリティー保護されたリモートログインには、ssh コマンドを使用してください。
IPsec を構成する前に、パケットフローを制御します。
これらのコマンドの効果については、「IPv4 トンネルモードの IPsec トンネルで VPN を保護する方法」の手順 2 を参照してください。
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 |
次のコマンドを入力して IP の厳密宛先マルチホームをオンに設定します。
# ndd -set /dev/ip ip6_strict_dst_multihoming 1 |
システムの起動時に、ip6_strict_dst_multihoming の値はデフォルトに戻ります。変更した値を持続させる方法については、「IP のスプーフィングを防止する方法」を参照してください。
大部分のネットワークサービス、可能な場合はすべてのネットワークサービスを無効にします。
「制限付き」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 |
ほとんどのネットワークサービスが無効になっていることを確認します。
ループバックマウントと ssh サービスが稼働していることを確認します。
# svcs | grep network online Aug_02 svc:/network/loopback:default ... online Aug_09 svc:/network/ssh:default |
2 つのシステム間に SA ペアを追加します。
次のオプションのいずれかを選択します。
SA 用のキーを管理するように IKE を設定します。「IKE の設定 (作業マップ)」のいずれかの手順に従って、VPN 用の IKE を構成します。
キーを手動で管理する決定的な理由がある場合は、「IPsec セキュリティーアソシエーションを手動で作成する方法」を参照してください。
/etc/inet/ipsecinit.conf ファイルを編集して、VPN 用の IPsec ポリシーを追加します。
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} |
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} |
(省略可能) IPsec ポリシーファイルの構文を確認します。
# ipsecconf -c -f /etc/inet/ipsecinit.conf |
トンネルを構成し、それを IPsec で保護する場合は、Solaris のリリースに応じて次の手順に従います。
/etc/hostname.ip6.tun0 ファイルで、トンネル ip6.tun0 を構成します。
enigma システムで、hostname.ip6.tun0 ファイルに次のエントリを追加します。
6000:6666::aaaa:1116 6000:3333::eeee:1113 tsrc 2001::aaaa:6666:6666 tdst 2001::eeee:3333:3333 router up |
partym システムで、hostname.ip6.tun0 ファイルに次のエントリを追加します。
6000:3333::eeee:1113 6000:6666::aaaa:1116 tsrc 2001::eeee:3333:3333 tdst 2001::aaaa:6666:6666 router up |
作成した IPsec ポリシーでトンネルを保護します。
# svcadm refresh svc:/network/ipsec/policy:default |
トンネル構成ファイルの内容をカーネルに読み込むには、ネットワークサービスを再起動します。
# svcadm restart svc:/network/initial:default |
経路制御プロトコルによってイントラネット内のデフォルトのルートが通知されていないことを確認します。
hme0 経由のデフォルトルートを手動で追加します。
手順を完了するために、手順 22 に進んで経路制御プロトコルを実行します。
次の手順は、Solaris 10 4/09 リリースより前のリリースを実行しているシステムでトンネルを構成するためのものです。
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 |
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 |
作成した IPsec ポリシーでトンネルを保護します。
# ipsecconf |
トンネル用のルーターを起動します。
# ifconfig ip6.tun0 router up |
各システムで、hme1 インタフェースの IP 転送をオンに設定します。
# ifconfig hme1 router |
経路制御プロトコルによってイントラネット内のデフォルトのルートが通知されていないことを確認します。
# ifconfig hme0 private |
hme0 経由のデフォルトルートを手動で追加します。
デフォルトルートは、インターネットに直接アクセスできるルーターでなければなりません。
VPN がリブート後に開始するように、/etc/hostname6.ip6.tun0 ファイルにエントリを追加します。
このエントリは、手順 14 で ifconfigコマンドに渡されたパラメータを複製します。
enigma システムで、hostname6.ip6.tun0 ファイルに次のエントリを追加します。
6000:6666::aaaa:1116 6000:3333::eeee:1113 \ tsrc 2001::aaaa:6666:6666 tdst 2001::eeee:3333:3333 router up |
partym システムでは、次のエントリを hostname6.ip6.tun0 ファイルに追加します。
6000:3333::eeee:1113 6000:6666::aaaa:1116 \ tsrc 2001::eeee:3333:3333 tdst 2001::aaaa:6666:6666 router up |
各システムで、適切なパラメータが経路制御デーモンに渡されるようにインタフェースファイルを設定します。
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 |
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 |
経路制御プロトコルを実行します。
# routeadm -e ipv6-routing # routeadm -u |
経路制御プロトコルを実行する前に経路制御プロトコルの構成が必要な場合があります。詳細は、「Oracle Solaris の経路制御プロトコル」を参照してください。手順については、「IPv6 ルーターの構成」を参照してください。
トランスポートモードでは、外側のヘッダーによって、内側の IP パケットを保護する IPsec ポリシーが決まります。
この手順は、「IPsec で 2 つのシステム間のトラフィックを保護するには」の手順の応用です。この手順では、2 つのシステムを接続するだけでなく、これら 2 つのシステムに接続している 2 つのイントラネットを接続します。この手順における 2 つのシステムはゲートウェイとして機能します。
この手順では、「IPsec で VPN を保護する作業のためのネットワークトポロジの説明」で説明されている設定を使用します。特定のコマンドを実行する理由についての詳細は、「IPv4 トンネルモードの IPsec トンネルで VPN を保護する方法」の該当する手順を参照してください。
両方のシステムでこの手順を実行してください。
システムコンソール上で、Primary Administrator の役割を引き受けるか、スーパーユーザーになります。
Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。
リモートログインすると、セキュリティー上重要なトラフィックが盗聴される恐れがあります。何らかの方法でリモートログインを保護していても、システムのセキュリティーがリモートログインセッションレベルに低下します。セキュリティー保護されたリモートログインには、ssh コマンドを使用してください。
IPsec を構成する前に、パケットフローを制御します。
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 の厳密宛先マルチホームをオンに設定します。
# ndd -set /dev/ip ip_strict_dst_multihoming 1 |
システムの起動時に、ip_strict_dst_multihoming の値はデフォルトに戻ります。変更した値を持続させる方法については、「IP のスプーフィングを防止する方法」を参照してください。
大部分のネットワークサービス、可能な場合はすべてのネットワークサービスを無効にします。
「制限付き」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 |
ほとんどのネットワークサービスが無効になっていることを確認します。
ループバックマウントと ssh サービスが稼働していることを確認します。
# svcs | grep network online Aug_02 svc:/network/loopback:default … online Aug_09 svc:/network/ssh:default |
2 つのシステム間に SA ペアを追加します。
次のオプションのいずれかを選択します。
SA 用のキーを管理するように IKE を設定します。「IKE の設定 (作業マップ)」のいずれかの手順に従って、VPN 用の IKE を構成します。
キーを手動で管理する決定的な理由がある場合は、「IPsec セキュリティーアソシエーションを手動で作成する方法」を参照してください。
IPsec ポリシーを追加します。
/etc/inet/ipsecinit.conf ファイルを編集して、VPN 用の IPsec ポリシーを追加します。ポリシーを強化する方法については、例 20–15 を参照してください。
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} |
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} |
(省略可能) IPsec ポリシーファイルの構文を確認します。
# ipsecconf -c -f /etc/inet/ipsecinit.conf |
トンネルを構成し、それを IPsec で保護する場合は、Solaris のリリースに応じて次の手順に従います。
作成した IPsec ポリシーでトンネルを保護します。
# svcadm refresh svc:/network/ipsec/policy:default |
hostname.ip.tun0 ファイルの内容をカーネルに読み込むには、ネットワークサービスを再起動します。
# svcadm restart svc:/network/initial:default |
経路制御プロトコルによってイントラネット内のデフォルトのルートが通知されていないことを確認します。
hme0 経由のデフォルトルートを手動で追加します。
手順を完了するために、手順 22 に進んで経路制御プロトコルを実行します。
トンネル ip.tun0 を構成します。
次の手順は、Solaris 10 4/09 リリースより前のリリースを実行しているシステムでトンネルを構成するためのものです。
ifconfig コマンドを使用してポイントツーポイントインタフェースを作成します。
# ifconfig ip.tun0 plumb # ifconfig ip.tun0 system1-point system2-point \ tsrc system1-taddr tdst system2-taddr |
作成した IPsec ポリシーでトンネルを保護します。
# ipsecconf |
トンネル用のルーターを起動します。
# ifconfig ip.tun0 router up |
hme1 インタフェースの IP 転送をオンに設定します。
# ifconfig hme1 router |
経路制御プロトコルによってイントラネット内のデフォルトのルートが通知されていないことを確認します。
# ifconfig hme0 private |
hme0 経由のデフォルトルートを手動で追加します。
デフォルトルートは、インターネットに直接アクセスできるルーターでなければなりません。
# route add default router-on-hme0-subnet |
VPN がリブート後に開始するように、/etc/hostname.ip.tun0 ファイルにエントリを追加します。
system1-point system2-point tsrc system1-taddr \ tdst system2-taddr encr_algs aes encr_auth_algs sha1 router up |
適切なパラメータが経路制御デーモンに渡されるようにインタフェースファイルを設定します。
enigma システムで、/etc/hostname.interface ファイルを変更します。
# cat /etc/hostname.hme0 ## enigma 10.16.16.6 private |
# cat /etc/hostname.hme1 ## enigma 192.168.116.16 router |
partym システムで、/etc/hostname.interface ファイルを変更します。
# cat /etc/hostname.hme0 ## partym 10.1.3.3 private |
# cat /etc/hostname.hme1 ## partym 192.168.13.213 router |
# routeadm -e ipv4-routing # routeadm -u |
この例では、手順 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} |
この例では、Solaris 10 7/07 システムを、Solaris 10 リリースを実行しているシステムに接続します。したがって、管理者は構成ファイルで Solaris 10 の構文を使用し、ifconfig コマンドに IPsec アルゴリズムを含めます。
管理者は、「IPv4 トランスポートモードの IPsec トンネルで VPN を保護する方法」の手順に従いますが、構文を次のように変更します。
手順 4 で、ipsecinit.conf ファイルの構文は次のとおりです。
# LAN traffic to and from this address can bypass IPsec. {laddr 10.1.3.3 dir both} bypass {} # WAN traffic uses ESP with AES and SHA-1. {} ipsec {encr_algs aes encr_auth_algs sha1} |
手順 14 から手順 16 で、セキュアトンネルを構成するための構文は次のとおりです。
# ifconfig ip.tun0 plumb # ifconfig ip.tun0 10.16.16.6 10.1.3.3 \ tsrc 192.168.116.16 tdst 192.168.13.213 \ encr_algs aes encr_auth_algs sha1 # ifconfig ip.tun0 router up |
# ifconfig ip.tun0 plumb # ifconfig ip.tun0 10.16.16.6 10.1.3.3 \ tsrc 192.168.116.16 tdst 192.168.13.213 \ encr_algs aes encr_auth_algs sha1 |
ifconfig コマンドに渡す IPsec ポリシーは、ipsecinit.conf ファイルに指定されている IPsec ポリシーと同じでなければなりません。各システムは、リブート時にそのポリシーを含む ipsecinit.conf ファイルを読み込みます。
手順 20 で、hostname.ip.tun0 ファイルの構文は次のとおりです。
10.16.16.6 10.1.3.3 tsrc 192.168.116.16 \ tdst 192.168.13.213 encr_algs aes encr_auth_algs sha1 router up |
IPv6 ネットワークで VPN を使用するには、IPv4 ネットワークの場合と同じ手順を実行します。ただし、コマンドの構文は少し違います。特定のコマンドを実行する理由についての詳細は、「IPv4 トンネルモードの IPsec トンネルで VPN を保護する方法」の該当する手順を参照してください。
両方のシステムでこの手順を実行してください。
この手順では、次の構成パラメータを使用します。
パラメータ |
ヨーロッパ |
カリフォルニア |
||
---|---|---|---|---|
システム名 |
|
|
||
システムイントラネットインタフェース |
|
|
||
システムインターネットインタフェース |
|
|
||
システムイントラネットアドレス |
|
|
||
システムインターネットアドレス |
|
|
||
インターネットルーターの名前 |
|
|
||
インターネットルーターのアドレス |
|
|
||
トンネル名 |
|
|
システムコンソール上で、Primary Administrator の役割を引き受けるか、スーパーユーザーになります。
Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。
リモートログインすると、セキュリティー上重要なトラフィックが盗聴される恐れがあります。何らかの方法でリモートログインを保護していても、システムのセキュリティーがリモートログインセッションレベルに低下します。セキュリティー保護されたリモートログインには、ssh コマンドを使用してください。
IPsec を構成する前に、パケットフローを制御します。
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 |
次のコマンドを入力して IP の厳密宛先マルチホームをオンに設定します。
# ndd -set /dev/ip ip6_strict_dst_multihoming 1 |
システムの起動時に、ip6_strict_dst_multihoming の値はデフォルトに戻ります。変更した値を持続させる方法については、「IP のスプーフィングを防止する方法」を参照してください。
ほとんどのネットワークサービスが無効になっていることを確認します。
ループバックマウントと ssh サービスが稼働していることを確認します。
# svcs | grep network online Aug_02 svc:/network/loopback:default … online Aug_09 svc:/network/ssh:default |
2 つのシステム間に SA ペアを追加します。
次のオプションのいずれかを選択します。
SA 用のキーを管理するように IKE を設定します。「IKE の設定 (作業マップ)」のいずれかの手順に従って、VPN 用の IKE を構成します。
キーを手動で管理する決定的な理由がある場合は、「IPsec セキュリティーアソシエーションを手動で作成する方法」を参照してください。
/etc/inet/ipsecinit.conf ファイルを編集して、VPN 用の IPsec ポリシーを追加します。
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} |
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} |
(省略可能) IPsec ポリシーファイルの構文を確認します。
# ipsecconf -c -f /etc/inet/ipsecinit.conf |
トンネルを構成し、それを IPsec で保護する場合は、Solaris のリリースに応じて次の手順に従います。
/etc/hostname.ip6.tun0 ファイルで、トンネル ip6.tun0 を構成します。
enigma システムで、hostname.ip6.tun0 ファイルに次のエントリを追加します。
6000:6666::aaaa:1116 6000:3333::eeee:1113 tsrc 2001::aaaa:6666:6666 tdst 2001::eeee:3333:3333 router up |
partym システムで、hostname.ip6.tun0 ファイルに次のエントリを追加します。
6000:3333::eeee:1113 6000:6666::aaaa:1116 tsrc 2001::eeee:3333:3333 tdst 2001::aaaa:6666:6666 router up |
作成した IPsec ポリシーでトンネルを保護します。
# svcadm refresh svc:/network/ipsec/policy:default |
hostname.ip6.tun0 ファイルの内容をカーネルに読み込むには、ネットワークサービスを再起動します。
# svcadm restart svc:/network/initial:default |
経路制御プロトコルによってイントラネット内のデフォルトのルートが通知されていないことを確認します。
hme0 経由のデフォルトルートを手動で追加します。
手順を完了するために、手順 22 に進んで経路制御プロトコルを実行します。
次の手順は、Solaris 10 4/09 リリースより前のリリースを実行しているシステムでトンネルを構成するためのものです。
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 |
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 |
作成した IPsec ポリシーでトンネルを保護します。
# ipsecconf |
トンネル用のルーターを起動します。
# ifconfig ip6.tun0 router up |
# ifconfig hme1 router |
経路制御プロトコルによってイントラネット内のデフォルトのルートが通知されていないことを確認します。
# ifconfig hme0 private |
各システムで、hme0 経由のデフォルトルートを手動で追加します。
デフォルトルートは、インターネットに直接アクセスできるルーターでなければなりません。
各システムで、VPN がリブート後に開始するように、/etc/hostname6.ip6.tun0 ファイルにエントリを追加します。
このエントリは、手順 14 で ifconfigコマンドに渡されたパラメータを複製します。
enigma システムで、hostname6.ip6.tun0 ファイルに次のエントリを追加します。
6000:6666::aaaa:1116 6000:3333::eeee:1113 \ tsrc 2001::aaaa:6666:6666 tdst 2001::eeee:3333:3333 router up |
partym システムでは、次のエントリを hostname6.ip6.tun0 ファイルに追加します。
6000:3333::eeee:1113 6000:6666::aaaa:1116 \ tsrc 2001::eeee:3333:3333 tdst 2001::aaaa:6666:6666 router up |
適切なパラメータが経路制御デーモンに渡されるようにインタフェースファイルを設定します。
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 |
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 |
経路制御プロトコルを実行します。
# routeadm -e ipv6-routing # routeadm -u |
この例では、Solaris 10 7/07 システムを、Solaris 10 リリースを実行しているシステムに接続します。したがって、管理者は構成ファイルで Solaris 10 の構文を使用し、ifconfig コマンドに IPsec アルゴリズムを含めます。
管理者は、「IPv6 トランスポートモードの IPsec トンネルで VPN を保護する方法」の手順に従いますが、構文を次のように変更します。
手順 4 で、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. {} ipsec {encr_algs aes encr_auth_algs sha1} |
手順 14 から手順 17 で、セキュアトンネルを構成するための構文は次のとおりです。
# 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 \ encr_algs aes encr_auth_algs sha1 # ifconfig ip6.tun0 inet6 router up |
ifconfig コマンドに渡す IPsec ポリシーは、ipsecinit.conf ファイルに指定されている IPsec ポリシーと同じでなければなりません。各システムは、リブート時にそのポリシーを含む ipsecinit.conf ファイルを読み込みます。
手順 20 で、hostname6.ip6.tun0 ファイルの構文は次のとおりです。
6000:6666::aaaa:1116 6000:3333::eeee:1113 \ tsrc 2001::aaaa:6666:6666 tdst 2001::eeee:3333:3333 \ encr_algs aes encr_auth_algs sha1 router up |
システムがパケットの復号化を試みずに別のインタフェースに転送することを防止するには、IP のスプーフィングをチェックする必要があります。その方法の 1 つは、ndd コマンドを使用して IP 厳密宛先マルチホームのパラメータを設定することです。SMF マニフェストでこのパラメータが設定されている場合、システムのリブート時にこのパラメータが設定されます。
両方のシステムでこの手順を実行してください。
システムコンソール上で、Primary Administrator の役割を引き受けるか、スーパーユーザーになります。
Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。
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>
このマニフェストを SMF リポジトリにインポートします。
# svccfg import /var/svc/manifest/site/spoof_check.xml |
ip_spoofcheck サービスを有効にします。
マニフェストで定義されている名前 /site/ip_spoofcheck を使用します。
# svcadm enable /site/ip_spoofcheck |
ip_spoofcheck サービスがオンラインになっていることを確認します。
# svcs /site/ip_spoofcheck |