空飛ぶ木造船

借り物ばかりの備忘録です。意味のあるものになると嬉しいです。

VPNについて

はじめに

4月に迫る情報処理安全確保支援士資格の勉強中のためにを読んでいたのですが、VPNについての内容が頭に上手く入ってこなかったので、記事の形で整理をすることにしました。の内容をもとに自分で調べた情報を加えて記事にしていますので、一部不正確な部分もあるかもしれません。間違った記述があればコメントで指摘してください。

VPNとは

VPN(Virtual Private Network: 仮想私設網)とは、以下の特徴をもつ通信をインターネットなど既存のネットワーク上で実現する仕組みのことです。

  • 通信を第三者に盗聴されない
  • 通信内容を第三者に改ざんされない
  • 通信相手のなりすましがない

VPNの種類

利用する回線による分別

  • インターネットVPN: インターネットを利用したVPN
  • IP-VPN(閉域VPN): 通信事業者が構築した閉域IP網を利用するVPN

接続形態による分別

  • リモートアクセスVPN: 外部から内部LANを利用するためのVPN
  • 拠点間接続VPN: 拠点間のLANを接続するためのVPN

代表的なプロトコルについて

IPsec-VPN

概要

IPsec(Security Architecture for Internet Protocol)とは、暗号化によってパケットの秘匿や改ざん検知を実現するプロトコルです。主にインターネットを介して拠点間を接続する、インターネットVPNを実現するためのプロトコルとして広く利用されています。

IPsecを使って通信する際に利用する論理的な通信路(コネクション)はSA(Security Association)と呼ばれます。このSAを確立する際、暗号化のための鍵を交換するためのプロトコルIKE(Internet Key Exchange protocol)です。

またIPsecには、認証と改ざん防止のみを行うAH(Authentication Header)と、データの暗号化を行うESP(Encapsulated Security Payload)の2つのプロトコルがあるほか、データ部分のみを暗号化するトランスポートモードと、ヘッダとデータの両方を暗号化するトンネルモードがあります。IPsecを用いたインターネットVPNによって拠点間を接続する場合には、トランスポートモードを利用します。

引用元: IPsecとは

引用元から直接コピーをしたため、下にある運用モードの節にあるの内容と上記の節の最後の部分が矛盾しています。

IPsecポリシ

IPsecでは、パケットをどう処理するかをIPsecポリシによって決めます。IPsecポリシには次の3つがあります。

  1. PROTECT: IPsecによってパケットを暗号化する
  2. BYPASS: 暗号化せず、そのまま中継する
  3. DISCARD: パケットを破棄する

そして、どの送信元からどこの宛先へのパケットに対してどのポリシを適用するかをSPD(Security Policy Database)に登録します。

IPsecで通信を行う機器は、最初にSPDを検索してパケットの処理方法を決定します。処理方法がPROTECTの場合はSAD(以下で説明)内を検索して、該当する方法によってIPパケットの暗号化やメッセージ認証符号(MAC)の生成を行います。

SA(Security Association)

IPsecで通信する場合、暗号化アルゴリズム・メッセージ認証アルゴリズム・暗号化鍵・メッセージ認証鍵・IPsec運用モードなどの情報(SAパラメタ)が機器間で一致していないと通信できません。これらについて具体的に何を使うのかを取り決めたものをSA(Security Association)といいます。

SAは単方向の概念です。したがって、例えばホストAとホストB間でIPsec通信を行う場合、ホストA→ホストBのSAとホストB→ホストAのSAの二つのSAが作られます。つまり、一つのコネクションに対して2つのSAができるのです。

作られたSAにはSPI(Security Parameter Index)と呼ばれる32bitの番号がつき、SAD(Security Association Database)に記録されます。そして、IPsec通信を行なっている間、SADを参照します。

運用モード

IPsecにはトンネルモードトランスポートモードの二つの運用モードがあります。

  • トンネルモード

トンネルモードは、IPパケットのヘッダとデータの両方を暗号化するモードで、拠点LAN間にVPNを構築する際に利用します。ネットワークにVPN装置を設置し、VPN装置でIPパケットの暗号化・復号を行います。

  • トランスポートモード

トランスポートモードはIPパケットのデータ部分のみを暗号化するモードで、ホスト間(末端のデバイス同士)にVPNを構築する際に利用します。ホストのOSがIPsecによる通信に対応している必要があります。

3つのプロコトル

AH(Authentication Header)

AHはパケットの改ざんを検出するためのプロトコルです。パケット全体が改ざんの検証対象(認証範囲)です。パケットの改ざんを検出するためのMAC(メッセージ認証符号)は、AHヘッダに格納されます。

AH

ESP(Encapsulated Security Payload)

ESPはパケットの暗号化パケットの改ざん検出を行うためのプロトコルです。ESPを用いる場合、AHを用いなくてもパケットの改ざん検出を行うことができます。ESP認証データには、パケットの改ざんを検出するためのMACを格納しています。

ESP

IKE(Internet Key Exchange)

IKEは暗号通信やメッセージ認証に用いる共通鍵を取り決めるための鍵交換プロトコルです。鍵交換と一緒にユーザ認証を行うこともあります。IKEにはバージョン1(IKEv1)とバージョン2(IKEv2)があります。

IKEでは、IKE-SAとIPsec-SAの2種類のSAを構築します。最初にIKE-SAでIPsec-SAの暗号鍵・認証鍵を暗号化して送るために利用する暗号鍵を取り決めます。次にIPsec-SAでIPsec通信時に利用する暗号鍵・認証鍵を取り決めます。なお、IKE-SAはIKEv2での名称で、IKEv1ではISAKMP-SAと呼びます。

IKEv1はフェーズ1フェーズ2に別れており、フェーズ1でISAKMP-SAの構築を行い、フェーズ2でIPsec-SAの構築を行います。さらに、フェーズ1ではメインモードとアグレッシブモードがあります。これらの違いは、運用の観点からIPアドレスを固定しておく必要があるか否かです。

  • メインモード

    • 合計6回の通信でSAを構築する
    • アグレッシブモードに比べてセキュリティレベルが高い
    • IPアドレスを利用して機器の識別を行うため、固定のIPアドレスが必要
  • アグレッシブモード

IKEv2はIKEv1が拡張、改良を繰り返し非常に複雑になってしまったので、仕切り直して一から作り直したものです。そのため、上記のような複雑なフェーズではなく、またIKEv1とv2の間には互換性もありません。

NAPT利用時の対策

AHやESPにはTCP/UDPヘッダがありません。NAPTはポート番号を変換するので、TCP/UDPヘッダがないとポート番号を扱うことができず動作しません。このような理由から、NAPTとIPsecを併用すると問題が発生します。この問題を解決する方法としてVPNパススルーとNATトラバーサルがあります。

VPNパススルー

VPNパススルーではポート番号の変換は使わずに、IPアドレスだけを変換して通信します。IPsecのパケットを特別扱いして、常にLAN内の特定のホストへ転送します。この結果、ポート番号の変換は不要になりますが、LAN内の複数のホストが同時にIPsec通信を行うことができません。VPNパススルーはIPsecパススルーともいいます。

NATトラバーサル

NATトラバーサルでは、IPsecパケットにUDPヘッダを付け加えて、ポート番号を変換できるようにします。これをUPDエンカプセレーションといいます。IKEでSAを構築する際には、経路途中でNAPT機器があるかどうかを調べて、NAPT機器を検出した場合は、UDPヘッダを付け加えて通信します。NATトラバーサルではLAN内の複数のホストが同時にIPsec通信を行うことができます。

L2TP/IPsec

L2TP/IPsecはリモートアクセスVPNを実現するために広く用いられている方法です。

L2TP

L2TPは、Layer 2 Tunneling Protocolの略で、文字通りデータリンク層(第2層)においてある機器から任意のアドレスの別の機器まで仮想トンネルを作成し(トンネリング)、データを送受信するためのプロトコルです。仮想トンネルを作成し、PPP接続を確立することでVPN接続できます。

引用元: L2TPとは?メリット2つとプロトコル4種類についても解説!

L2TPでは、下図のようにPPPフレームをカプセル化します。PPPではIP以外のプロトコルを扱うこともできます。

L2TP

また、L2TPではPPPと同じく、PAPやCHAPによる接続時のユーザ認証を行うことができます。この点から、リモートアクセスVPNでの利用に適しています。

IPsecとの併用

L2TPには、暗号化機能が備わっていないので、インターネット上で通信内容を盗聴される恐れがあります。そのため、暗号化通信を実現するためにIPsecを併用しESPによってL2TPパケットを暗号化して送ります。このとき、IPsecのトランスポートモードを利用します。L2TPで既にトネリングしているので、IPsecでは再度トンネルを作る必要がないからです。

L2TP/IPsec

IPsecのトンネルモードを利用すればL2TPを利用する必要がないように思われますが、IPsecは通常ユニキャストの通信しか扱わないので、ブロードキャストやマルチキャスト通信を扱いたいときには別のトネリングプロコトルを利用する必要があります。例えばDHCPはブロードキャスト通信を行います。外部へ持ち出した機器に、VPNで利用するIPアドレスDHCPを利用して設定したい場合には、IPsecトンネルモードを利用することができません。

TLS/SSL-VPN

特徴

TLS/SSL-VPNTLS/SSLを利用して暗号化・認証を行うVPNです。次のような特徴があります。

  • クライアントにWebブラウザがあれば利用できる
  • NAPTの影響を受けない
  • 公開鍵証明書を利用したサーバ認証・クライアント認証ができる
  • ブラウザ上でのユーザ認証をおこなるためユーザにわかりやすい

リバースプロシキ方式

VPN装置がリバースプロシキとして動作することによって、LAN内の機器に接続する方式です。一般的に、リバースプロシキサーバはHTTPを代理中継するプロシキサーバなので、この方式の場合、LAN内のWebアプリケーションのみを利用できます。

L2フォワーディング方式

L2フォワーディングは、アプリケーションのデータをHTTPのパケットに入れてカプセル化し、SSLで暗号化する方式です。カプセル化するデータは、サーバのポート番号やIPアドレスなどが含まれたデータ (OSI参照モデルでいうところの第二層(Layer 2)のデータ)であるため、“L2”フォワーディング方式、または”L2”カプセル方式と呼ばれます。L2フォワーディング方式では、ポートフォワーディング方式と異なり、VPN装置側で定義ファイルにポート番号を設定しておく必要がないことから、幅広いアプリケーションをサポートすることが可能です。

引用元:SSL-VPN 入門

L2フォワーディング方式では、VPNソフトで仮想NICを実現します。

SSH

SSH(Secure SHell)は、クラウド上のサーバなどにリモートログインする場合に利用するアプリケーション(コマンド)です。リモートログインに関する通信を暗号化します。

SSHでは、リモートログインを行う際に、パスワードによるユーザ認証の他に公開鍵を利用したユーザ認証も可能です。リモートログイン先のサーバにユーザの公開鍵を登録し、ユーザがリモートログインする際に秘密鍵を利用します。

さらに、SSHにはポートフォワーディングと呼ばれる機能もあります。ポートフォワーディング機能を利用することによって、IPパケットを暗号化して対向ホストへ送信することができます。つまり、IPパケットをトンネリングさせて、簡易的なリモートアクセスVPNを作ることができます。

IP-VPN

IP-VPN通信事業者あ提供するWAN通信サービスのひとつです。インターネットVPNとは異なり、インターネットは利用せず、代わりに通信事業者が構築したネットワークを利用します。IP-VPNサービスを利用することによって拠点間VPNを実現することができます。

インターネットはさまざまなネットワークが接続されてできている通信網なので、特定の通信事業者が全体をコントロールすることができません。一方、通信事業者が自ら構築したネットワーク(=閉域網)では通信事業者が通信の流れを自由にコントロールできます。よって、IP-VPNでは通信の品質を通信事業者が保証できます。

IP-VPNの利点と欠点は以下のようになります。

  • 利点
    • 通信速度や信頼性などの通信品質を一定に保てる
    • ルータがあれば利用でき、特別な機材は不要
    • 拠点間で接続するためにグローバルIPが不要
  • 欠点
    • インターネットVPNを構築する場合と比較して費用が高い
    • IP-VPNサービスを利用するためのアクセスポイントが拠点近くにないとアクセス回線の運用費が高額となり使いにくい
    • IPガイのプロトコルの伝送が行えない

参考文献