検索
連載

第1回 リモート・アクセスVPNの概要在宅勤務を実現するリモート・アクセスVPN構築術(2/4 ページ)

電力不足のため、これからは在宅勤務が流行か。リモート・アクセスVPN環境があれば、自宅でもどこでもすぐにオフィスに。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

トランスポート層/ネットワーク層の仮想化

 トランスポート層ネットワーク層の仮想化とは、IPTCPUDPといった、低位のプロトコル・レベルでVPNを実現する技術である。アプリケーションではTCPやUDPを直接使うことはなく、一般的にはSocketなどのプログラミング・インターフェイスを介して利用している。そのため、トランスポート層やネットワーク層レベルで仮想化が行われても、上位のプログラミング・インターフェイスにはほとんど影響はない。そのため、たいてのアプリケーションはVPN上でも問題なく動作する。

PPTPプロトコル

 「PPTP(Point-to-Point Tunneling Protocol)」は、MicrosoftやAscend Communications(現Lucent Technologies)、U.S. Roboticsなどが中心になって作成したVPNプロトコルである。Windows 9xやWindows NTの頃からOS標準のVPNプロトコルとして採用されているので、特別な追加ソフトウェアなしに手軽にリモート・アクセスVPNを実現できるのがメリットである。

 PPTPプロトコルの構造を次に示す。オリジナルのIPパケット(とそのペイロード。上位のTCPやUDPパケットのデータのこと)をPPP(Point-to-Point Protocol)で包み、それをさらにGRE(Generic Routing Encapsulation)プロトコルでカプセル化/トンネル化してVPNサーバと通信する。PPPはさまざまなプロトコルをカプセル化して通信するためのプロトコルであり、最初はダイヤルアップ回線などで使われていた。PPPでカプセル化することにより、TCP/IP以外のプロトコル、例えばNetWareのIPX/SPXやWindowsネットワークのNetBEUI、MacintoshのAppleTalkといったプロトコルも扱えるようになっている。また暗号化や圧縮などの機能は、PPTPプロトコルではなく、その中のPPPレベルで行うことになっている。


PPTPプロトコルのフォーマット
元のIPヘッダとそのデータをPPPでカプセル化し、それを(必要なら)圧縮、暗号化して、GREプロトコルであて先まで送信する。GREはIPの上に載るプロトコル(TCPやUDPと同レベル)。インターネットの環境によっては、GREが通らず(ルーティングできず)、PPTPが利用できないことがある。

 PPTPは、Windows OS同士なら相互運用性は高いが、暗号化アルゴリズムがRC4(Rivest's Cipher 4)しかないとか、認証メカニズムが機能不足(サーバ認証機能がないMS-CHAPv2しか使えない)、データの改ざんなどに対する耐性がない、PPTPセッション確立時における初期セットアップ・シーケンスの一部が暗号化されないなど、いまとなってはやや脆弱/機能不足である。現在では後述のL2TP/IPsecを使うことが推奨されている。

IPsecプロトコル

 「IPsec(Security Architecture for Internet Protocol)」は、IPプロトコルを拡張したトンネル化プロトコルであり、IP上を流れるTCPやUDPのパケットの内容をそのままリモートVPN化することができる。PPTPのようにPPPでカプセル化するわけではないので、少ないオーバーヘッドでVPNを実現できるし、暗号化や圧縮、通信相手の認証、メッセージの改ざん防止、アクセス制御(あらかじめ設定したポリシーに合わないパケットを拒否するなど)、リプライ攻撃(受信・盗聴したパケットの再送信による侵入)防止機能などを持つ、高機能なプロトコルである。暗号化のアルゴリズムも3DESやAESなど、好きなものを自由に組み合わせて利用できるなど、プロトコルとしての柔軟性は高い。ただしIPを拡張したプロトコルのため、TCP/IP以外のプロトコルはトンネル化できない(PPTPのように、IPXやNetBEUIなどを使えない)。

 IPsecのパケットの構造を次に示しておく。暗号化機能を利用する場合は、オリジナルのTCPやUDPのヘッダとそのデータ全体を完全に暗号化できるので、通信内容が漏えいする可能性は少ない。


IPsecプロトコルのフォーマット
IPsecにはパケットを暗号化しないモードもあるが、これは暗号化をする場合のフォーマットの例。ESP(Encapsulating Security Payload)は、暗号化されたデータをカプセル化するためのヘッダ。トランスポート・モードは1対1の接続に、それ以外はトンネル・モードで利用する。IPsecを利用する場合は、VNPアプライアンスに付属の専用クライアントが必要な場合がある。

 IPsecにはトランスポート・モードとトンネル・モードという2つの動作モードがある。トランスポート・モードはルータなどを介さないポイント・ツー・ポイントの通信に使われ、トンネル・モードは拠点間接続(LAN間接続)やリモートVPN接続などで利用される。

 なおIPsecには、VPNサーバとして必要な、ユーザー認証機能(RADIUSサーバなどを使って、VPNを利用するユーザーを認証するメカニズム)はないし、クライアントに割り当てるIPアドレスをクライアント側に伝える機能(ネットワークの設定機能)もない。これらの機能はIKE(Internet Key Exchange)という別のプロトコルを併用して運用することになっている。

 IPsecはプロトコルとしての自由度は大きいが、その分、あらかじめ同じプロトコル・オプションをサポートしているシステム同士でないと通信できない可能性がある。またWindows OSでは標準ではないため(正確にいうと、IPsecのみの利用は非常に面倒だが不可能ではない。Windows OSでは通常は後述のL2TPとともに利用する)、標準的なクライアント・ソフトウェアというものもない。IPsecを利用する場合は、通常は、IPsecのUTMアプライアンス(IPsecのサーバ)に付属の専用クライアントをインストールして利用することが多い。

L2TP/IPsecプロトコル

 L2TPは、PPTPの弱点(脆弱であるとか、プロトコルの自由度が少ないなど)を解消するために作られた新しいプロトコルである。CiscoのL2F(Layer 2 Forwarding)というリモートVPN用のプロトコルとPPTPを統合して作られている。PPTPはIP上でしか利用できないが、L2FはIP以外にも、フレーム・リレーやATMなど、さまざまなプロトコル上で動作する。ただし暗号化機能は持っていないので、暗号化したい場合はIPsecとともに利用する。

 L2TPのパケットの構造を次に示すが、これは暗号化機能を利用している場合の例である。暗号化はIPsecで行われるので、L2TPのデータ(「ESPペイロード」となっている部分)をさらにIPsecのESP(Encapsulating Security Payload。IPsecの暗号化ペイロード用プロトコル)で暗号化して送信している。


L2TPプロトコルのフォーマット
L2TPはPPTPとL2Fを統合してできたプロトコル。L2TPでカプセル化を行い、さらにIPsecで暗号化を行う。NATを越えて利用する(ルーティングする)場合はNat Traversalに対応している必要があるが、最近ではほとんどの場合、サポートされている。

 L2TP/IPsecは現在ではWindows OSでも標準サポートされているため、WindowsユーザーならばPPTPと同様、特にクライアント・ソフトウェアをインストールすることなく利用できる。

IP in IPプロトコル

 これは一部のルータでサポートされているトンネル化プロトコルであるが、次の図から分かるように、元のIPパケットに別のIPヘッダを付加しただけの非常にシンプルなプロトコルである。セキュリティとか認証、IPアドレスの自動設定など、リモート・アクセスVPN向けの機能は何も持っていない。通常は、セキュリティが確保されている(セキュリティについて考えなくてもよい)社内ネットワークなどにおけるトンネル化のためのプロトコルである。


IP in IPプロトコルのフォーマット
オリジナルのIPヘッダの前に、トンネル化用の新しいヘッダ(ほぼ元のIPヘッダのコピー)を付けて送信する。セキュリティや認証や暗号化といった機能は特に持たない。インターネットでは使うことはないだろう。

セッション層/アプリケーション層の仮想化

 以上のVPNプロトコルでは、IPやTCP/UDPのパケットをトンネル化していたが、より上位のプロトコル層レベルで仮想化を行うVPN技術もある。汎用的なものとしては、SSL(Secure Sockets Layer。SSL-VPNともいう)やSocks、HTTP over SSL(HTTPS)などが該当する。Webブラウザでセキュアな通信をしていると鍵マークが表示されるが、それがHTTP on SSL(HTTPS)である。このSSLの暗号化通信機能をさまざまなアプリケーションからも使えるようにしたのがこれらのVPNになる。

 セッション層アプリケーション層のVPNの仕組みを図にすると、次のようになる。インターネットから来たアクセスが暗号化されたトンネルになっており(図中の左側にあるPCと、中央のUTM/VPNサーバの間が暗号化されたトンネル)、UTMまで届いたパケットは社内の適切なサーバへフォワードされる。仕組みとしては、リバースProxyのサーバと似ているといえる。


セッション層/アプリケーション層のVPNの仕組み
セッション層/アプリケーション層でVPNを行う場合は、リバースProxyのように振舞う。インターネット側からのアクセスは、あらかじめ定義されている適切なあて先へフォワードする。HTTPSのポート(TCPの443番)だとファイアウォールとの相性がいい(制限なく通過できる可能性が高い)ので、このポートを使うVPNサービスも少なくない。

 HTTP over SSL(HTTPS)で使われるポート番号はTCPの443番であるが、これをそのまま使ってそれ以外のVPNが実装されていることもある(例:SSTP)。このポートはWebブラウザで使われる標準的なポートなのでファイアウォールでもブロックされず、簡単に通過できるようになっていることが多い。だから社内から社外へのアクセスが非常に制限されているような環境であっても、HTTP(TCPの80番)やHTTPSはそのまま外部へ通過できるだろう。このポート番号を使えば、どこからでも接続できる可能性が非常に高くなり、利便性が増す。

SSLプロトコル

 SSLはもともとはWebブラウザとWebサーバの間で暗号化通信を行うために作られたプロトコルである。だがWebサーバでなくてもSSLを利用することはできるので、それを使って実装したのがSSL-VPNだ。

 トランスポート層やネットワーク層のVPNなどとは違い、パケットのヘッダやデータを書き換えるわけではない。通信路(トンネル)もTCPレベルですでに確立しているので、その中を流れるデータを暗号化している。

 例えばSMTP over SSLでは、通常は平文で送信されるメールの内容が、SSLによって暗号化されて送信されるようになる。

SSTPプロトコル

 「SSTP(Secure Socket Tunneling Protocol)」はマイクロソフトが開発し、Windows Vista/Windows Server 2008以降で利用できるようになった、新しいリモート・アクセスVPNプロトコルである。HTTPSと同じポート(TCPの433番)を使うことにより、ファイアウォールなどでブロックされる可能性が少なくなっている。拠点間接続はサポートされず、クライアントPCがVPNサーバ(SSTPサーバ)に接続するためにのみ利用される。PPPやL2TPのトラフィックをSSL上で送っている。


Windows 7のVPN接続のプロパティ例
Windows7では、クライアントがVPNサーバを呼び出すときのプロトコルとして、PPTP、L2TP/IPsec、SSTP、IKEv2がサポートされている。IKEv2はIPSecと同じだが、キー情報交換などの機能をIKEv1から整理・強化し、安全性/相互運用性を向上させたもの。運用途中でIPアドレスが変わっても接続を維持できるなど、モバイル用途向けの機能強化(MOBIKE)も行われている。IKEv2はWindows 7およびWindows Server 2008 R2以降でのみ利用可能。SSTPはWindows Vista SP1およびWindows Server 2008以降でのみ利用可能。

DirectAccess/リモートデスクトップ・ゲートウェイ

 これらはWindows Server 2008 R2やWindows 7などでのみサポートされている、VPNやリモートデスクトップ・ゲートウェイ機能である。詳細は今後解説するが、Windows Server 2008 R2をネットワークのエッジ(インターネットとイントラネットの境界)に配置しておくことにより、社外から簡単にリモート・デスクトップでアクセスしたり、直接社内LANへアクセスできるようになる。

データリンク層の仮想化

 イーサネットなどのデータリンク層で仮想化するVPNサービスも考えられるが、実際にそのようなソフトウェアも存在する。例えばソフトイーサ社が販売するPacketiX VPNがそうだ。このソフトウェアでは、イーサネットのフレーム(パケット)をキャプチャしてカプセル化し、それをリモートのサイトに送信して、そこで再送信するというふうに動作する。イーサネットのフレームを直接送信しているため、どのようなプロトコルでも送信できるし、トンネルを作るためには、SSL/HTTP over SSLを利用しているので、VPN接続の管理方法はSSL/HTTP over SSLの場合と同じである。

Copyright© Digital Advantage Corp. All Rights Reserved.

ページトップに戻る