VPN構築のポイント


目次

はじめに
VPN検討の重要なポイント
出発点は通信可能性の保証から
通信を成り立たせる架け橋
●プロキシについて
●トンネリングについて
通信経路確保の次は安全性管理
簡単なVPNを作ってみる
●実験1
●実験2
プロバイダのVPNサービス
今後のVPN動向予測

一つ前へ


はじめに

 VPN(Virtural Private Network)という言葉は、古くは「公衆電話網を利用した構内電話網」という意味で使われていました。このため、近年インターネットの新しい利用形態として注目されているVPNは「インターネットVPN」という呼び方で区別されています。
 インターネットVPN(以降VPNと省略)では、「インターネットを途中に置いて遠隔地間のLANやユーザのコンピュータをつなぎ、遠隔地間で作業するユーザが、あたかも同じオフィスのLAN上で作業しているようにアプリケーションが使えかつデータにアクセスできること」を実現しようとしています。通信経路の大部分をすでに使っているインターネットにすることで、新たな設備投資を行わずにかつ通信コストを大幅に削減することができます。一方で、インターネット上を通るデータの安全性を保証することが不可欠です。データ通信が基本になるため、実現方法の特徴を通信プロトコルのレイヤに分けて説明しています。
 VPNという言葉がファイアウォールベンダを中心に使われ始めた'97年ころと比べ、現在では通信装置、ルータのベンダの多くがVPN機能の提供を始めています。ATMスイッチやISDNを使って動的にイントラネットを拡張する機能にまでVPNという言葉が使われ始めています。一口にVPNといっても実現方法も利点もそれぞれ異なります。ユーザは、目的に合うVPN製品を入手しやすくなった一方で、得られる内容の違いをよく理解し、利用の目的をはっきりもつことが求められるようになってきています。
 

VPN検討の重要なポイント

 インターネット利用とVPN利用のために配置する装置やネットワーク構成はよく似ています(図1)。しかしゲートウェイの管理基準は大きく違います。インターネット利用のためには、ファイアウォールを置いて誰でも外にアクセスできるようにします。また、インターネット側から内部ネットへのアクセスは遮断します。VPN利用の際には、インターネット側から内部ネットへのアクセスを受け入れるため、セキュリティホールを作らないようにするための利用形態の管理が最も重要なポイントとなります。

インターネット利用とVPN利用

 また、インターネット利用では使えるアプリケーションにあまり制限をつけなくてもよいのですが、VPN利用では限定したアプリケーションをよく管理した状況で使い、ユーザも目的をはっきりさせることが重要といえます。
 VPN構築の検討には、

 @VPN上で利用するアプリケーションと利用形態
 A対象ユーザとVPN内へのアクセス形態
 Bアクセス管理基準(セキュリティポリシー)

をまず明確にすることが重要です。@でゲートウェイを通すプロトコルの種類、その利用頻度やトラヒック、重要なデータの入ったアプリケーションサーバの位置などを予測します。Aでユーザのセキュリティ自己管理レベル、アクセスしてくる場所がどの程度安全かなどを予測します。これらの予測を基に、Bで必要十分と考えられるセキュリティ強度やそのために必要な技術を絞り込みます。セキュリティの自己管理を十分行えないユーザが、重要なデータにインターネットからリモートアクセスし、さらにそのデータの入ったサーバが内部ネットの奥深くに位置するようなら、最強度の基準でアクセス管理を行う必要があるのは言うまでもありません。
 これらの条件をリストアップすることで、VPNサーバの位置や構成、アプリケーションサーバの位置、ゲートウェイで必要な管理項目など、適切なネットワーク構成を設計するための基本データが揃います。こういうデータが必要な理由を、以下で説明します。

出発点は通信可能性の保証から

 ファイアウォールを入れたために、一時的にでもインターネットへのアクセスを遮断されたという経験を持つユーザは多いでしょう。そうなると何らかの手法でエンドtoエンドの通信を成立させないと何の作業も行えません。ネットワーク構成を変えないでVPNサーバを導入したら通信可能性を保証できなくなった、ということにならないよう十分な検討が必要です。IPルーティングとDNS(Domain Name System) の構成は通信可能性保証の基本ということができます。
 IPルーティングについては、ルーティング情報が伝搬していないと、「パケット転送不可」というエラーが生じます。
 DNSについては、ルートDNSへのアクセスができないと、通信相手のIPアドレスが入手できず、「目的サーバは存在しない」というエラーが生じます。
 いずれが失敗しても、アプリケーションから見た通信は成立しません。不用意にVPNを構築すると、途中にファイアウォールやVPNサーバなどがいくつも入ってDNS検索やIPルーティングを妨げてしまい、エンドtoエンドで見たアプリケーションの通信が成り立たなくなってしまいます。
 その他に一般化している通信疎外要因として、プライベートアドレスの利用が挙げられます。IPアドレスの枯渇問題を解決するため、誰でも自由にある範囲のIPアドレスを使ってよいとIETFで標準化されています(RFC1918 Address Allocation for Private Internets)。このため、多くの企業内部ネットワークでプライベートアドレスが使われています。かつてインターネットにつながったネットワークには、世界中でユニークなIPアドレスつけられていました。今や同じIPアドレスをもつ数限りないネットワークがインターネットにつながっています。しかし、その一方で、インターネット上のルーティングを混乱させないために、プライベートIPアドレス情報をインターネット上へ流せないようになっています。VPNの構築には、このような「ルーティングされないIPアドレスをもつ隠されたネットワークへの通信経路を作ること」が不可欠になります。インターネットの従来の通信モデル、ファイアウォールの目的と大きく異なる部分です。

通信を成り立たせる架け橋

 遮られた通信経路をその場しのぎに開けていくと、結果的に一貫性のない複雑なネットワークを作ってしまいます。これはセキュリティホールを作り、運用ミスによるネットワークトラブルの原因にもなります。混乱を避けるためには、標準化され広くユーザ層に行き渡ったプロキシやトンネリング技術を利用してインターネットの通信モデルにあった通信経路を確保します。過去の経緯から、これら技術とファイアウォールが同じように考えられていますが、プロキシもトンネリングも「通信経路を確保し管理する技術」としてとらえるのが正しいと言えます(図2)。

多段プロキシとトンネリングを使ったVPN接続

●プロキシについて

 標準化されたプロキシとしてSOCKSとHTTPプロキシが普及しています。ファイアウォールが使われ始めた当初、アプリケーション毎にプロキシが開発されましたが、次々と新しいアプリケーションが市場に出てきはじめると開発が追いつかなくなり、最近では標準化された技術を利用する方向に移ってきています。SOCKSはその名の由来(SOCKetS)通り、BSDおよびWinSock socket関数コールの前後にSOCKSプロトコルとプロキシ処理を動的に追加します。Scket関数を使ったアプリケーションに汎用的に適用できます。HTTPプロキシはブラウザやWebの広がりとともに普及しました。HTTPプロキシ実装にsocket関数が使われていることで、HTTPプロキシにSOCKS機能を持たせた構成もよく用いいられています。これらプロキシは多段に連鎖させることができます。

●トンネリングについて

 IPXなど、IPとは異なるプロトコルのパケットをIPパケットに包んで送る手法はよく使われてきました。IPパケットをIPパケットに包んで送ることもよく行われています。IPsec,IPV6,IPマルチキャストなど、IPパケットの情報量と解釈が異なるネットワーク間のIPパケット転送を、既存のインターネット通信インフラを使って行うときに有効な手法です。プライベートIPアドレスを持ったネットワーク間のパケット転送にも使えます。
 ファイアウォールの知識がある方は、ここでNAT(Network Address Translation)という言葉を思い浮かべるでしょう。NATはファイアウォールでよく使われ、同じようによく使われるプロキシと効果が似ています。このため両者は混同されています。NATはIPパケット中のIPアドレスを書き換える手法です。NATサーバに正規IPアドレスをまとめて与えておき、プライベートIPアドレスのネットワークから送られたIPパケットを見て、その中のプライベートアドレスを正規アドレスの1つに置き換えて転送します。この変換表がNATサーバで管理されます。この結果、インターネット上では正規アドレスだけを使った通信が行われます。プロキシとトンネリングではアドレスを書き換えません(図2)。VPNのようにルーティング情報のないネットワークへのアクセスや、複数のNATサーバでアドレスが書き換えられたときの対応関係を管理するのは難しいでしょう。
 トランスポート(TCP/UDP) 層より上位層で実現する技術と、ネットワーク(IP)層で実現する技術では、直接通信できなくなったコンピュータ間の通信を成り立たせるという点では同じですが、VPNとして必要な機能を考えると、細かな違いが数多くでてきます。この違いについて簡単にまとめます。

◆トランスポート層より上位層の技術:SOCKSやHTTP

 ユーザやアプリケーションを識別することができます。ドメイン名やDNSなど、上位層で使われる技術との関係や、通信手段が考慮されます。たとえば、SOCKSではドメイン名の扱いがプロトコル内で標準化されていますから、どのベンダのSOCKSサーバでもDNSの使い方は共通化してきます。またSOCKSサーバがDNS検索を妨げるようなことにはならないわけです。一方、処理が多くなる分だけ性能が犠牲になります。性能は少し犠牲にしても、ユーザやアプリケーションという精度で管理することにプライオリティが置かれています。

◆ネットワーク層の技術:IPトンネリング

 IPパケットだけを見て処理する限り、ユーザやアプリケーションという概念は入りません。アプリケーションが1つのTCP接続だけで通信するとは限りません。マルチメディアを扱うアプリケーションでは、何本ものTCPやUDP接続を同時に使います。しかし、これらの接続がどのユーザやアプリケーションに属しているか、IPパケットを見ただけではわかりません。逆に言うと、こういう細かいことを気にしないでIPパケットを右から左にトンネルし、性能の低下を抑えることにプライオリティが置かれています。
 これらはそれぞれの技術の基本的特徴です。SOCKSサーバ、IPトンネリングサーバとしてソフトウェア化して比較した場合、常に成り立つとは言えません。データ暗号化機能を含んだサーバソフトになると、通常なんらかのユーザやコンピュータの認証処理が入り、データを暗号化/複号化する処理には1桁大きいオーダで処理時間がかかります。プロトコル層の違いで出る通信性能差を遙かに越えます。またDNS検索をうまく扱えないサーバソフトは性能に大きな影響を与えます。何らかの理由でDNSサーバにアクセスできず、タイムアウトまで待つようなことがよく起こるからです。認証局や鍵配布サーバとのやりとりが入っても同じようなことが起こります。これらはアプリケーション通信に先だって起こるため、ユーザの目には大きな性能劣化が生じている用に映ります。VPNサーバのように複数の技術が統合化され、いろいろ他のシステムと協調して動くものについては、現状のネットワーク構成や作業形態を考慮して総合的に評価を行うべきでしょう。

通信経路確保の次は安全性管理

 エンドtoエンドでデータを暗号化できれば確かに安全ですが、すべてのユーザが利用できる環境を持つことは難しいでしょう。すべてのコンピュータとアプリケーションに暗号化通信機能が揃わないと実現しません。現状の技術で構築可能かつ期待できるVPNとは、遠隔地間のネットワークやユーザが携帯するPCをつないで通信する場合、データの暗号化/復号化はインターネットとの接点に置いたVPNサーバで行うというものになります。より大きな効果を求めれば、より多くのユーザを巻き込むことになり、しばらくはこの状態が続くと考えられます。VPNへの期待が廉価性にあることもあり、高い安全性に見合った投資が必要という現実との間で、いろいろなトレードオフが必要になってきます。こういう状況では、VPNサーバでトレードオフを柔軟に満たす機能を提供することが重要になります。そのポイントはきめ細かいアクセス管理にあると言えるでしょう。
 基本となるアクセス管理対象には、@ユーザやコンピュータ、Aアプリケーション、B利用時間、があります。これらの要素でセキュリティ管理のレベルが変わるからです。たとえば、ユーザのレベルや作業内容によって適用する認証技術が違ってもよいはずであり、またアプリケーションによって求められるセキュリティレベルも違います。また、夜間や休日のアクセス制限は強めておきたいものです。この組み合わせを考えた後で、データを暗号化したり、もっと詳細な内容でアクセス管理を行うなど、目的に見合った投資を考えるのが現実的といえます。

簡単なVPNを作ってみる

 まずフリーソフトで簡単なVPNを試してみましょう。データ暗号化まで含めたVPNを構築するには本格的な実験環境と予算が必要です。しかし、アクセス管理がどういうものかを知るという程度の実験なら、IETF標準化のために公開されているSOCKSバージョン5サーバのリファレンス実装が使えます。必要なソフトはhttp://www.socks.nec.comからダウンロードできます。Linux,FreeBSD をはじめとする十数種類のUNIXプラットホーム上でも動作しますから、余っているPCで実験できます。SOCKSサーバのインストールについては、「UNIX MAgazine」'98年春〜秋に連載されています。また、http://www.stardust.com/のSOCKS SUMMITページにあるホワイトペーパーも参考になります。

●実験1

 SOCKSサーバをPCにインストールし、インターネットから通信可能な位置に置きます。自宅のPCからプロバイダのネットワークにPPPでアクセスし、このSOCKSサーバ経由で、インターネットに公開しているWebサーバにアクセスします。SOCKSサーバでは、ユーザ名/パスワードのユーザ認証を必須としておき、実験に参加するユーザだけが認証され、そのWebサーバへしかプロキシしないように設定します(図3)。

実験1.gif @SOCKSのサーバをPCにインストールし、インターネットからアクセスできる位置に置く、「Webサーバ」へだけプロキシする。「自宅のPC」からのユーザだけアクセスをOKにするなど、コンフィグレーションファイルには最低限の情報だけを定義する。
APC上にSOCKS5環境をセットアップする。WindowsならSocksCap,UNIXならRunsockを使えば動的にアプリケーションをSOCKS化できる。アプリケーションを変更する必要はない。
BPPPでプロバイダのネットワークにアクセスする。
Cブラウザで「Webサーバ」にアクセスしようとすると、ユーザには見えないところでSOCKSプロトコル通信が始まる。ユーザ認証プロセスに入ると、「ユーザ名/パスワード」の入力が求められる。
Dユーザ認証がOKされるとWebサーバに接続され、そのホームページが表示される。

注1)アクセスできなかったときはIPアドレスでWebサーバを指定したり、「traceroute」コマンドでIPパケットがどこまで届くか調べてみたり、「telnet」してみてプロンプトが返ってくるか調べてみるとよい。こういう方法でDNSとルーティングの状況を確かめることができる。DNSとルーティングの動作確認は、SOCKSの利用に限らず、どのような手法を使ったときでもまず最初に行うべき作業であるといえる。

注2)DMZ:De-Militarized Zone、ファイアウォールで完全に閉じていた内部ネットの一部を、完全非武装にするわけではないがインターネット側に移して、インターネットからアクセスできるようにしたネットワークのこと。Webサーバを公開することが一般化し、インターネットにサーバを公開したいという要求が企業内で高まり、ファイアウォールの構築手法として後にこの概念が導入された、通常Webサーバ、メールサーバ、FTPサーバなどを置く。インターネットから誰でもアクセスできるが、そこで使われるコンピュータ上では不必要なデーモンを走らせないとか、ファイアウォールでアクセスログを残すなどしてセキュリティを管理する。


 社内ネットにセキュリティ問題を起こすような実験はできませんが、上記構成なら実験のすべてをインターネット上で行え、レスポンスやパフォーマンスなども体験することができます。このWebサーバを内部ネット上に置いたと仮定すると、社外を移動しながら仕事をする社員が、外から社内のデータを見たり更新したりできるVPNのような構成になります。Webサーバを使って常時情報を更新し、協力サプライヤに迅速に情報を伝えるようなVPNでも似たような構成になるでしょう。

●実験2

 SOCKSサーバをもう1台、同じくインターネットから通信可能な位置に置きます。プロバイダのネットワークから最初にアクセスするSOCKSサーバには、すべての通信を2つめのSOCKSサーバへプロキシするように設定しておき、2つめのSOCKSサーバからWebサーバへプロキシするように設定します(図4)。

実験2.gif @2つめのSOCKSサーバをPCにインストールし、同じくインターネットからアクセスできる位置に置く、「SOCKSサーバ1」からは、「SOCKSサーバ2」へだけプロキシを行うように設定する。また「SOCKSサーバ2」は「SOCKSサーバ1」からの通信だけを受け付けるようにする。
APC上では特に設定変更はない。
BPPPでプロバイダのネットワークにアクセスする。
Cブラウザで「Webサーバ」にアクセスしようとすると、SOCKSサーバ1と2の間でSOCKS通信と認証処理が始まる。この時点ではPC側のSOCKS通信はリターンを待ったままの状態。
Dこのユーザ認証がOKとなると、SOCKSサーバ1、PC側へと順にSOCKS処理正常完了がリターンされ、ブラウザからWebサーバまでの接続が確立して、そのホームページが表示される。

注1)アクセスできなかったときは実験1のときと同様の手順で調べてみる。

注2)SOCKSサーバ1を自宅に置くことができれば、より現実的なエクストラネット環境を作ることができる。



 これでトンネリングと同じ効果を得ることができます。実験1の構成でVPNを作ると、WebサーバをDMZ上に置くのが妥当な選択になります。Webサーバを内部ネットの奥深く持ってゆくためには、実験2の構成を応用します。Webサーバに近いSOCKSサーバを内部ネット上に置き、最初のSOCKSサーバとこのSOCKSサーバで、途中で他のネットワークへアクセスできないように経路制御をして、Webサーバにアクセスさせます。アクセスする側にSOCKSサーバを置くと、さらにネットワークとネットワークをつなぐ構成へと応用でき、エクストラネットの構成となります。

●考察

 いざ実験を始めると、机上では気がつかなかった疑問が出てきます。たとえば、

 ◆自宅のPCでプロバイダのネットワークに入り、どうDNSを検索できるようにするのか
 ◆DNSが使えなかったりIPアドレスが引けなかったりしたとき打つ手はあるのか
 ◆Webサーバがアクセスできないとき、どこまでパケットが届いているかを確認できるか
 ◆ユーザ名、パスワードは安全なのか
 ◆2つめのSOCKSサーバで元のユーザを別のパスワードで再認証できないだろうか

などです、DNSの設定ミスでまごつかないためにも、はじめはIPアドレスだけで実験する方がよいでしょう。もしくは、アドレス検索をいつもSOCKSサーバに行わせるという手もあります。ダウンロードしたパッケージにはプロキシ対応の「traceroute」コマンドが入っており、これをつかうとWebサーバまでの経路を確認できます。フリーで公開されているソフトではユーザ名/パスワードを暗号化しないので、インターネット経由で入力するのは安全ではないと考えた方がよいでしょう。これを解決するには、ソースコードを改造するという方法もありますが、NEC,Aventail,IBM,Attachmate社から出ている製品版は、SSLなどを使ってユーザ認証が強化されていますから、安全性が必須となったときにはこれら製品版の採用を薦めます。これらの商品にはユーザ再認証機能が含まれているものもあります。
 だいたいこれでVPN構築の基本を一通り体験することができます。

プロバイダのVPNサービス

 MCIやAT&Tなど、VPN接続をサービスに加えるプロバイダが増えています。VPNサービスと言っても、フレームリレーで遠隔地を結ぶものまで含まれています。利用している技術により、提供するサービスも変わります。
 プロバイダを使ってVPNを構築する利点はいくつかあります。通常、VPNを企業間で構築しようとすると、それぞれで相手を受け入れるアクセスポリシーの設定と管理が大変です。インターネットからアクセスがある場合、1人のアクセスを受け入れるために、無数のユーザからのアクセス可能性を考慮してVPNサーバを管理しなければなりません。プロバイダはバックボーンネット上のルーティングやアクセス管理をコントロールできます。VPNに関係のないところからアクセスされないように管理してくれれば、企業側での管理がずいぶん減ります。モバイルユーザには認証プラグインを持たせることで、全国にあるアクセスポイントから管理されたアクセスを保証してくれます。

今後のVPN動向予測

 インターネットの利用形態はますます多様化していきます。IPアドレスは徐々にIPv6化し、IPマルチキャストやモバイル接続も一般化していくでしょう。メインフレーム環境もインターネットにつながるのがあたりまえになります。バックボーンネットの通信インフラは大容量高速化し、現行では普及しにくいマルチメディア系のアプリケーションも広がってきます。しかし、世界のインターネットは、依然として現行IPv4アドレスを使ったものが大勢として続くでしょう。ファイアウォール、DMZ、プライベートIP、メインフレーム環境、IPマルチキャスト、IPv6、新しいアプリケーションと独自プロトコル、プロバイダのネットワーク、外を動き回るモバイルユーザなどが共存する環境になります。これらは導入時に独立したネットワーク環境を作る傾向があります。VPNの考え方は、現行のインターネットを核として、こういった新しいネットワークをつなぐものへと移行してゆきます。たとえば、マルチキャストネットをつなぐVPN、IPv6ネットをつなぐVPNなどです。また、セキュリティのように、実地検証されないと普及しにくい技術は、新しいネットワーク環境ですぐ使えるようにはならないでしょう。
 これらのことを考えると、VPNは現行インターネット上でセキュリティを確保する上での重要な役割を果たし、新しいネットワーク環境への有効な移行手段を提供するものであると言うことができます。こういう移行手段を視野において、VPN製品は提供され、かつ選ばれるべきだとも言えます。


一つ前へ