この手順では、インターネットで VPN を構築して組織内の 2 つのネットワークを接続する方法について説明します。また、そのネットワーク間のトラフィックを IPsec で保護する方法について説明します。
この手順は、2 つのシステム間のトラフィックを保護する方法の手順を拡張するものです。この手順では、2 つのシステムを接続するだけでなく、これら 2 つのシステムに接続している 2 つのイントラネットを接続します。この手順における 2 つのシステムはゲートウェイとして機能します。
この手順では、次の設定がすでになされているものとします。
各システムが IPv4 アドレス空間を使用している。この手順は IPv6 アドレスを使用する場合も同じ
各システムには 2 つのインタフェースがある。hme0 インタフェースはインターネットに接続している。この例では、インターネット IP アドレスは 192.168 で始まる。hme1 インタフェースは社内のローカルエリアネットワーク (LAN)、すなわちイントラネットに接続する。この例では、イントラネット IP アドレスは 10 で始まる
各システムは、MD5 アルゴリズムを使って AH 保護を呼び出す。MD5 アルゴリズムには 128 ビットキーが必要
各システムは、3DES アルゴリズムを使って ESP 保護を呼び出す。3DES アルゴリズムには 192 ビットキーが必要
各システムは、インターネットに直接アクセスするルーターに接続できる
IPsec は、共有セキュリティアソシエーション (SA) を使用する
VPN については、仮想プライベートネットワークを参照してください。次の図は、この手順によって設定される VPN を表しています。
この手順では、次の構成パラメータを使用します。
パラメータ |
ヨーロッパ |
カリフォルニア |
---|---|---|
システム名 |
enigma |
partym |
システムイントラネットインタフェース |
hme1 |
hme1 |
システムインターネットインタフェース |
hme0 |
hme0 |
システムイントラネットアドレス (手順 8 の -point アドレスでもある) |
10.16.16.6 |
10.1.3.3 |
システムインターネットアドレス (手順 8 の -taddr アドレスでもある) |
192.168.116.16 |
192.168.13.213 |
インターネットルーターの名前 |
router-E |
router-C |
インターネットルーターのアドレス |
192.168.116.4 |
192.168.13.5 |
トンネル名 |
ip.tun0 |
ip.tun0 |
どれかのシステムのシステムコンソールで、スーパーユーザーになるか、同等の役割を引き受けます。
リモートログインすると、セキュリティ上重要なトラフィックが盗聴される恐れがあります。何らかの方法でリモートログインを保護していても、システムのセキュリティがリモートログインセッションレベルに低下します。
IP 転送をオフにします。次のいずれか 1 つを指定してください。
IPv4 ネットワークでは、次の構文を使用します。
# ndd -set /dev/ip ip_forwarding 0 |
IPv6 ネットワークでは、次の構文を使用します。
# ndd -set /dev/ip6 ip6_forwarding 0 |
IP 転送をオフにすると、このシステムを経由したネットワーク間のパケット送信ができなくなります。ndd コマンドについては、ndd(1M) のマニュアルページを参照してください。
IP の厳密宛先マルチホームをオンにします。次のいずれか 1 つを指定してください。
IPv4 ネットワークでは、次の構文を使用します。
# ndd -set /dev/ip ip_strict_dst_multihoming 1 |
IPv6 ネットワークでは、次の構文を使用します。
# ndd -set /dev/ip6 ip6_strict_dst_multihoming 1 |
IP 厳密宛先マルチホームをオンにすると、システムの宛先アドレスに宛てたパケットは、正しい宛先アドレスに必ず到着します。
ndd コマンドを使用して IP 転送をオフにし、IP 厳密宛先マルチホームをオンにすると、システムを流れるパケットの数は少なくなります。厳密宛先マルチホームが有効な状態では、特定のインタフェースに到着したパケットに、そのインタフェースのいずれかのローカル IP アドレスを指定する必要があります。その他のパケットは、システムのほかのローカルアドレスが指定されているものも含めてすべて捨てられます。
必要に応じて次の手順を行い、大部分 (場合によってはすべて) のネットワークサービスを無効にします。
inetd.conf ファイルを編集し、重要なサービス以外のすべてのサービスを削除します。続いて、inetd デーモンを実行し、inetd.conf ファイルを再度読み込みます。
# pkill -HUP inetd |
VPN ルーターは、ほとんどの入力要求を受け付けません。入力トラフィックを受信するすべてのプロセスを無効にする必要があります。たとえば、inetd.conf ファイルの一部をコメントにしたり、SNMP を停止したりします。あるいは、Web サーバーを保護する方法で使用したようなテクニックを使うこともできます。
重要なサービス以外のすべてのサービスを削除するための inetd.conf ファイルの編集をしていない場合は、inetd デーモンを強制終了します。
# pkill inetd |
適切なコマンドを入力して SNMP、NFS など他のインターネットサービスを無効にします。たとえば、次のコマンドでは、NFS サービスとメールサービスが強制終了します。
# /etc/init.d/nfs.server stop # /etc/init.d/sendmail stop |
ネットワークサービスを無効にすると、IP パケットによるシステムへの妨害がなくなります。たとえば、SNMP デーモン、telnet 接続、rlogin 接続などを最大限に活用できます。
システムごとに、2 つのシステム間の SA の組を追加します。
SA 用のキーを管理するように IKE を設定します。VPN に IKE を設定するには、IKE の設定 (作業マップ) のいずれかの手順を実行します。
キーを手動管理する正当な理由がある場合は、IPsec セキュリティアソシエーションを手動で生成する方法を参照してください。
システムごとに、/etc/inet/ipsecinit.conf ファイルを編集して VPN ポリシーを追加します。
たとえば、enigma システムで、ipsecinit.conf ファイルに次のエントリを入力します。
# LAN traffic can bypass IPsec. {laddr 10.16.16.6 dir both} bypass {} # WAN traffic uses ESP with 3DES and MD5. {} ipsec {encr_algs 3des encr_auth_algs md5} |
partym システムで、ipsecinit.conf ファイルに次のエントリを追加します。
# LAN traffic can bypass IPsec. {laddr 10.1.3.3 dir both} bypass {} # WAN traffic uses ESP with 3DES and MD5. {} ipsec {encr_algs 3des encr_auth_algs md5} |
ipsec エントリは、リモートシステムがクリアパケットを送信してくるのを防止します。bypass エントリを指定すると、LAN に属するノードでは、VPN ルーターを、それが LAN の一部であるかのように扱うことができます。
(省略可能) これより高いレベルのセキュリティが必要な場合は、LAN bypass エントリを削除します。
ipsecinit.conf ファイル内のエントリは次のようになります。
# All traffic uses ESP with 3DES and MD5. {} ipsec {encr_algs 3des encr_auth_algs md5} |
これによって、LAN 上の各システムが VPN ルーターと通信するには、IPsec の起動が必要になります。
このトンネルは、IP から見たもう 1 つの物理的インタフェースを追加します。次の 3 つの ifconfig コマンドを入力してポイントツーポイントインタフェースを作成します。
# ifconfig ip.tun0 plumb # ifconfig ip.tun0 system1-point system2-point \ tsrc system1-taddr tdst system2-taddr encr_algs 3DES encr_auth_algs MD5 # ifconfig ip.tun0 up |
たとえば、enigma システムで次のコマンドを入力します。
# 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 3DES encr_auth_algs MD5 # ifconfig ip.tun0 up |
partym システムで、次のコマンドを入力します。
# ifconfig ip.tun0 plumb # ifconfig ip.tun0 10.1.3.3 10.16.16.6 \ tsrc 192.168.13.213 tdst 192.168.116.16 \ encr_algs 3DES encr_auth_algs MD5 # ifconfig ip.tun0 up |
ifconfig コマンドに渡すポリシーは、ipsecinit.conf ファイルに指定されているポリシーと同じでなければなりません。リブート時に、各システムは ipsecinit.conf ファイルに指定されているポリシーを使用します。
システムごとに、hme1 と ip.tun0 インタフェースの IP 転送をオンにします。次のいずれか 1 つを指定してください。
IPv4 ネットワークでは、次の構文を使用します。
# ndd -set /dev/ip hme1:ip_forwarding 1 # ndd -set /dev/ip ip.tun0:ip_forwarding 1 |
IPv6 ネットワークでは、次の構文を使用します。
# ndd -set /dev/ip6 hme1:ip6_forwarding 1 # ndd -set /dev/ip6 ip.tun0:ip6_forwarding 1 |
IP 転送とは、別のインタフェースから到着したパケットを転送できることを意味します。IP 転送はまた、送信するパケットがもともとは別のインタフェースから発信されたパケットである可能性も意味します。パケットを正しく転送するには、受信インタフェースと送信インタフェースの IP 転送をオンにしておきます。
hme1 インタフェースはイントラネットの内部にあるため、hme1 の IP 転送はオンにしておきます。さらに、ip.tun0 はインターネットを通してこれら 2 つのシステムに接続されているため、ip.tun0 の IP 転送はオンにしておきます。
hme0 インタフェースの IP 転送はオフです。そのため、外部からパケットが保護イントラネットに侵入するのを防ぐことができます。外部とはインターネットを意味します。
システムごとに、次のコマンドを入力して、ルーティングプロトコルによってイントラネット内のデフォルトのルートが通知されないようにします。
# ifconfig hme0 private |
hme0 の IP 転送がオフになっていても、ルーティングプロトコルの実装によっては、このインタフェースを通知することがあります。たとえば、in.routed プロトコルは、イントラネット内のピアにパケットが転送される際に hme0 を有効なインタフェースとして通知する場合があります。インタフェースの private フラグを設定すれば、このような通知を防止できます。
hme0 経由のデフォルトルートを手動で追加します。
デフォルトルートは、インターネットに直接アクセスできるルーターでなければなりません。
# pkill in.rdisc # route add default router-on-hme0-subnet |
たとえば、enigma システムで、次のルートを追加します。
# pkill in.rdisc # route add default 192.168.116.4 |
partym システムで、次のルートを追加します。
# pkill in.rdisc # route add default 192.168.13.5 |
hme0 インタフェースはイントラネットの一部ではありませんが、インターネットを介してそのピアシステムにアクセスする必要があります。hme0 は、自身のピアを見つけるために、インターネットルーティング情報を必要とします。インターネットの残りの要素にとって、VPN システムは、ルーターというよりもホストのような存在です。したがって、デフォルトルーターを使用するか、ルーター発見プロトコルを実行すれば、ピアシステムを見つけることができます。詳細については、route(1M) と in.routed(1M) のマニュアルページを参照してください。
リブート後に hme0 がデフォルトルートを使用するように、defaultrouter ファイルを作成します。
/etc/defaultrouter ファイルに hme0 のデフォルトルーターの IP アドレスを入力します。この手順により、in.rdisc デーモンがリブート時に起動しなくなります。
システムごとに、ブートシーケンスの初期にルーティングが起こらないようにします。これによって、セキュリティの脆弱性が軽減されます。
# touch /etc/notrouter |
VPN がリブート後に開始するように、/etc/hostname.ip.tun0 ファイルを編集します。
system1-point system2-point tsrc system1-taddr \ tdst system2-taddr encr_algs 3des encr_auth_algs md5 up |
システムごとに、VPN パラメータの一部をブート時に設定するファイルを作成します。このファイルに /etc/rc3.d/S99vpn_setup という名前を付けます。
各システムで、 hme1 および ip.tun0 インタフェースの IP 転送をオンにします。次のいずれか 1 つを指定してください。
IPv4 ネットワーク上で、ファイルに次の行を追加します。
ndd -set /dev/ip hme1:ip_forwarding 1 ndd -set /dev/ip ip.tun0:ip_forwarding 1 ifconfig hme0 private in.routed |
IPv6 ネットワーク上で、ファイルに次の行を追加します。
ndd -set /dev/ip6 hme1:ip6_forwarding 1 ndd -set /dev/ip6 ip.tun0:ip6_forwarding 1 ifconfig hme0 private in.routed |
in.routed プロトコルを使用する代わりに、手動で /etc/rc3.d/S99vpn_setup ファイルにルートを追加することもできます。
システムごとに、次のコマンドを入力してルーティングプロトコルを実行します。
# in.routed |