トンネルモードでは、内側の 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} |