VPN を楽しもう !

覚え書き (1) 〜 技術概要と使いみち編 〜

新装開店(?)と呼ぶには遅きに失しているが、新しいコンテンツ最初の企画は、比較的簡単に外部から自ネットワークにアクセス出来るVertual Private Network(VPN)について、ぼちぼち語っていこうと思う。

VPN とはいったいなんぞや?

VPNとは“仮想プライベートネットワーク”と訳されるとおり、自分のローカルネットワークをインターネット上に“仮想的に構築”することが可能なインフラストラクチャの形態である。これだけだとなんだか分からないので、以下に要件を示す。

  1. PPPパケット情報をインターネット上のパケット情報で包んで(カプセル化という)情報をやりとりする。
  2. パケットに含まれる情報は暗号化されてやりとりされる。プロトコルの種類によって暗号化する箇所は異なる。
  3. クライアントとサーバ間では、あたかもイントラネット上で通信しているように見える。

この機能を利用すると、例えば外出先で(インターネットに接続できる環境があれば)自分のノートパソコンから日頃利用しているイントラネット内のリソースを使用できたり、あるいは保守メンテナンスが行えたりするので、便利だ。
カプセル化はインターネットを透過的に利用するための技術だし、暗号化は悪意あるトラフィック盗聴や改変から通信を守るための技術である。

VPN の種類と必要なリソース

VPNは本来高度な技術なので、運用にはそれなりの資材や知識が必要だった。しかし現在では、Windowsの標準機能として利用することも可能なのだ。ただしどのWindowsでも可能なわけではないし、VPNの形態もいくつか存在する。

専用線VPN
企業では一番普及している形態。専用線をそのまま利用し、仮想化と暗号化をおこなう。通信速度が速く、セキュリティ環境が優れている。
IP-VPN
通信会社が提供する閉じた通信網(IP 網)の中でVPNを利用する。網内は限定された通信しか行われないため、それなりの速度とセキュリティが保たれ、専用線ほど費用がかからない。
インターネットVPN
公開されたインターネットリソースを利用するVPN。既存環境を利用するのでインフラ費用は節約できるが、相応のセキュリティ対策が必須。速度はかなり制限される。

VPNを行うにはその他、通信機器や専用ソフトウェアが必要だ。これは以下の通りである。

通常は上記機器類は専用品のため、とても高価で一般には手に入れにくい。だがWindows 2000などは標準でルーティング機能、VPNサーバやクライアント機能をもっており、安価にVPN環境を構築、管理することができる。セキュリティもきちんとした知識と運用力があれば、そんなに問題は起こらないと思われる。

WindowsではVPNサーバを構築するにはNT 4.0 Server/2000 Server/2000 Professionalが必要だ。ただしWindows 2000 Professionalについては、端末同士のVPN接続を1回線しか確立できないなどの制限事項があるので注意が必要だ。クライアントに関してはWindows 95より後のものであれば、接続は可能だ。ここではSOHO環境を想定し、安価さと安全性を兼ねたWindows 2000 Server+Windows 2000 Professinalで実際にシステムを作ってみることにする。

VPN のプロトコルとそのしくみ

VPNを使うためには専用のプロトコルを用いる。Windows 2000/XPではPoint to Point Tunneling Protocol(PPTP)Layer 2 Tunneling Protocol(L2TP)がサポートされているが、このプロトコルはそのしくみが異なる。差異を比べながら簡単に解説する。

VPNには主に2つの機能、(1)カプセル化、(2)データの暗号化、があって初めて実現される機能だが、PPTPL2TPではそのしくみは異なる。

パケット構造

PPTPのパケット構造は基本的に以下のようになっている。

  1. PPPフレーム(PPPヘッダ+PPPペイロード)をGREヘッダでカプセル化する。
  2. 上記GREパケットをIPヘッダでさらにカプセル化する。
  3. 上記IPデータフラムを、利用するデータリンク(Ethernet,PPP)のヘッダ・トレーラで最終的にカプセル化する。

PPTP パケット構造図

このとき、暗号化を行う範囲はPPPペイロードに対してのみ有効になるので、パケットを解析されるとローカル宛先アドレスなどは解読される可能性がある。(しかし通常ローカルアドレスはインターネット間のルータを通過できないので、攻撃対象として問題にはならないだろう。)

と、上記に書いたがこれは訂正するべきであろう。もし、IPパケットの経路を詐称したりして、不正なパケットの通過を許してしまった場合、ローカルアドレスが攻撃者に読みとられていると重大な被害を受ける可能性があるからである。そういう意味では、内部情報はなるべく暗号化されてしかるべきである。ただし、FTPなどのプロトコルではアプリケーションレベルでデータをやりとりするものもあり、この場合はPPPダイアフラム内にデータが置かれるので、この場合は暗号化が有効となる。

一方、L2TPは以下の方法でパケットを生成する。

  1. PPPフレームをL2TPヘッダでカプセル化する。
  2. 上記L2TPパケットをUDPヘッダでカプセル化する。
  3. 上記UDPメッセージをIPSec ESPヘッダ・トレーラでカプセル化した上でIPSecポリシに従って暗号化し、IPSec ESP認証トレーラでさらにカプセル化する。
  4. 上記IPSecパケットをVPNサーバ・クライアント宛先アドレスを含むIPヘッダでカプセル化する。
  5. 上記IPデータフラムを、利用するデータリンク(Ethernet,PPP)のヘッダ・トレーラで最終的にカプセル化する。

L2TP パケット構造図

L2TPではUDPメッセージ全体が暗号化されており、攻撃者がつけいる部分は最初から少ないものになっている。

 
 
 
 
 

ちなみに上記のようにパケットをカプセル化することで、IP上ある配送先に通信を確立した状態で別の配送先と通信するしくみを"トンネリング"と呼ぶ。実際はこれ(データの転送)に先立ち、外部接続(グローバルアドレス上のVPNサーバとクライアント)と内部接続(ローカルアドレス上のVPNサーバとローカルアドレスをVPNサーバに割り当てられたクライアント)において接続を確立するやりとりが存在する。

認証方法

接続時の認証方法であるが、これもL2TPの方が強固な内容となっている。PPTPは単純にユーザアカウントによる認証方法のみのサポートだが、L2TPではユーザ認証に加えてコンピュータ認証および共有鍵による認証形式をサポートしている。

認証方法いろいろ
コンピュータ認証とはサーバから認証配布されたセキュリティ証明書を利用した認証方法であり、共通鍵とはサーバとクライアント双方に共通の文字列を設定し、これから作成した鍵を認証に用いる形式である。
コンピュータ認証は、X509認証を利用した強固なものであり、一般的に推奨できる(マイクロソフトも推奨)にたいして、共有鍵方式は符丁となる"文字列"を元に双方で鍵を生成するため、この文字列の管理において(漏洩した場合、簡単に無効化される)やや遜色があるとされている。

 
 
 
 

暗号プロトコル

PPTPの暗号プロトコルにはMPPE(Micorsoft Point-to-Point Encryption)という暗号強度56 or 128 bitのプロトコルが利用される。これに対してL2TPではIPSecに実装されたDES(Data Encryption Standard)という56 bitなプロトコルが用いられる。しかしDESでは暗号強度に問題があるため、改良された3DESを用いるのが一般的である。これは168 bitの暗号強度によって高い暗号レベルを持っている。

Windows 2000ではGold(素の)バージョンでは56 bit MPPEまたはDESだが、高度暗号化パックを導入するかサービスパック2以降を導入すると128 bit MPPEおよび3DESをサポートするようになる。

利用ポート

PPTPではTCP 1723がポートとして割り当てられている。またGREを利用しているので、そのプロトコル番号47を利用する。L2TPでは、IKEとしてUDP 500と、UDP 1701が割り当てられている。ただし、L2TPでは、UDPパケットは暗号化されているためVPNサーバに到達前にファイアウォールを通過する場合、IPSec ESPのプロトコル番号50を通過させるようにする。

VPN の構成方法および設計

VPNの構成方法には以下の2通りが存在する。ネットワーク構成によって選択する。

リモートアクセスVPN
VPNサーバに向かってクライアントが単独で接続する方法。ちょうどRAS(電話経由)でネットワークにアクセスするパターンに似ている。割と容易に接続が可能だ。ルータを通じても(パススルー対応していれば)接続は可能である。
ルータ間VPN
単独のクライアントではなく、ネットワーク同士の環境をつなげる仕様のVPN。この場合は"デマンドルータ"と呼ばれる仮想ルータを構築し、その間で接続して通信とルーティングを合わせて行う。

VPNサーバはルータ機能を完全に備えているので、ネットワーク・フロントラインまたはDMZ(非武装地帯)のどちらにでも配置が可能だ。そのため、事前の設計が必要なケースが普通である。

ファイアウォールの内側(インターネット外寄り)の場合
DMZ 構造図
VPNサーバをファイアウォールを通過させてから接続させるネットワーク。いわゆるDMZにサーバを配置する方法だ。こちらが標準である。
 
 
 
 
 
 
 
 
 
 
ファイアウォールの外側(インターネット内寄り)の場合
直接接続 構造図
VPNサーバをファイアウォールを通過させずに直接接続するネットワーク。インターネット直づけというやつだ。ファイアウォールにNATが導入されているなどで通信が確立出来ない場合に利用する。セキュリティに要注意な設定だ。
 
 
 
 
 
 
 
 
 
 

なおWindows RRASはルータとして完全な機能がありパケットフィルタリングファイアウォールになることは可能なので、ファイアウォールがない場合もゲートウェイサーバとして、そこそこのセキュリティを保つことが可能である。

次回は、実際の設定方法を記載する予定です。なるべく早くあげるつもりです...。

Modified on 2003/01/21

戻る