7.6 VPNとそれを実現するセキュリティ対応ソフトウェア
 ここでは、VPN(仮想私有網)とそれらを実現するために使用するセキュリティ対応ソフトウェア(VPNプロトコル)について説明します。
 


 

コース (A  B  C  D  E)



7.6.1 VPN(Virtual Private Network)
(1) VPNとは

リモートアクセスでは、外部から企業内のオフィス情報システムに対してインターネットや公衆回線網を通じて、重要なデータの送受信を行うため盗聴や改ざん等のセキュリティ上の問題を抱えることになります。

 そこで、データを送出する前にデータを暗号化して送り、受信側ではそのデータの復号化を行って、目的の相手に届けるようにすれば、セキュリティを高めることが可能になります。暗号化、ヘッダー交換、認証などの技術を用いて、ある特定のユーザーだけしかアクセスできないようにしておけば、インターネットや公衆回線網を使っても、専用線接続と同じようなセキュリティを保つことができます。

 この時に使用するグローバルなネットワークアドレス間に特定のユーザーしか認識できない仮想の通信路を設けて通信する方式を「トンネリング」と呼んでいます。
 トンネリングでは、オフィス内ネットワークで使われるプライベートアドレスを持ったIPパケットをインターネット上でデータとして扱い、これをグローバルなIPパケット(宛先IPアドレスはリモートアクセスサーバー)に包み込んで(カプセル化という)送受信することになります。トンネリングによって、実際に通信したいデータパケットをカプセル化及び暗号化し、その内容を第三者が見ても判別することをできなくすることにより、セキュリティを高めることができます。

 
このように、インターネットや公衆回線網を利用する際に、暗号化、ヘッダー交換、認証、トンネリング、カプセル化技術を適用してセキュリティを確保したネットワークをVPNと呼びます。
 

(2) リモートアクセスにおけるVPN導入のメリット

VPNを導入するメリットは、通信コスト削減と通信セキュリティ確保です。  

 VPNは、もともとリモートアクセスにおけるコスト削減を実現する技術として考案されたものです。最近では、出先や自宅などから企業内のオフィス情報システムにアクセスする際、PHSや公衆回線網からインターネットサービスプロバイダーのアクセスポイントに接続したり、出先や自宅から直接インターネットに接続して、インターネット経由で安全に企業内のオフィス情報システムへアクセスするために利用されています。

 
このとき、インターネット内でのデータ通信のためにVPNプロトコル(暗号化、ヘッダー交換、認証、トンネリング、カプセル化技術)を使用することにより、セキュリティも確保することができます。 
 

(3) VPNの構築形態

VPNの構築形態
 VPNの構築形態は、大きく分けて次の3つになります。

@ ネットワーク-端末型

 リモートアクセスでもっとも利用される形態で、各端末と企業の入り口に設置するゲートウェイ機器との間でVPNを構築する方法です。トンネリング通信が適応される範囲は、リモートアクセスユーザーと内部ネットワークのゲートウェイ機器の間になります。ユーザー独自に構築することが可能ですが、各エンドユーザーの端末には独自のソフトウェアをインストールする必要があります。この形態では、リモートユーザーの認証をいかに厳格に行うかが課題になります。このためワンタイムパスワードなどの認証システムを併用することが望ましいといえます 。

A ネットワーク-アクセスポイント型
 ネットワーク-端末型の形態の延長ですが、VPNの仕組みを通信事業者が提供する形態です。リモートアクセスユーザーが接続するアクセスポイントの機器と企業の入り口に設置された機器との間でトンネリング通信が行われます。この場合、個々のリモートアクセスユーザーがVPNの仕組みを持っていなくてもVPNが利用できるメリットがあります。セキュリティ面では、通信事業者のアクセスポイントにおけるユーザー認証が重要なポイントになります。

B ネットワーク-ネットワーク型
 本来VPNはリモートアクセスの通信コスト削減というテーマから生まれた技術ですが、これを企業間通信に応用したのがこの形態です。この形態では、ルーターやファイアウォールにVPNを実装します。この方法におけるセキュリティ面では、VPN機器間の認証がポイントになります。
 

コース (A  B  C  D  E)



7.6.2 SSH (Secure Shell)
(1) SSHとは

SSH (Secure Shell)は、通信路を暗号化することで安全性を高めたリモート通信用のシェル(ユーザーの操作を受け付けて、与えられた指示をOSの中核部分に伝えるソフトウェア)をさします。
 UNIX系OSでは、telnetやrloginなど、シェルの機能をリモート環境下で扱うためのプログラムやコマンドツールが用意されていますが、ログイン時のパスワード認証以外にセキュリティ機能は持っていません。またパスワードや通信内容はクリアテキストの形でIPパケットに格納して送られるため、パケット盗聴によって通信内容を簡単に知られてしまいます。SSHは、これを防ぐために暗号化した通信経路を提供してセキュリティの強化を図っています。
 

(2) SSHの機能

SSHには以下の機能があります。

@ 通信の暗号化

通信の暗号化には、公開鍵暗号方式を採用しています。SSHの暗号化機能の特徴は、ローカルホスト上のアプリケーションポートを、暗号化された通信路として使って転送できる点にあります。この機能をポート転送と呼びます。
 
通常上図のようなファイアウォールが構築されている環境で、セキュリティ強化のためにSSHしか通さないようなフィルタリング設定を行っていると当然のことながら、他のアプリケーションでは通信ができなくなってしまいます。
 
しかし、SSHではポート転送という機能があり、暗号化されたSSH通信上で、ローカルホストから内部ネットワークに向けてアプリケーションポートを転送できるため、内部ネットワークとリモートアプリケーションで通信することが可能になります。
 
この他にも、X Window システムの転送(通称:X転送)なども行えます。

 

A なりすましの防御
 なりすましの防止には、前述した電子署名で利用されるメッセージダイジェストが利用されています。
 

B 認証機能
 認証機能には、チャレンジレスポンス方式が採用されています。
 
(3) OpenSSH

 SSHは、SSHコミュニケーションズ・セキュリティという会社がライセンスを保有していて、商用利用するためにはこのライセンスを購入しなければなりません。
 
OpenSSHは、製品版になる前のフリーライセンスのSSHを、フリーUNIXを開発しているメンバーが主体となってフリーライセンスで使用できるようにしたSSHです。
 

コース (A  B  C  D  E)



7.6.3 SSL(Secure Sockets Layer)
(1) SSLとは

 SSL(Secure Sockets Layer)は、WebブラウザとWebサーバー間で安全な通信を行うためのセキュリティプロトコルです。 EDIやECなどを安全に利用できるようにするために、認証局の署名の入った証明書を使ったサーバーの認証とWebブラウザとWebサーバー間での通信内容の暗号化という2つの機能によってセキュリティ機能を高めています。
 
(2) SSLの動作原理

SSLの機能
 SSLは以下の3つの機能を有しています。
@ クライアント・サーバー認証機能

 SSLでは、クライアントとサーバーの相互認証(クライアント側はオプション)を有しています。これらの認証では認証局に問い合わせを行いサーバーが発行する証明書が有効かどうかをチェックします。
A 暗号化機能
 SSLの暗号化の仕組みは、TCPパケットのデータ部分だけを暗号化する仕組みとなっています。このため、使用するHTTPやSMTPなどで送受信するアプリケーション・データがTCPパケットで送られるとき、アプリケーション・データ部分だけを暗号化し、TCPヘッダー部やIPヘッダー部は暗号化しない仕組みとなっています。
B メッセージ検証機能

 メッセージ検証機能は、WWWサーバーに送信したメッセージが、通信路上で、悪意のある人によって改ざんされていないか、あるいはトラブルによって破壊されていないかどうかを検証する機能です。
 
(3) ブラウザの対応

 Internet Explorer、Firefox、Safari、Netscape CommunicatorといったWebブラウザがすでにSSLへの対応を行っているため、ユーザーは、特別にSSL対応アプリケーションを導入することなくSSLを利用することができます。また、ブラウザだけでなく、Apache、Netscape Web Server、IISなど主要なWebサーバーで利用することができ、Eコマースやオンラインバンキングなどのサイトで一般的に用いられています。
 
(4) SSLの高速化
 SSLはなりすましを防止する為の認証機能、盗聴防止の為の暗号化機能、改ざん防止の為のメッセージ検証機能を持ちます。この為膨大な処理計算が必要となり、これを導入するサーバーはCPUのボトルネックを抱えることになります。これを改善するためにSSLアクセラレーターというサーバーに代わってSSLの計算を専門に行う装置を導入するケースもあります。
 
(5) SSLプロトコルを採用したSSL-VPNの構築例

インターネット上での暗号化などで標準的に用いられているSSLSecure Sockets Layer)を利用してインターネットをトンネリングして、以下のVPN接続を行います。
@ ネットワーク−端末間接続

本社オフィス側にはSSL-VPN装置が必要です。
 
クライアント側から利用する個々のアプリケーションは、SSLに対応した仕組みを実装している必要があります。主要なWebブラウザやメールソフトはSSLに対応しているため、イントラネットのWeb閲覧やメールの送受信などの用途として十分実用になります。
 
クライアント側には特別なプログラムを用意する必要はありません。

一般的に、外出先から企業内のオフィス情報システムに接続するといったリモートアクセス用途に適したVPNです。
 

コース (A  B  C  D  E)



7.6.4 TLS(Transport Layer Security)

 SSLの最新バージョンはSSL3.0です。次期のSSLのバージョンを4.0とせずに、TLS(Transport Layer Security)1.0として、SSL3.0に若干の改良を加え名称変更を行いました。これは、インターネットで利用される様々な技術の標準について考える組織 The Internet Engineering Task Force (IETF)で標準化されています。
 
機能はSSLとほぼ同じで、WWWやFTPなどのデータを暗号化し、プライバシーに関わる情報やクレジットカード番号、企業秘密などを安全に送受信することができます。公開鍵暗号や秘密鍵暗号、デジタル証明書、ハッシュ関数などのセキュリティ技術を組み合わせ、データの盗聴や改ざん、なりすましを防ぐことができます。
 

コース (A  B  C  D  E)



7.6.5 SOCKS
 SOCKSは、企業などの内部ネットワークと外部ネットワークの境界にコンピュータを配置し、直接インターネットに接続できない内部ネットワークのコンピュータに代わって、「代理」として外部ネットワークとの接続を行うシステムを実現する方式の一つです。インターネットモデルでいうトランスポート層(第4層)レベルでの接続やデータの送受信を代理するので、WWWの閲覧に利用するHTTPに限らず、TCP/IPを利用するほとんどのプロトコルに適用することができます。使用できるプロトコルを制限するフィルタリング機能や、外部からの不正使用を防ぐ認証機能を持っており、企業内ネットワークへの不正侵入を防ぐファイアウォールとしても利用されます。
 
(1) SOCKSの動作原理

SOCKSは、ソケットプログラムを利用しアプリケーションプロトコルに依存せずに、トランスポート層上でアクセス制御を行うためのセキュリティプロトコルです。SOCKSサーバーにコネクションリクエストを渡すと、SOCKSサーバーはクライアントを認証してからコネクションを確立します。
 SOCKSは「Sockd」というプログラムを介して、プロキシサーバーとクライアントの通信を行う仕組みになっています。この図で説明するとSockdにFTPやtelnetをカプセル化して通信を行おうとするクライアントAは内部ネットワークの資源を利用できますが、直接telnetを使って通信を試みるクライアントBはプロキシサーバーによって通信を拒否されます。
TCPパケットがSockdにカプセル化されるため、外部から内部ネットワークの構成を隠蔽することができます。
 
SOCKS経由でアプリケーションを動作させる場合、SOCKSサーバーへの接続設定やアプリケーションをSOCKS化させるクライアント環境での設定変更が必要になります。
 

(2) プロキシ機能

 SOCKSでは、プロキシ機能を提供しています。上図のようなネットワーク構成でB社のWebサーバーにアクセスするような場合、内部の端末は、いったんSOCKSサーバーを経由し外部ネットワークと接続します。外部のDNS(Domain Name System)等の検索もSOCKSサーバーが代行して行ってくれますので、内部ネットワークの端末はプライベートアドレスを利用して外部ネットワークと接続することが可能になります。
 
(3) 多段接続ネットワーク構成

 SOCKSでは、クライアントとのSOCKSサーバーのセッションだけでなく、SOCKSサーバー間のセッションもサポートしています。したがって上図のように複数のSOCKSサーバーをつないでもプロキシ機能を使った通信が可能になります。
 
(4) アプリケーションゲートウェイ機能

他のVPNプロトコルとの連携
 SOCKSは、トランスポート層以上で動作するため、インターネット層やネットワークインターフェース層で動作する他のVPNプロトコルと併用することが可能になります。組み合わせて利用することにより、よりセキュリティレベルを高めることが可能になります。例えば、SOCKSサーバーで、アプリケーションやユーザーに別に切り分けを行って、より高いセキュリティ機能が要求される通信に対しては、IPsecなどのVPNに対応したルーターを経由して通信させ、その他の通信はSOCKSの機能のみで通信を行う、などの方法が考えられます。
 

コース (A  B  C  D  E)



7.6.6 IPsec(IP security Protocol)
(1) IPsecとは

IPsec(IP security Protocol)は,認証や暗号のプロトコル,鍵交換のプロトコル,ヘッダー構造など,複数のプロトコルを総称するもので、インターネットの標準団体であるIETF(Internet Engineering Task)において,IP(Internet Protocol)レベルの暗号化プロトコルとして標準化されています。現在では、ファイアウォールをはじめとする多くのVPN製品に搭載されており、ルーターなどにおいても搭載されるケースが増えてきています。また、マイクロソフト社も最近のWindowsでは、IPsecに標準対応しています。

 IPsecによってIPパケットの完全性や機密性が保護され、HTTPやFTPといったアプリケーションプロトコルを使って転送されるデータが保護されます。
 
また既存のアプリケーションプログラムを変更しなくてもよいのも特徴です。
 

(2) IPsecの動作原理

IPsec の特徴は、ネットワーク層で動作し、なおかつ認証、暗号化の仕組みを独立させた点にあります。 
 IPsecでは、認証を受け持つ「認証ヘッダー(AH:Authentication Header)」と暗号化を受け持つ「暗号ペイロード(ESP:Encapsulating Security Payload)」の2つのプロトコルを規定しています。
 
「認証ヘッダー」は、IPパケットにメッセージ認証の機能を提供します。
 
「暗号ペイロード」は、VPNの暗号化やトンネリングの機能を提供します。
 
これらの仕組みは独立して動作するので、IPパケットのメッセージ認証の機能を利用したい場合は認証ヘッダーを利用し、データの暗号化やトンネリングの機能を利用したい場合は暗号ペイロードを利用することが可能で、両方を組み合わせて利用することも可能です。
 

(3) SA(Security Association)とSPI(Security Parameters Index)

IPsec(VPN)通信を行うために,通信相手との間でSA(Security Association)と呼ばれる論理的なコネクションを確立します。
 SAはVPN通信を行うトラフィック毎に確立され,トラフィック情報(selector)、暗号アルゴリズム、認証アルゴリズム等のトラフィックに適用するセキュリティ情報を含んでいます。
あるIPsecのパケットがどのSAに対応しているかは、HA(IPsecのヘッダー中)に含まれるSPI(Security Parameters Index)というポインタによって指定されます。
 
SAを確立した後,ルーターはSAの情報に基づいてVPN通信処理を行います。
 

(4) IPsecの通信モード

IPsecの通信モードにはIPパケットのデータ部分の認証及び暗号化を行い、もとのIPヘッダーは対象としない方式(トランスポートモード)とIPヘッダーも含めて暗号化し、新しいIPアドレスを付加して送信する方式(トンネルモード)の2つがあります。
 
トランスポートモードはIPsecを搭載したホスト間で通信する場合使用されます。
 
一方、リモートアクセスの場合はゲートウェイサーバーを経由して内部のサーバーに接続する必要があるためトンネルモードを使用します。
 

@ トランスポートモード

 トランスポートモードは、ホスト間でのIPsec通信を想定しています。したがってESPによって暗号化される範囲はTCPヘッダー以降のデータとなります。
 
A トンネルモード

トンネルモードは、ネットワークのゲートウェイ間でIPsecの通信を行うことを想定しています。内部ホスト向けのIPヘッダーまでがESPによって暗号化される範囲となり、ゲートウェイでは、相手先のゲートウェイのIPアドレスを新たに付加して送信します。

 ESP(Encapsulating Security Payload):暗号ペイロード
 
AH (Authentication Header):認証ヘッダー

 

(5) IPsecプロトコルを採用したIPsec -VPNの構築例

IPSec(Security Architecture for Internet Protocol)を利用してインターネットをトンネリングして、以下のVPN接続を行います。

@ ネットワーク−端末間接続
A ネットワーク−ネットワーク接続

 本社オフィス側および営業所オフィス側にはVPNゲートウェイサーバーが必要です。また@の端末側にもIpsec端末ソフトが必要です。

 この方式は、オフィス間通信や外出先からのオフィス向け通信などに広く利用されています。VPN接続による通信路の確立後は、接続先ネットワーク内の1端末として操作することができます。また、IPSec-VPNでは利用できるアプリケーションの制限が少ないというメリットがあります。
 

コース (A  B  C  D  E)



7.6.7 PPTP(Point to Point Tunneling Protocol)
(1) PPTPの動作原理

PPTP(Point to Point Tunneling Protocol)は、 PPPのパケットをIPパケットに包み込んで (カプセル化)、IPネットワーク上にPPPパケットをトンネルさせて運び、 リモートアクセスサーバーとの間でPPP接続を確立するというものです。
 PPTPは、Windowsによるクライアント・サーバー環境で多く利用されています。
 

(2) PPTPのフレーム作成手順

PPTPの基本的な考え方は、PPPのパケットをIPパケットに包み込んで (カプセル化)、IPネットワーク上にPPPパケットをトンネルさせて運び、 リモートアクセスサーバーとの間でPPP接続を確立するというものです。
 トンネリングには、GRE(Generic Routing Encapsulation)というプロトコルを使用し、カプセル化したパケットデータはVPNインターフェースでRC4と呼ばれる暗号化アルゴリズムで暗号化されます。

 

コース (A  B  C  D  E)



7.6.8 L2F(Layer 2 Fowarding)
(1) L2Fの動作原理

L2F(Layer 2 Fowarding)は米シスコ社が、リモートアクセス用に考案したVPN用のプロトコルで、PPTPと同じくPPPヘッダーまでがカプセル化の対象となり、データリンク層で動作します。
 
L2Fは、UDPの1701番を利用して通信し、制御コネクションの確立と、ユーザーセッション(接続要求)の確立手順の2段階の手順を使ってトンネルを確立します。
 

(2) L2Fの課題

 L2Fも、リモートアクセス用のVPNプロトコルとして考案されたため、LAN間接続などのPPP以外のプロトコルをつかった接続には利用できません。また複数のベンダーが対応していますが、基本的にはシスコ社独自の仕様であるため、対応機器が限られてきます。
 
またPPTPでは暗号化によってセキュリティ機能を提供(もともとのPPTPでは暗号化はサポートされていませんが、Microsoft WindowsのPPTPではMS-CHAPを用いて暗号化機能を提供)していますが、L2Fでは、トンネルセッションの提供のみで暗号化の機能は提供されません。
 
シスコ社は、IETFに標準化を働きかけ、最終的には、この後説明するL2FとPPTPを組み合わせたL2TPが標準化されています。
 

コース (A  B  C  D  E)



7.6.9 L2TP(Layer 2 Tunneling Protocol)
L2TPの動作概要

L2TP(Layer 2 Tunneling Protocol)は、PPTPとL2Fという2つのトンネリングプロトコル仕様をIETFが標準化を図った、データリンク層で動作するVPNプロトコルです。
 
リモートユーザーは端末からアクセスポイントにダイヤルアップPPP接続を行います。
 
着信を受けたL2TP対応機器は、PAP(Password Authentication Protocol)やCHAP(Challenge Handshake Authentication Protocol)などのPPPのユーザー認証機能を使って、正規のユーザーであることを確認した後、内部ネットワーク側のL2TP対応機器と通信してトンネルを生成します。
 
トンネルが確立された後は、ダイヤルインした社内の認証サーバーによって再度正式な認証を受け、PPPのネゴシエーションを行います。またPPTPでは、通信トンネルは1本に限定されますが、L2TPでは、複数のトンネルを張ることが可能です。
 

コース (A  B  C  D  E)