この手順では、インターネットで VPN を構築して組織内の 2 つのネットワークを接続する方法について説明します。また、そのネットワーク間のトラフィックを IPsec で保護する方法について説明します。前提条件として、VPN リンクを実装した 2 つのシステム上で、ネットワークの le1 インタフェースは VPN 内部にあり、le0 インタフェースは VPN 外部にあるものとします。
また、この操作では、DES と MD5 で ESP を使用します。使用するアルゴリズムによってキーの長さが異なり、DES の場合は 64 ビット (56 ビット + 8 ビットパリティ)、MD5 の場合は 128 ビットになります。インターネットでゲートウェイになる 2 つのシステムには、次の操作をします。VPN については、仮想プライベートネットワークを参照してください。
システムコンソールからスーパーユーザーになります。
リモートログインすると、セキュリティ上重要なトラフィックが盗聴される恐れがあります。何らかの方法でリモートログインを保護していても、システム全体のセキュリティがリモートログインセッションレベルに低下します。
次のコマンドを入力して IP 送信をオフにします。
# ndd -set /dev/ip ip_forwarding 0 |
IP 送信をオフにすると、このシステムを経由したネットワーク間のパケット送信ができなくなります。
次のコマンドを入力して IP の厳密宛先マルチホームをオンにします。
# ndd -set /dev/ip ip_strict_dst_multihoming 1 |
IP 厳密宛先マルチホームをオンにすると、システムの宛先アドレスのうちの 1 つに宛てたパケットは、そのアドレスを割り当てたインタフェースに必ず到着します。
ndd(1M) コマンドを使用して IP 送信をオフにし、IP 厳密宛先をオンにすると、マルチホームによってシステム自体へのパケット以外はすべてパケットがシャットダウンされ、宛先 IP アドレスに対応するインタフェースにだけパケットが到着します。
必要に応じて、次の手順で Solaris システム上の大部分 (すべてでない場合) のネットワークサービスを無効にします。
VPN ルーターは、ほとんどの入力要求を受け付けません。入力トラフィッ クを受け付けるすべてのプロセスを無効にする必要があります (inetd.conf ファイルの行をコメントにするか、SNMP を終了するなど)。 また、Web サーバーの保護方法のような方法を実行する必要があります。
inetd.conf を編集して、重要なサービス以外のすべてのサービスを削除した場合、次のコマンドを入力します。
# pkill -HUP inetd |
重要なサービス以外のすべてのサービスを削除するための inetd.conf の編集をしていない場合は、次のコマンドを入力します。
# pkill inetd |
必要に応じて、次の例のようなコマンドを 1 つまたは複数入力して SNMP、NFS など他のインターネットサービスを無効にします。
# /etc/init.d/nfs.server stop # /etc/init.d/sendmail stop |
ネットワークサービスを無効にすると、IP パケットによるシステムへの妨害がなくなります。たとえば、SNMP デーモン、telnet、rlogin を最大限に活用できます。
システムごとに、2 つのシステム間のセキュリティアソシエーションの組を追加します。
システムで IPv4 アドレスを使用している場合には、セキュリティアソシエーションを作成するように IKE を設定すると、IKE デーモンにより、セキュリティアソシエーションが自動的に作成されます。VPN に IKE を設定するには、事前共有鍵による IKE の設定方法、自己署名付き公開証明書による IKE の設定方法、または認証局による署名付き公開鍵による IKE の設定方法のいずれかの手順を実行します。
システムで IPv6 アドレスを使用している場合には、次の手順を実行して手動でセキュリティアソシエーションを作成する必要があります。
次のコマンドを入力して ipseckey コマンドモードを有効にします。
# ipseckey > |
> プロンプトは、ipseckey コマンドモードになったことを示します。
次のコマンドを入力します。
> add esp spi random-number src system1_addr dst system2_addr \ auth_alg md5 encr_alg des \ authkey random-hex-string-of-32-characters \ encrkey random-hex-string-of-16-characters |
Return キーを押してコマンドを実行します。
次のコマンドを入力します。
> add esp spi random-number src system2_addr dst system1_addr \ auth_alg md5 encr_alg des \ authkey random-hex-string-of-32-characters \ encrkey random-hex-string-of-16-characters |
キーと SPI は、セキュリティアソシエーションごとに変更できますが、同じにしてはいけません。
Ctrl-D キーを押すか、 quit を入力してこのモードを終了します。
次の手順を実行して、IP から見たもう 1 つの物理的インタフェースを追加する保護トンネル ip.tun0 を設定します。
システム 1 で、次のコマンドを入力します。
# ifconfig ip.tun0 plumb # ifconfig ip.tun0 system1-taddr system2-taddr \ tsrc system1-addr tdst system2-addr encr_algs des encr_auth_algs md5 # ifconfig ip.tun0 up |
システム 2 で、次のコマンドを入力します。
# ifconfig ip.tun0 plumb # ifconfig ip.tun0 system2-taddr system1-taddr \ tsrc system2-addr tdst system1-addr encr_algs des encr_auth_algs md5 # ifconfig ip.tun0 up |
システムごとに、次のコマンドを入力して le1:ip_forwarding と ip.tun0:ip_forwarding (この例では) をオンにします。
# ndd -set /dev/ip le1:ip_forwarding 1 # ndd -set /dev/ip ip.tun0:ip_forwarding 1 |
ip_forwarding は、インタフェースから到着したパケットを転送できることを意味します。またこのインタフェースから転送されるパケットは別のインタフェースが発信元であることを表します。パケットを正しく転送するには、受信インタフェースと送信インタフェースの ip_forwarding をオンにしておきます。
le1 はイントラネットの内部にあり、ip.tun0 はインターネットを経由して 2 つのシステムを接続するので、これら 2 つのインタフェースでは、ip_forwarding をオンにしておきます。
le0 インタフェースの ip_forwarding はまだオフです。そのため、外部 (インターネット内) からパケットが保護イントラネットに侵入するのを防ぐことができます。
システムごとに、次のコマンドを入力して、ルーティングプロトコルによってイントラネット内のデフォルトのルートが通知されていないことを確認します。
# ifconfig le0 private |
le0 の ip_forwarding がオフになっていても、ルーティングプロトコルの実装のどれか (in.routed など) で、le0 がイントラネット内のピアにパケットを転送するときの有効なインタフェースであることが通知されている可能性があります。インタフェースの private フラグを設定すれば、この通知を削減できます。
システムごとに、次のコマンドを入力して le0 経由のデフォルトルートを手動で追加します。
# pkill in.rdisc # route add default router-on-le0-subnet |
le0 はイントラネットの一部ではありませんが、インターネットを介してそのピアマシンにアクセスする必要があります。そのため、インターネットルーティング情報が必要です。インターネットの残りの要素にとって、VPN システムはルーターに対するホストのようなものなので、デフォルトルーターを使用するか、ルーター発見を実行すれば十分です。
システムが再起動するときに、in.rdisc が再開するのを防ぐため次の操作をします。
le0 サブネットのデフォルトルーターの IP アドレスを /etc/defaultrouter ファイルに指定します。
この手順により、in.rdisc がリブート時に開始しなくなります。
起動シーケンスの初期にルーティングが起こらないようにし、セキュリティの脆弱性が軽減されます。
# touch /etc/notrouter |
/etc/hostname.ip.tun0 ファイルを編集して次の行を追加します。
system1-taddr system2-taddr tsrc system1-addr \ tdst system2-addr encr_algs des encr_auth_algs md5 up |
/etc/rc3.d/S99vpn_setup ファイルを作成して、次の行を入力します。
ndd -set /dev/ip le1:ip_forwarding 1 ndd -set /dev/ip ip.tun0:ip_forwarding 1 ifconfig le0 private in.routed |
システムごとに、次のコマンドを入力してルーティングプロトコルを実行します。
# in.routed |
暗号システムの不正侵入者の時間的な余裕をなくすため、手順 5 で作成するセキュリティアソシエーションは定期的に新しいセキュリティアソシエーションに変更します。現在のセキュリティアソシエーションを変更するには、次の手順を実行します。IPv4 ネットワークを実行している場合、IKE モジュールでセキュリティアソシエーションの変更が管理されます。