最近、“リモートアクセスVPNはSSL-VPNで決まり!”のような言葉をよく目にする。SSL-VPNがなぜリモートアクセスVPNの有効なソリューションなのか、本特集ではSSL-VPNの機能概要、利用形態、さらに、IPSecVPNとの相違点は何か、について記述する。前編では、SSL-VPNの機能概要および利用形態について説明し、後編では、SSL-VPNとIPSecVPNの相違点について紹介していく。
SSL-VPNはその名が示すとおりSSL(Secure Sockets Layer)技術を使用したVPNソリューションである。SSLはトランスポート層とアプリケーション層の間に位置する。トランスポート層の上位層に位置することで、SSLはアプリケーション単位に実装される。つまり、アプリケーション依存である。例えば、HTTPSはHTTPに対してSSLにより認証、暗号化、メッセージ認証を実装したセキュアプロトコルである。現在、SSLはTLS(Transport Layer Security)として、IETFがNetscape社から開発を引き継いでいる。
ここで、SSLの詳細なシーケンスを示す。
シーケンス(1)では、サーバに定義されているサーバ証明書がクライアントに送信される。例えば、サーバ証明書をVerisign社から取得している場合、Webサーバに登録されているサーバ証明書をクライアントに送付する。クライアントではサーバが送付したサーバ証明書によりサーバの身元を確認することが可能である。サーバ側で接続してきたクライアントの身元を確認したい場合は、Webサーバの設定でクライアント側の身元を確認するためにクライアント証明書の送付を要求するように構成することができる。クライアント証明書の要求を必須としているWebサーバでは、シーケンス(2)でクライアント証明書を要求する。
サーバからの送信が完了(シーケンス(3))すると、クライアントは、クライアント内に定義されている証明書ストアからVerisign社のROOT証明書を使用して、Webサーバから送付されたサーバ証明書を検証する。この方法がインターネット上の多くのサイトが運営するWebサーバを正当なサーバとして証明するために使用されているサーバ認証の仕組みである。
サーバがクライアントに対してクライアント証明書の送付を必須としている場合、もしクライアントがクライアント証明書をもっていないとSSLセッションは確立できない。クライアントはシーケンス(4)でクライアント証明書をWebサーバに送付する。SSLでは、上記のシーケンス図のClientHelloメッセージからClientKeyExchabgeメッセージまでに送受信されたメッセージに対してハッシュした値をクライアントの秘密鍵で署名し、サーバに送信する(シーケンス(5))。Webサーバでも、同じようにClientHelloメッセージからClientKeyExchabgeメッセージに対してハッシュした値とクライアントから送付された署名データを送付されたクライアント証明書から取得した公開鍵で復号して比較する。比較した結果が同一であれば2者間での相互認証が完了し、お互いに同一のセッション鍵を保有していることが検証できる。
SSL-VPNにおいて、クライアント認証まで含めた環境を構築するためには、クライアントに発行する証明書を管理するPKI環境を構築することが必要である。
SSL-VPNの基本機能は、SSL技術とリバースプロキシ技術を組み合わせたものである。図2に示すように、インターネット上のクライアントは、SSL-VPN装置に向けてSSL通信を開始する。
例えば、URLとしてhttps://sslgw.company.com/A/を指定すると、クライアントからSSL-VPN装置までSSLで通信する。SSL-VPN装置では、URLのマッピングが実行される。図では、https://sslgw.company.com/A/をイントラネット上のhttp://intraA.company.com/に変換するため、クライアントはイントラネット上のintraAにSSL-VPN装置を介して接続される。同じようにURLとしてhttps://sslgw.company.com/B/を指定すると、イントラネット上のhttp://intraB.company.com/に接続することができる。
こうしてみると、SSL-VPNの基本機能は特に新しい技術、ソリューションとはいえない。基本機能のみで利用可能なアプリケーションはWebベースのみとなる。企業内で構築されたクライアント/サーバアプリケーションやレガシーシステムを利用したい場合には、それらをWeb対応にする必要がある。
現在マーケットに紹介されているSSL-VPN製品では、Webベースのアプリケーション以外に対応するために以下のようなアプローチをとっている。
Webブラウザ以外にもSSLに対応したアプリケーションがある。例えば、マイクロソフト社のOutlook Expressがある。
これらの設定を行うことでSSLを使用して組織内のアプリケーションにアクセスすることができる。SSL-VPN装置がファイアウォールの背後に設置されていた場合、ファイアウォール上で定義すべきルールがWebアプリケーションの使用より増加する。Outlook ExpressでSSLを使用してメールの送信(SMTP)および受信(IMAP4)を行う場合は、デフォルトで、SMTP(25)とIMAP4 over SSL(993)をファイアウォール上で許可する必要がある。そのほかのSSL対応アプリケーションを利用する場合、どのポート番号を使用して通信するのかを明確にし、ファイアウォールのルールで許可する必要がある。
SSL-VPNは、HTTP以外のプロトコルを使用しているアプリケーションを利用する場合には、WebブラウザとJavaアプレットにより実現される。
SSL-VPN Javaアプレットは、localhostに向けられたアプリケーション通信をSSLトンネルにリダイレクトする。SSL-VPN Javaアプレットを使用した場合、SSL-VPN装置上でプロキシされずに、直接目的のサーバに接続する。
図4 WebブラウザとJavaアプレットによるSSL-VPNの動作イメージ
利用者は、SSL-VPN装置にアクセスし、Javaアプレットをダウンロードする。Javaアプレットは、クライアントがイントラネット内のサーバへ行う特定のアプリケーション通信を監視し、そのパケットをSSLトンネルにリダイレクトする。クライアントからの通信はSSL(ポート443)にカプセル化されるため、ファイアウォールなどの設定は特に変更する必要はない。ただし、Javaアプレットを使用する場合、利用者がアプリケーションの接続先サーバをローカルホストに設定変更する必要がある。アプリケーションの接続先サーバがローカルホストに定義されたことで、すべての通信をJavaアプレットが拾い、それをSSLトンネルにリダイレクトする。アプリケーションデータは、SSLトンネルを通過して目的のサーバに到達する。
Javaアプレットを使用する場合、同じサーバにアクセスするにもかかわらず、利用者は自分が現在組織内と組織外のどちらに位置するかを意識する必要がある。つまり、アプリケーションの接続先サーバのアドレスを以下のように設定する必要がある。
さらに、Javaアプレットで接続可能なアプリケーションの制限として、1つのTCPポートのみで通信を行い、さらに使用ポートが固定されている必要がある。また、Javaアプレットを使用して接続できないアプリケーションには以下のものがある。
Javaアプレットで対応できないアプリケーションを利用したい場合は、専用のクライアントソフトウェアをインストールする必要がある。
クライアントソフトウェアは、SOCKSクライアントである。SOCKSクライアントでは、クライアントがアクセスしたいアプリケーションサーバのIPアドレス範囲やポート番号などを定義する。SOCKSクライアントは汎用的に使用されるため、組織内にアクセスするアプリケーションを起動する前に起動させておく必要がある。クライアントが組織内のアプリケーションサーバへの通信を開始すると、パケットの送信先を監視しているSOCKSクライアントが定義されているターゲット宛てのパケットを強制的にSSLトンネルにリダイレクトする。この方法によりSOCKSクライアントに定義されている情報に合致するパケットはすべて組織内に転送される。実際には、SSLトンネルへリダイレクトする時に、利用者に認証を実行し、認証が完了した場合のみ接続を許可する。
SSL-VPNを使用してアクセスするアプリケーションがWebベースである場合、クライアント側にはSSLに対応したWebブラウザ以外に特にソフトウェアをインストールする必要はない。現状SSL対応のブラウザは、PC、PDA、携帯電話などでも利用可能であるため、利用者としてはSSL-VPN装置へのアクセスを自身の環境に応じて自由に選択可能である。また、SSLを利用するための設定作業も特に必要ないためユーザーフレンドリな環境といえる。
以下のような場合では、利用者側でSSL-VPNの存在を意識する必要がある。
SSL-VPN装置を組織のファイアウォールの背後に配置した場合、インターネット上のクライアント端末がSSL-VPN装置に接続するために必要なルールとしては、ポート443を許可すればよい。ただし、Web以外のSSL対応アプリケーションを利用する場合は、そのアプリケーションが利用するポートを許可する必要がある。
SSL-VPN製品はハードウェアアプライアンス製品が多い。製品にはロードバランシング機能やSSLアクセラレータカードを搭載しているものもあり、暗号化処理の負荷軽減対策もされている。SSL-VPNでは、セッション単位に暗号化経路が生成される。導入には同時にアクセスする可能性があるユーザ数を想定し、快適な利用環境を提供できるように設計する。
前編では、SSL-VPNの機能概要について記述してきた。SSL-VPN装置を選択する場合、どのようなアプリケーションを想定しているかを明確にすることが重要である。利用者が操作を意識する必要がある機能(Javaアプレットや専用クライアント)を併用する場合は、使用するアプリケーションによってSSL-VPNに関する設定や操作方法を利用者が判断する必要がある。また、利用者側でのインストール作業や設定作業が発生するため、利用者からの問い合わせに対するサポート体制の確立やおよびそれにかかるコストを見積もっておく必要がある。
SSL-VPNは、クライアントからSSL-VPN装置までの通信経路に対するセキュリティソリューションであるため、クライアントとアプリケーションサーバ間の通信に対するセキュリティが要求される場合は別途検討する必要がある。例えば、秘匿性の高いWebサーバへのアクセスを行う場合は、SSL-VPN装置とアプリケーションサーバ間もSSL通信にする方法などが考えられるだろう。
後編では、よく比較対象とされるIPSecVPNとの相違点について記述する。
Copyright © ITmedia, Inc. All Rights Reserved.