トランスポート層やネットワーク層の仮想化とは、IPやTCP、UDPといった、低位のプロトコル・レベルでVPNを実現する技術である。アプリケーションではTCPやUDPを直接使うことはなく、一般的にはSocketなどのプログラミング・インターフェイスを介して利用している。そのため、トランスポート層やネットワーク層レベルで仮想化が行われても、上位のプログラミング・インターフェイスにはほとんど影響はない。そのため、たいてのアプリケーションはVPN上でも問題なく動作する。
「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は、Windows OS同士なら相互運用性は高いが、暗号化アルゴリズムがRC4(Rivest's Cipher 4)しかないとか、認証メカニズムが機能不足(サーバ認証機能がないMS-CHAPv2しか使えない)、データの改ざんなどに対する耐性がない、PPTPセッション確立時における初期セットアップ・シーケンスの一部が暗号化されないなど、いまとなってはやや脆弱/機能不足である。現在では後述のL2TP/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にはトランスポート・モードとトンネル・モードという2つの動作モードがある。トランスポート・モードはルータなどを介さないポイント・ツー・ポイントの通信に使われ、トンネル・モードは拠点間接続(LAN間接続)やリモートVPN接続などで利用される。
なおIPsecには、VPNサーバとして必要な、ユーザー認証機能(RADIUSサーバなどを使って、VPNを利用するユーザーを認証するメカニズム)はないし、クライアントに割り当てるIPアドレスをクライアント側に伝える機能(ネットワークの設定機能)もない。これらの機能はIKE(Internet Key Exchange)という別のプロトコルを併用して運用することになっている。
IPsecはプロトコルとしての自由度は大きいが、その分、あらかじめ同じプロトコル・オプションをサポートしているシステム同士でないと通信できない可能性がある。またWindows OSでは標準ではないため(正確にいうと、IPsecのみの利用は非常に面倒だが不可能ではない。Windows OSでは通常は後述のL2TPとともに利用する)、標準的なクライアント・ソフトウェアというものもない。IPsecを利用する場合は、通常は、IPsecのUTMアプライアンス(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/IPsecは現在ではWindows OSでも標準サポートされているため、WindowsユーザーならばPPTPと同様、特にクライアント・ソフトウェアをインストールすることなく利用できる。
これは一部のルータでサポートされているトンネル化プロトコルであるが、次の図から分かるように、元のIPパケットに別のIPヘッダを付加しただけの非常にシンプルなプロトコルである。セキュリティとか認証、IPアドレスの自動設定など、リモート・アクセスVPN向けの機能は何も持っていない。通常は、セキュリティが確保されている(セキュリティについて考えなくてもよい)社内ネットワークなどにおけるトンネル化のためのプロトコルである。
以上の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のサーバと似ているといえる。
HTTP over SSL(HTTPS)で使われるポート番号はTCPの443番であるが、これをそのまま使ってそれ以外のVPNが実装されていることもある(例:SSTP)。このポートはWebブラウザで使われる標準的なポートなのでファイアウォールでもブロックされず、簡単に通過できるようになっていることが多い。だから社内から社外へのアクセスが非常に制限されているような環境であっても、HTTP(TCPの80番)やHTTPSはそのまま外部へ通過できるだろう。このポート番号を使えば、どこからでも接続できる可能性が非常に高くなり、利便性が増す。
SSLはもともとはWebブラウザとWebサーバの間で暗号化通信を行うために作られたプロトコルである。だがWebサーバでなくてもSSLを利用することはできるので、それを使って実装したのがSSL-VPNだ。
トランスポート層やネットワーク層のVPNなどとは違い、パケットのヘッダやデータを書き換えるわけではない。通信路(トンネル)もTCPレベルですでに確立しているので、その中を流れるデータを暗号化している。
例えばSMTP over SSLでは、通常は平文で送信されるメールの内容が、SSLによって暗号化されて送信されるようになる。
「SSTP(Secure Socket Tunneling Protocol)」はマイクロソフトが開発し、Windows Vista/Windows Server 2008以降で利用できるようになった、新しいリモート・アクセスVPNプロトコルである。HTTPSと同じポート(TCPの433番)を使うことにより、ファイアウォールなどでブロックされる可能性が少なくなっている。拠点間接続はサポートされず、クライアントPCがVPNサーバ(SSTPサーバ)に接続するためにのみ利用される。PPPやL2TPのトラフィックをSSL上で送っている。
これらは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.