[index] CentreCOM AR450S コマンドリファレンス 2.9

IPsec/概要・基本設定


  - 基本設定
   - ISAKMP/IKEによるIPsec VPN
   - 手動鍵によるIPsec VPN
  - 詳細設定
   - IPsec/ISAKMPモジュールの有効化
   - IPsecポリシー(SPD)
   - SA情報の設定
    - SAスペック
    - バンドルスペック
   - 鍵管理の設定
    - ISAKMP/IKEによる自動鍵管理
    - 手動鍵管理
   - その他
    - UDPトンネリング(ESP over UDP)
    - IPsec NAT-Traversal(NAT-T)
    - IPsecとファイアウォールの併用
    - Unnumbered IPインターフェース使用時の注意
  - 動作・設定の確認
   - 基本的な情報
   - デバッグオプション
   - 統計カウンター


IPsec(IP security)は、IPに暗号化や認証などのセキュリティー機能を付加する一連のプロトコル群です。

本製品は暗号処理チップをオンボード搭載しており、IPsecを使用した安全性の高いVPN(Virtual Private Network)を構築できます。

IPsecを使用すると、次のようなことが可能になります。


ここでは、本製品におけるIPsecの基本設定について解説します。

Note - IPsecを使用するには、通信データの暗号化と復号化を行うすべてのルーターが同じ暗号化方式に対応している必要があります。


 

基本設定

IPsecによるVPN(以下、IPsec VPN)の基本構成を次に示します。本製品を使ってIPsec VPNを構築するためには、最低限次の条件を満たす必要があります。



この構成のIPsec VPNでは、次のような通信が可能です。


以下の各節では、上記の基本構成に基づき、IPsecの設定方法について解説します。


 

ISAKMP/IKEによるIPsec VPN

ここでは、自動鍵管理によるIPsec VPN構築の要点を説明します。

ISAKMP/IKEを使用する場合は、以下の設定が必要です。


  1. IPsec VPNは、ルーター(セキュリティーゲートウェイ)間でIPトンネルを張ることによって実現されます。そのためには、ルーター間でIPの通信ができなくてはなりません。各ルーターの接続形態に応じて、通常のIP設定までをすませておいてください。

  2. 鍵管理プロトコルISAKMP/IKEの設定を行います。最初に、ルーター間で認証を行うときに使う事前共有鍵(pre-shared key)を作成します。共有鍵なので、鍵の値は両方のルーターで同じでなくてはなりません。鍵番号は異なっていてもかまいません。


  3. ISAKMPポリシーを作成し、IKEネゴシエーションの相手ルーターを登録します。PEERに相手ルーターのIPアドレスを、KEYに事前共有鍵の番号を指定してください。


    なお、相手ルーターのアドレスが不定な場合はPEERにANYを指定し、代わりに相手ルーターのID(任意の文字列)を「REMOTEID="RouterB"」のように指定してください。相手ルーター側では、自分のIDを「LOCALID="RouterB"」のように指定してください。

    また、片側のアドレスが不定な場合は、「MODE=AGGRESSIVE」を指定してAggressiveモードを使うようにしてください(省略時はMainモードになります)。


    Note - 両方のルーターのアドレスが不定な場合は、IPsec VPNを実用的に使用することはできません。通常の運用では、少なくとも片側のアドレスが固定になっている必要があります。

  4. 次にIPsec SA(IPsecの通信仕様)の設定を行います。SAスペックとSAバンドルスペックを作成し、IPsec通信で使用するセキュリティープロトコルとアルゴリズムの組み合わせを指定します。ここでは、ESP(IP暗号ペイロード)を使ってIPパケットの暗号化と認証を行うための設定を示します。通常はこの設定で問題ないでしょう。


  5. ここからIPsecポリシー(IPsecの適用範囲)の設定を行います。最初にISAKMPメッセージ(始点・終点ともにUDP500番)を素通しするためのポリシーを作成します。IPsecポリシーの検索は作成順に行われるため、ISAKMP/IKEを使用する場合は必ず最初にこの設定を行ってください。INTERFACEパラメーターには、WAN側インターフェースを指定します。その他は例のとおりで結構です。


  6. 次にIPsecを適用するパケットの条件(IPsec VPNのアドレス範囲)を指定します。IPsec VPNでは、プライベートLAN間の通信だけをIPsecの対象とします。少し長くなりますが、最低限以下のパラメーターを実際の環境に合わせて指定してください。



    この例では、192.168.10.0/24と192.168.20.0/24間の通信にIPsecを適用しています。

  7. 最後にVPN通信以外のパケットを素通しするポリシーを作成します。この設定は、インターネットへのアクセスが必要ない場合は省略してもかまいません。


    Note - この構成ではLAN側のコンピューターにプライベートアドレスが設定されているため、実際にLANからインターネットへアクセスするにはNATの設定が必要です。詳しくは「IPsecとファイアウォールの併用」をご覧ください。

  8. IPsecとISAKMPを有効にします。


  9. Security Officerレベルのユーザーを登録します。


  10. Security Officerレベルのユーザーでログインしなおします。


  11. 設定内容を保存し、次回起動時に読み込まれるように設定します。


  12. セキュリティーモードに移行します。


    Note - Security Officerレベルのユーザーが登録されていないと、セキュリティーモードに移行できません。


■ IPsecとファイアウォールやNATを併用する場合は、追加の設定が必要になります。詳しくは「IPsecとファイアウォールの併用」をご覧ください。また、具体的な設定例については設定例集をご覧ください。


 

手動鍵によるIPsec VPN

ここでは、手動鍵管理によるIPsec VPN構築の要点を説明します。

手動で鍵の管理を行う場合、以下の設定が必要です。


Note - 手動鍵を使う場合は、両方のルーターのアドレスが固定されていなくてはなりません。片側のアドレスが不定な場合は、ISAKMP/IKEによる自動鍵管理をご使用ください。

  1. IPsec VPNは、ルーター(セキュリティーゲートウェイ)間でIPトンネルを張ることによって実現されます。そのためには、ルーター間でIPの通信ができなくてはなりません。各ルーターの接続形態に応じて、通常のIP設定までをすませておいてください。

  2. IPsec通信で使う暗号鍵と認証鍵を作成します。ここでは、暗号に56ビットDESを、認証にSHA-1を使うものとします。これらの鍵は共有鍵なので、両方のルーターで同じになるように設定してください。ただし、鍵番号は異なっていてもかまいません。鍵作成の詳細については、「暗号」の章をご覧ください。

    ■ 通常は、片側のルーターでランダムに鍵を生成し、その値をもう一方のルーターに手動入力します。


    ■ 作成した鍵の値を表示させるには、SHOW ENCO KEYコマンドを使います。

    ■ もう一方のルーターに手動で鍵の値を入力します。


  3. 次にIPsec SA(IPsecの通信仕様)の設定を行います。SAスペックとSAバンドルスペックを作成し、IPsec通信で使用するセキュリティープロトコルとアルゴリズムの組み合わせ、暗号鍵と認証鍵、外向き・内向きのSPI値(256〜4294967295)を指定します。ここでは、ESP(IP暗号ペイロード)を使ってIPパケットの暗号化と認証を行うための設定を示します。通常はこの設定で問題ないでしょう。相手ルーターでは、INSPIとOUTSPIの値を入れ替えてください。


  4. ここからIPsecポリシー(IPsecの適用範囲)の設定を行います。最初にIPsecを適用するパケットの条件(IPsec VPNのアドレス範囲)を指定します。IPsec VPNでは、プライベートLAN間の通信だけをIPsecの対象とします。少し長くなりますが、最低限以下のパラメーターを実際の環境に合わせて指定してください。



    この例では、192.168.10.0/24と192.168.20.0/24間の通信にIPsecを適用しています。

  5. 最後にVPN通信以外のパケットを素通しするポリシーを作成します。この設定は、インターネットへのアクセスが必要ない場合は省略してもかまいません。


    Note - この構成ではLAN側のコンピューターにプライベートアドレスが設定されているため、実際にLANからインターネットへアクセスするにはNATの設定が必要です。詳しくは「IPsecとファイアウォールの併用」をご覧ください。

  6. IPsecを有効にします。


  7. Security Officerレベルのユーザーを登録します。


  8. Security Officerレベルのユーザーでログインしなおします。


  9. 設定内容を保存し、次回起動時に読み込まれるように設定します。


  10. セキュリティーモードに移行します。


    Note - Security Officerレベルのユーザーが登録されていないと、セキュリティーモードに移行できません。

■ IPsecとファイアウォールやNATを併用する場合は、追加の設定が必要になります。詳しくは「IPsecとファイアウォールの併用」をご覧ください。また、具体的な設定例については設定例集をご覧ください。


 

詳細設定

IPsecに関する各種設定の詳細について解説します。個々のパラメーターについては、コマンドリファレンスをご覧ください。

 

IPsec/ISAKMPモジュールの有効化

■ IPsecを使用するためには、ENABLE IPSECコマンドでIPsecモジュールを有効にする必要があります。


■ 自動鍵管理(ISAKMP/IKE)を使う場合は、ENABLE ISAKMPコマンドでISAKMPモジュールも有効にします。


■ IPsecの有効・無効は、SHOW IPSECコマンドで確認できます。


■ ISAKMPの有効・無効は、SHOW ISAKMPコマンドで確認できます。



 

IPsecポリシー(SPD)

セキュリティーポリシーデータベース(SPD)は、パケットにどのような処理を行うかを定義するデータベースです。始点・終点アドレスやプロトコル、ポート番号をもとにパケットを識別し、該当する処理を実行します。IPsecにおけるパケットフィルターと考えてもよいでしょう。

SPDは個々のIPsecポリシーによって構成されます。IPsecポリシーの作成は、CREATE IPSEC POLICYコマンドで行います。

IPsecポリシーは、最小限以下の要素で構成されます。


表 1:IPsecポリシーの基本パラメーター
パラメーター
説明
POLICY ポリシー名。任意です
INTERFACE 適用インターフェース。IPsecポリシーはインターフェースごとに設定します。ポリシーの検索は、パケットが指定インターフェースから送信されるとき、および、指定インターフェースで受信したときに行われます。通常はWAN側のインターフェースを指定します
ACTION パケットに対する処理(アクション)。IPsec適用、通過、拒否の3種類があります(別表参照)。ポリシーの順番に気を付けてください
selectors... パケットの条件指定パラメーター。始点・終点アドレス、プロトコル、ポートなど、パケットを分類するための条件を指定します(別表参照)
ipsec_params... IPsec処理に関するパラメーター。アクションとして「IPsec適用」を選択したときだけ指定します(別表参照)


パケットの条件指定(selectors...)には、以下のパラメーターを使います。ここでの「ローカル側」とは、送信パケットでは始点、受信パケットでは終点のことを意味します。また「リモート側」も同様で、送信パケットでは終点、受信パケットでは始点のことになります。IPsecではこれらのフィルタリング条件を「セレクター」と呼んでいます。

表 2:IPsecポリシーの条件パラメーター
パラメーター
説明
LADDRESS ローカル側IPアドレス
LMASK LADDRESSに対するネットマスク
LNAME ローカル側システム名(フェーズ2 ID)
LPORT ローカル側ポート番号(プロトコルがTCPかUDPのときのみ)
RADDRESS リモート側IPアドレス
RMASK RADDRESSに対するネットマスク
RNAME リモート側システム名(フェーズ2 ID)
RPORT リモート側ポート番号(プロトコルがTCPかUDPのときのみ)
TRANSPORTPROTOCOL IPプロトコルタイプ(TCP、UDPなど)


また、マッチしたパケットに対する処理はACTIONパラメーターで指定します。

表 3:IPsecポリシーのアクション
アクション
説明
PERMIT パケットを通過させる(IPsecを適用しない)
IPSEC パケットにIPsec処理を適用する(BUNDLESPECIFICATIONパラメーターで指定したSAバンドルの処理を適用する)
DENY パケットを破棄する


IPsec処理を指定した場合(ACTION=IPSEC)は、さらに以下のIPsec関連パラメーター(ipsec_params...)も指定します。

表 4:IPsec関連パラメーター
パラメーター
説明
BUNDLESPECIFICATION SAバンドルスペック。IPsec処理(SAスペックで記述)の組み合わせを記述したSAバンドルスペックの番号を指定します
KEYMANAGEMENT 鍵管理方式。鍵を自動(ISAKMP)で管理するか手動(MANUAL)で管理するかを指定します
PEERADDRESS 対向IPsec機器のアドレス。トンネルモードSAの場合は、カプセル化したパケットの送り先(トンネルの終端)を指定します。また、トランスポートモードSAの場合は、対象パケットの最終的な送信先を指定します



以下、具体例を示します。IPsecポリシーの設定コマンドは長くなりがちなので、CREATEとSETに分けています。また、適宜省略形をご使用ください。

■ ISAKMPパケット(始点・終点ともUDP500番)を通過させるポリシー「isa」を作成します。ISAKMP/IKEを使うときは、必ずこのポリシーを作成してください。そのとき、IPsecを適用するポリシー(ACTION=IPSEC)よりも前にこのポリシーを置いてください。


このコマンドは、「ppp0から送出するIPパケットのうち、始点・終点ポートが500番のUDPパケットはIPsecを適用せずにそのまま送信する。また、ppp0で受信したパケットのうち、始点・終点ポートが500番のUDPパケットにはIPsecの復号化処理を適用せずにそのまま受け入れる」の意味になります。

■ ローカル側LAN(192.168.10.0/24)とリモート側LAN(192.168.20.0/24)の間の通信にIPsec処理を適用するポリシー「vpn」を作成します。IPsec処理の内容はBUNDLESPECIFICATIONパラメーターで指定したSAバンドルスペックによって定義します(詳細は「SA情報の設定」をご覧ください)。トンネルモード用のポリシー例です。また、IPsec処理後のパケットの送り先はPEERADDRESSパラメーターで指定します。ここでは自動鍵を使っています。



このコマンドは、「ppp0から送出するIPパケットのうち、始点アドレスが192.168.10.0/24(192.168.10.0〜192.168.10.255)の範囲で、終点アドレスが192.168.20.0/24(192.168.20.0〜192.168.20.255)の範囲のものに対し、バンドルスペック「1」のIPsec処理を施した上でパケットに新しいIP(トンネル)ヘッダーを付け、対向IPsec機器2.2.2.2に送信する。また、ppp0で受信したIPsecパケットのうち、バンドルスペック「1」の処理内容と合致しているものに対して復号化処理を行い、復号化後のパケットの始点アドレスが192.168.20.0/24の範囲で、終点アドレスが192.168.10.0/24の範囲であれば受け入れる」の意味になります。

Note - 手動鍵の場合は、KEYMANAGEMENTパラメーターにMANUALを指定してください。

■ 相手ルーターのアドレスが不定なときはPEERADDRESSにDYNAMICを指定します。これは、ISAKMPの認証をパスした相手のアドレスを意味します。このようなケースでは、常にアドレス不定側から通信が開始されることになります。


このとき、相手ルーター(アドレス不定側)の対応するポリシーは次のようになります。アドレス不定側では相手ルーターのアドレスがわかっているので、PEERADDRESSには固定アドレスが入ります。


Note - 片側のアドレスが不定なときはISAKMP/IKE(AggressiveモードまたはXAUTH)を使ってください。アドレスが不定なときは手動鍵は使えません。

■ ローカル側LAN(192.168.10.0/24)とVPNクライアント(1.2.3.4)の間の通信にIPsec処理を適用するポリシー「vpncli」を作成します。PEERADDRESSとRADDRESSが同じになっていることと、リモート側アドレス(RADDRESS、RMASK)がホストアドレスになっている点に注目してください(RMASK省略時はホストマスク255.255.255.255となります)。



■ VPNクライアントのアドレスが不定なときはPEERADDRESSにDYNAMICを指定します。これは、ISAKMPの認証をパスした相手のアドレスを意味します。また、パケット条件のリモート側アドレスも不定になるため、RADDRESSの代わりにRNAME(相手のフェーズ2 ID)を使います。このようなケースでは、常にアドレス不定側から通信が開始されることになります。


このとき、VPNクライアント側の対応するポリシーは次のようになります。クライアント側では相手ルーターのアドレスがわかっているので、PEERADDRESSには固定アドレスが入ります。ただし、自分のアドレスが不定なのでLADDRESSの代わりにLNAME(自分のフェーズ2 ID)を使います。


Note - 片側のアドレスが不定なときはISAKMP/IKE(AggressiveモードまたはXAUTH)を使ってください。アドレスが不定なときは手動鍵は使えません。

■ 複数のVPNクライアントと通信するときは、クライアントごとにIPsecポリシーを作成する必要があります。クライアントのアドレスが不定な場合は、クライアントごとに異なるLNAME、RNAMEを設定してください。次の例では、3つのクライアント(client1、client2、client3)との接続を想定しています。IPsec処理の内容は全クライアント共通と仮定しているため、BUNDLEには同じバンドルスペックを指定しています。クライアント側の設定でも、それぞれ対応するLNAMEを指定してください。


■ トランスポートモードの場合は、パケット条件のローカル側アドレス(LADDRESS)が自分のアドレスと同じになり、リモート側アドレス(RADDRESS)が対向IPsec機器アドレス(PEERADDRESS)と同じになります。この設定では、ルーターAとVPNクライアント間のIP通信だけが保護の対象となります(VPNクライアントからLAN Aにはアクセスできません)。



このコマンドは、「ppp0から送出するIPパケットのうち、始点アドレスが1.1.1.1で終点アドレスが1.2.3.4のものに対し、バンドルスペック「2」のIPsec処理を施した上で対向IPsec機器1.2.3.4に送信する。また、ppp0で受信したIPsecパケットのうち、バンドルスペック「2」の処理内容と合致しているものに対して復号化処理を行い、復号化後のパケットの始点アドレスが1.2.3.4で終点アドレスが1.1.1.1であれば受け入れる」の意味になります。

Note - SAスペック、バンドルスペックの設定については「SA情報の設定」をご覧ください。

■ すべてのパケットを通過させるポリシー「inet」を作成します。IPsec適用範囲外のパケットに対して通常の通信を許可する場合は、最後にこのポリシーを作成してください。インターフェースに対して1つでもIPsecポリシーを作成すると、ポリシーリストの末尾にすべてのパケットを破棄する暗黙のポリシーが作成されます。そのため、下記のポリシーを作成しない場合は、IPsec通信の範囲外ではまったく通信ができません。この例のようにパケット条件パラメーターを指定しない場合は「すべてのパケット」を意味します。


■ SPDのチェックは、ポリシーが設定されているインターフェース上でパケットを送受信するときに行われます。このとき、データベース内の各ポリシーが作成した順に検索され、最初に一致したポリシーで指定された処理が行われます。そのため、ポリシーの順序には十分留意してください。また、ポリシーリストの末尾にはすべてのパケットを破棄(DENY)する暗黙のポリシーが存在するため、IPsecを適用しない通信を許可するときは、最後にすべてのパケットを通過させる(PERMIT)ポリシーを作成してください。

■ SPD(ポリシーの一覧)はSHOW IPSEC POLICYコマンドで表示できます。


■ 各ポリシーの詳細を確認するには、POLICYパラメーターにポリシー名を指定します。



 

SA情報の設定

パケットに適用するIPsec処理の詳細は、SAスペックとバンドルスペックで定義します。

 

SAスペック

SAスペックでは適用するプロトコル、アルゴリズム、鍵管理方式、SAモードを指定し、手動鍵の場合はさらに鍵とSPIも指定します。SAスペックはCREATE IPSEC SASPECIFICATIONコマンドで定義します。1つのSAスペックでは、プロトコルやアルゴリズムを1つしか指定できません。複数のプロトコルを組み合わせ使いたいときは、後述するバンドルスペックで組み合わせを指定します(使用プロトコルが1つしかないときでもバンドルスペックは必要です)。


以下、具体例を示します。

■ 自動鍵でESPトンネルモードによる暗号化と認証を行うSAスペック「1」を作成します。ESPを使うときは、暗号アルゴリズム(ENCALG)と認証アルゴリズム(HASHALG)を指定してください。MODEパラメーター省略時はトンネルモードになります。鍵とSPIはISAKMP/IKEによって自動的にネゴシエーションされます。


■ ESPでは暗号化と認証の両機能を使用できますが、アルゴリズムにNULLを指定すると、どちらか一方だけを使うよう設定することもできます。たとえば、DESによる暗号化だけを行い、認証機能を使わない場合は次のようにします。


また、暗号化を行わず(NULL暗号化)に認証機能だけを使う場合は次のようにします。これは、ESPのデバッグに便利です。


Note - ENCALGとHASHALGの両方にNULLを指定することはできません。

■ 手動鍵でESPトンネルモードによる暗号化と認証を行うSAスペック「1」を作成します。手動鍵の場合は、暗号鍵(ENCKEY)、認証鍵(HASHKEY)と送信時SPI(OUTSPI)、受信時SPI(INSPI)を手動で設定する必要があります。INSPIとOUTSPIは、対向IPsec機器と逆になるように設定してください。


■ 自動鍵でAHトンネルモードによる認証を行うSAスペック「2」を作成します。AHを使うときは、認証アルゴリズム(HASHALG)を指定してください。MODEパラメーター省略時はトンネルモードになります。鍵とSPIはISAKMP/IKEによって自動的にネゴシエーションされます。


■ 手動鍵でAHトンネルモードによる認証を行うSAスペック「2」を作成します。手動鍵の場合は、認証鍵(HASHKEY)と送信時SPI(OUTSPI)、受信時SPI(INSPI)を手動で設定する必要があります。INSPIとOUTSPIは、対向IPsec機器と逆になるように設定してください。


■ SAスペックの設定内容は、SHOW IPSEC SASPECIFICATIONコマンドで確認できます。


■ SAスペックに基づいて確立されたSAの情報はSHOW IPSEC SAコマンドで確認できます。


 

バンドルスペック

バンドルスペックでは、プロトコルごとに定義したSAスペックの組み合わせを指定します。バンドルは、パケットに対して複数のプロトコルを適用するためのメカニズムですが、プロトコルを1つしか使わないときであってもバンドルスペックを定義する必要があります。IPsecポリシーのアクションで「ACTION=IPSEC」を指定するときに、処理内容をバンドルスペックの番号で指定するためです。

バンドルスペックはCREATE IPSEC BUNDLESPECIFICATIONコマンドで作成します。


最低限、バンドルスペック番号、鍵管理方式、SAスペックの組み合わせを指定してください。

SAスペックの組み合わせはSTRINGパラメーターで指定します。このパラメーターを指定するときは、3種類の記号「AND」、「OR」、「,」を使うことができます。以下、それぞれの使い方を示します。ここでは、説明のため次のようなSAスペックが定義されているものと仮定します。

表 5:SAスペックのサンプル
番号
プロトコル
暗号方式
認証方式
1 ESP DES SHA1
2 ESP DES MD5
3 AH SHA1
4 AH MD5



■ プロトコルを1つしか適用しない場合は、使用するSAスペックの番号を1つだけ指定します。たとえば、ESP(DES + SHA1)を適用するときはSTRINGパラメーターに次のように指定します。


■ 「AND」は、併用するプロトコルの組み合わせと適用順序を示します。「AND」でつなげるSAスペックはそれぞれ異なるプロトコルでなくてはなりません。たとえば、ESP(DES + SHA1)、AH(SHA1)の順に適用する場合は、次のように指定します。


プロトコルの適用順序は、通常ESP、AHの順とします。


ISAKMP/IKEを使用する場合は、プロトコルの組み合わせもネゴシエーションによって決定されます。そのため、バンドルスペックでは可能な組み合わせ(候補)を複数記述できます。「OR」と「,」はそのための記号です(手動鍵のときは使えません)。

■ 「OR」は、使用するアルゴリズムの選択肢を示すもので、同一プロトコルでアルゴリズムが異なるSAスペックを指定します。たとえば、ESP、AHの順にプロトコル適用する場合で、AHの認証アルゴリズムとしてSHA1かMD5のどちらか一方を使いたい場合は、次のように指定します。


■ 「,」(カンマ)は、組み合わせパターンを複数提示したいときに使います。「ESP(DES + SHA1)、AH(SHA1)」の組み合わせが第1候補、「ESP(DES + SHA1)、AH(MD5)」が第2候補、「ESP(DES + SHA1)」のみが第3候補なら次のように指定します。



以下、バンドルスペックの作成例を示します。SAスペックは先ほどの例をもとにします。

■ 自動鍵でESP(DES + SHA1)を使うバンドルスペック「1」を作成します。


■ 手動鍵でESP(DES + MD5)、AH(MD5)の順に適用するバンドルスペック「2」を作成します。


■ 自動鍵で「ESP(DES + SHA1)、AH(SHA1)」を第1候補、「ESP(DES + SHA1)」のみを第2候補とするバンドルスペック「3」を作成します。


■ バンドルスペックの設定内容は、SHOW IPSEC BUNDLESPECIFICATIONコマンドで確認できます。


■ 実際に確立されたSAバンドルの情報は、SHOW IPSEC POLICYコマンドのSABUNDLEオプションで確認できます。



 

鍵管理の設定

 

ISAKMP/IKEによる自動鍵管理

自動鍵管理の設定はISAKMPポリシーによって行います。ISAKMPポリシーは、フェーズ1でISAKMP SAを確立するためのパラメーターを定義するもので、相手機器のアドレスや認証方式、ISAKMP SA上で使用するアルゴリズムなどについて設定します。

ISAKMPポリシーを定義しておけば、IPsec処理の必要なパケットが検出されたときに、適切な相手機器との間で自動的にネゴシエーションが開始されます。まだフェーズ1が開始されていないときは、最初にISAKMP SAを確立し、その後フェーズ2でISAKMP SAの保護を受けながらIPsec SAのネゴシエーションを行います。

フェーズ1のネゴシエーションにおける相手認証の方式としては、共有パスフレーズによる事前共有鍵(pre-shared key)方式とRSAデジタル署名方式を使用できます。デフォルトは事前共有鍵方式です。

Note - RSAデジタル署名方式ではPKIモジュールを使用するため、別売のPKIフィーチャーライセンスが必要です。

ISAKMPポリシーはCREATE ISAKMP POLICYコマンドで作成します。事前共有鍵方式で相手認証を行う場合、最低限必要なパラメーターは次のとおりです。ポリシー名、相手機器のアドレス、事前共有鍵の番号を指定してください。「SENDNOTIFY=TRUE」は相互接続性のためのパラメーターです。



■ 事前共有鍵はCREATE ENCO KEYコマンドで作成する汎用鍵(TYPE=GENERAL)です。次のようにして作成してください。鍵の作成方法の詳細については「暗号」の章をご覧ください。


以下、事前共有鍵方式を使う場合のISAKMPポリシーの作成例を示します。

■ 「2.2.2.2」との間でISAKMP/IKEのネゴシエーションを行うISAKMPポリシー「i」を作成します。事前共有鍵の番号は「1」とします。


このコマンドは、「2.2.2.2とのネゴシエーションでは事前共有鍵「1」を用いる」の意味になります。

■ 相手機器のアドレスが不定なときはPEERにANYを指定します。これは、どのアドレスからのネゴシエーション要求であっても受け入れることを示します。しかし、これでは相手の識別ができないため、アドレス不定側でIDペイロードの内容を明示的に指定することで相手を識別します。

このように、片側のアドレスが不定でID認証を行う場合は、デフォルトのMainモードではなく、Aggressiveモードを使う必要があります。また、このようなケースでは、ISAKMPネゴシエーションは常にアドレス不定側から開始されることになります。

アドレス固定側では、REMOTEIDパラメーターで相手のIDを指定します。相手から受け取ったIDペイロードの中身がREMOTEIDで指定した値と一致しており、なおかつ、事前共有鍵の値が一致していれば認証成功となります。


このコマンドは、「ID値がclientである相手とのネゴシエーションでは事前共有鍵「1」を用いる」の意味になります。

また、アドレス不定側では、LOCALIDパラメーターで自分のIDを明示的に指定します。


Note - LOCALIDを指定しなかった場合、IDペイロードには自分のIPアドレスがセットされます。

■ 複数の相手と接続する場合は、通信相手の数だけISAKMPポリシーを作成し、それぞれ個別に事前共有鍵を指定します。相手のアドレスが固定ならば、次のようにします。ここでは、2.2.2.2と3.3.3.3との接続を想定しています。2.2.2.2とのネゴシエーションでは事前共有鍵「1」を、3.3.3.3とは「2」を使って認証を行います。


■ 複数の相手と接続する場合で相手のアドレスが不定の場合は、次のようにします。IPアドレスでは相手を識別できないため、相手が送ってくるIDペイロードの値を一種のユーザー名(あるいはホスト名)として利用します。このように片側のアドレスが不定なときはAggressiveモードが必須です。ここでは、アドレス不定の接続相手「peer1」、「peer2」との接続を想定しています。peer1とのネゴシエーションでは事前共有鍵「1」を、peer2とは「2」を使って認証を行います。この場合、相手側では自分のIDを「LOCALID="peer1"」のように指定します。


■ 片側アドレスが不定なときに相手を認証する方法としてはもう1つ、XAUTH(Extended Authentication。拡張認証)と呼ばれる方法があります。これは、フェーズ1完了後、フェーズ2の開始前にユーザー名/パスワードなどの認証を行う方式です。

アドレス固定側では、PEERパラメーターにANY、XAUTHパラメーターにSERVER(認証を要求する側)を指定したISAKMPポリシーを1つだけ作成します。また、相手のユーザー名とパスワードをユーザー認証データベース等に登録しておきます。


アドレス不定側では、XAUTHパラメーターにCLIENT(認証を受ける側)を指定します。また、自分のユーザー名とパスワードも指定します。フェーズ1の事前共有鍵はXAUTH認証を受けるすべてのクライアントで共通になります。個々のクライアントの認証はフェーズ1完了後のXAUTHによって行われます。


■ 相手認証にRSAデジタル署名方式を使用する場合は、AUTHTYPEパラメーターにRSASIGを指定し、LOCALRSAKEYパラメーターで自分の公開鍵ペアの番号を指定します。


RSAデジタル署名を利用したIPsecの設定方法については「PKI」の章をご覧ください。

■ フェーズ1の鍵交換で使用するDiffie-Hellman(Oakley)グループを変更するには、GROUPパラメーターを使います。省略時はグループ1(768ビットMODP)です。


■ ISAKMPポリシーの設定内容は、SHOW ISAKMP POLICYコマンドで確認できます。


 

手動鍵管理

ISAKMP/IKEを使わない場合は、SA(SAスペック)ごとに手動で鍵(暗号鍵と認証鍵)とSPI(外向き、内向き)を設定する必要があります。

■ 鍵の作成はCREATE ENCO KEYコマンドで行います。SAで使用する鍵はすべて共有鍵ですので、対向機器間で同じ値を使用するようにしてください。鍵の作成方法については「暗号」の章をご覧ください。

■ 鍵とSPIの指定は、CREATE IPSEC SASPECIFICATIONコマンドで行います。詳細は「SA情報の設定」をご覧ください。


 

その他


 

UDPトンネリング(ESP over UDP)

UDPトンネリング(ESP over UDP)は、IPsecパケット(ESP)をUDPパケットにカプセル化して送受信する本製品独自の機能です。この機能を使うと、ルーター間にNAT機器が存在する場合でもIPsecを利用できます。

Note - ただし、NATによってIPヘッダーが変更されるため、セキュリティープロトコルとしてAHを使うことはできません。これは、AHのデータ認証範囲が外側IPヘッダー(の一部)を含むためです。

Note - ESP over UDPを使う場合は、該当するISAKMPポリシーでNAT-Traversal(NAT-T)を無効に設定してください(デフォルトは無効)。NAT-Tの有効・無効は、CREATE ISAKMP POLICYコマンド、SET ISAKMP POLICYコマンドのNATTRAVERSALパラメーターで指定します。

■ UDPトンネリングを使用するには、「ACTION=IPSEC」のIPsecポリシーで「UDPTUNNEL=TRUE」を指定します。これにより、UDPの2746番ポートでESP over UDPパケットの送受信を行うようになります。両側のルーターともUDPトンネリングを有効にしてください。


■ NAT機器の背後に位置するルーターでは、さらに次のコマンドを実行してUDPハートビートを有効にします。UDPハートビートは、NAT機器の変換テーブルからセッション情報が削除されないよう、30秒ごとに相手ルーター宛てに送信されるパケットです。セッション保持だけを目的とするため、受信しても特別な処理は行われません。


■ UDPトンネリングを使用するときは、両側のルーターに以下のIPsecポリシーを追加し、ESP over UDPパケットを通過させるようにしてください。本ポリシーは、IPsecを適用するポリシー(ACTION=IPSEC)よりも前に置いてください(ISAKMPパケットを通過させるポリシーと同様)。


■ UDPトンネリングパケット(ESP over UDP)は、送受信ともUDPポート2746番を使います。ポート番号を変更するには、SET IPSEC UDPPORTコマンド、および、CREATE IPSEC POLICYコマンド/SET IPSEC POLICYコマンドのUDPPORTパラメーターを使います。

ローカル側ポートを変更するには、SET IPSEC UDPPORTコマンドを使います。これにより、3456番ポートでUDPトンネリングパケットを受信するようになります。また、送信時も3456番ポートから送出します。


リモート側ポートは相手ルーターごとに設定する必要があるため、IPsecポリシーのパラメーターとして設定します。これにより、IPsecポリシー「vpn」では、UDPトンネリングパケットを相手ルーター(PEER)の3456番ポートに送信します。


Note - UDPポートを変更したときは、トンネリングパケットを通過させるIPsecポリシーの条件も忘れずに変更してください。

■ ファイアウォールを使用しているときは、WAN側からのトンネリングパケットを通過させるルールを追加してください。詳細は「IPsecとファイアウォールの併用」をご覧ください。

 

IPsec NAT-Traversal(NAT-T)

IPsec NAT-Traversal(NAT-T)は、NAT機器経由でのIPsec通信を可能にするISAKMP/IPsecの拡張機能です。本機能は、VPNクライアント(Windows PCなど)からIPsec対応ルーターに接続するリモートアクセス型のIPsec VPNをおもに想定しています。VPNクライアントとルーターの両者がNAT-Tに対応していれば、両者間にNAT機器が存在する場合でもIPsecの通信が可能です。

NAT-Tを使用する場合、NAT機器は通信経路上のどこに存在していてもかまいません。また、NAT機器が複数存在していても、あるいは、まったく存在しなくてもかまいません。NAT-Tでは、ISAKMPフェーズ1のネゴシエーション時にNAT機器の存在を検出し、NAT機器が存在しているときはIPsecパケット(ESP)をUDPでカプセル化して送受信し、NAT機器が存在していないときはIPsecパケット(ESP)を通常どおり送受信します。NAT装置の背後にあると判断した側の機器は、定期的にキープアライブパケットを送信して、NAT機器の変換テーブルからセッション情報が削除されないようにします。

本製品はNAT-Tに対応しており、NAT-T対応VPNクライアントからの接続を受け付けることができます。

Note - NAT機器を経由する場合はIPヘッダーが変更されるため、セキュリティープロトコルとしてAHを使うことはできません。これは、AHのデータ認証範囲が外側IPヘッダー(の一部)を含むためです。

Note - ESP over UDPを使う場合は、該当するISAKMPポリシーでNAT-Traversal(NAT-T)を無効に設定してください(デフォルトは無効)。NAT-Tの有効・無効は、CREATE ISAKMP POLICYコマンド、SET ISAKMP POLICYコマンドのNATTRAVERSALパラメーターで指定します。

NAT-Tは、ISAKMPとIPsecに次のような機能拡張を行うことによって実現されています。

  1. ISAKMPフェーズ1の開始時に、NAT-Tの対応バージョンを示す特殊なVendor IDペイロードを交換することで、相手もNAT-Tに対応しているかどうかを検知します。

  2. 同じくISAKMPフェーズ1中に、NAT-D(Discovery)ペイロードを交換して、通信経路上にNAT機器が存在しているかどうか、存在している場合はどこにあるかを検出します。

  3. 相手がNAT-Tに対応していない、あるいは、通信経路上にNAT機器が存在していないと判断した場合は、通常どおりISAKMPのネゴシエーションを行い、IPsecの通信を開始します。

  4. 相手がNAT-Tに対応しており、なおかつ、NAT機器の存在を検出した場合は、使用するUDPポートをISAKMPのデフォルトポートである500番からNAT-T用の4500番に変更し、以後4500番ポートでISAKMPとIPsec(ESP)の両方の通信を行います。

  5. UDP 4500番ポートでは、ISAKMPメッセージだけでなくIPsecデータ(ESP)パケットもやりとりされますが、ISAKMPメッセージの場合は、ISAKMPヘッダーの前にnon-ESPマーカーを置くことでIPsec(ESP)と区別します。

  6. NAT機器の配下にあると認識した側は、定期的にキープアライブメッセージを送信して、NAT機器の変換テーブルからセッション情報が削除されないようにします。

本製品のNAT-Tは、以下のIETFドラフトに基づいています。


■ NAT-Tを使用するには、ISAKMPポリシーの設定で「NATTRAVERSAL=TRUE」を指定します。これにより、ISAKMPピアのNAT-T対応とNAT機器の存在を検出した場合、UDPの4500番ポートを使ってISAKMPとESPパケットの送受信を行うようになります。


■ NAT-Tを使用するときは、以下のIPsecポリシーを追加し、NAT-Tパケットを通過させるようにしてください。本ポリシーは、IPsecを適用するポリシー(ACTION=IPSEC)よりも前に置いてください(ISAKMPパケットを通過させるポリシーと同様)。


■ ファイアウォールを使用しているときは、WAN側からのNAT-Tパケットを通過させるルールを追加してください。詳細は「IPsecとファイアウォールの併用」をご覧ください。

■ Windows XP標準のVPNクライアントを使用する場合は、L2TPとIPsec(トランスポートモード)を併用する必要があります。ルーター側の設定方法については、設定例集をご覧ください。また、VPNクライアント側の詳細設定については、VPNクライアントのマニュアルをご覧ください。

 

IPsecとファイアウォールの併用

IPsecルーター上でファイアウォールを有効にしているときは、ISAKMPパケットやIPsecパケットがファイアウォールで遮断されないよう、ルールを追加する必要があります。

また、ファイアウォールNATを使っている場合は、プライベートLAN間のパケットにNATが適用されないようにすることも必要です。

以下、前述の「基本構成」をもとに、IPsecとファイアウォールを併用するための設定方法を説明します。

ここでは、さきほどの「基本構成」に、次のようなファイアウォールの設定を追加したものと仮定します。これは、LAN側からのパケットはすべて通過させ、WAN側からのパケットはすべて拒否するファイアウォールの基本設定です。また、LAN側コンピューターがインターネットにアクセスできるよう、WAN側インターフェースのグローバルアドレスを利用したダイナミックENATの設定も含まれています。


このようなファイアウォール設定をすると、IPsec通信に必要なパケットまで遮断されてしまうため、IPsecの通信ができなくなります。IPsecを使う場合は、ご使用の環境に応じて以下の設定を追加してください。

■ ISAKMP/IKEを使っている場合は、相手ルーターからのISAKMPパケットが遮断されないように次のようなルールを設定します(ルーターのUDP500番宛てパケットを許可)。


■ UDPトンネリングを使っている場合は、ISAKMPパケットと同様、ESPパケットをカプセル化しているUDPパケット(ESP over UDP)も通すように設定します(ルーターのUDP2746番宛てパケットを許可)。


■ NAT-Tを使っている場合は、ISAKMPパケットと同様、NAT-TのUDPパケットも通すように設定します(ルーターのUDP4500番宛てパケットを許可)。


■ ローカルLANからリモートLANへのパケットにNATが適用されないよう、次のようなルールを追加します。このルールは、「vlan1で受信したIPパケットのうち、始点が192.168.10.1〜192.168.10.254の範囲で、終点が192.168.20.1〜192.168.20.254の範囲ならばNATをかけない」の意味になります。


■ 相手ルーターから送られてきたIPsecパケットが遮断されないよう、次のようなルールを追加します。「ENCAP=IPSEC」は、IPsecパケットからオリジナルのパケットを取り出したあとでこのルールを適用することを示します。したがって、以下のコマンドは、「ppp0で受信したIPsecパケットから取り出したパケットの終点が192.168.10.1〜192.168.10.254の範囲、すなわちローカル側LAN宛てならばNAT変換の対象外とする」の意味になります。


 

Unnumbered IPインターフェース使用時の注意

IPsecを使うときは、IPパケットの始点アドレスとしてルーター自身のアドレスが使われるため、IPsecポリシーを適用するWAN側インターフェースがUnnumberedの場合は、いくつか注意すべきことがあります。

IPsecパケットを送出するインターフェースがUnnumberedの場合、始点アドレスとして有効なアドレスがないため、その他のインターフェースの中で一番最初に設定されたアドレスが始点アドレスとして使用されます。

WAN側Unnumberedのときは、通常LAN側にISPから割り当てられたグローバルを設定しますが、このときIPsecパケットの始点として使いたいアドレスを最初にADD IP INTERFACEコマンドで設定するよう注意してください。

■ このような問題が発生するのは次のような構成のときです。


この構成では、WAN側インターフェース(ppp0)がUnnumberedになっています。そのため、ppp0から送出されるIPsecパケットやISAKMPパケットの始点アドレスには、他のインターフェースの中で最初に設定されたアドレスが使用されます。

そのため次の順序でアドレスを設定すると、ルーター自身が送信するパケットでは始点アドレスとして192.168.10.1が使われてしまい、インターネット上での通信ができなくなってしまいます。


このような状況を避けるため、このケースでは次の順序でアドレスを設定するよう注意してください。これにより、4.4.4.1が始点アドレスとして使われるようになります。


■ なお、次のような構成では、WAN側がUnnumberedであってもその他のアドレスが1つしかないため、上記のような問題は発生しません。


■ PPPoE LAN型接続では、WAN側Unnumberedというものの、実際にはUnnumberedではなく、ネットワークアドレスがWAN側に割り当てられるケースがあるようです。この場合は、始点アドレスとしてWAN側インターフェースに設定されたネットワークアドレス(ホストアドレスとしては無効)を使おうとするため、他のインターフェースのアドレスが始点になるよう設定を工夫してください。次のような構成を例に解説します。


IPsec等を使わない場合(ルーター自身がインターネット側にパケットを送信することがない場合)は、次のように設定しても問題ありません。ppp0のアドレスはホストアドレスとしては無効なため、実質的にはUnnumberedになります。


しかし、IPsecを使う場合は前記のような問題が発生します。この設定では、IPsecパケットがppp0から送出されますが、このケースではppp0が純粋なUnnumberedでないため、ホストアドレスとしては本来無効なはずのネットワークアドレス(4.4.4.0)が始点アドレスとして使われてしまいます。そのため、ISP側のルーターでパケットが破棄されIPsecの通信ができなくなります。

これを回避するためには、WAN側インターフェースをマルチホーミングして有効なホストアドレスを設定し、デフォルトルートが有効なアドレスを持つインターフェースを向くように設定します。



この場合、アドレスが1つ無駄になりますが、IPsecパケットがppp0-1から送出されるため、始点アドレスとして有効な4.4.4.6が使われるようになります。

 

動作・設定の確認

IPsecの動作や設定を確認する場合、あるいは、IPsecの通信ができない場合は、以下の各項目をチェックしてみてください。

 

基本的な情報

■ 最初にIPsecモジュールが有効になっているかどうかを確認します。SHOW IPSECコマンドを実行し、Module StatusがENABLEDになっているかどうか確認してください。


■ ISAKMPを使っているときは、ISAKMPモジュールが有効になっているかどうかも確認してみましょう。SHOW ISAKMPコマンドを実行し、Module StatusがENABLEDになっているかどうか確認してください。


■ 自動鍵管理(ISAKMP/IKE)を使っているときは、IPsec SAのネゴシエーション(フェーズ2)に先立ち、ISAKMP SAのネゴシエーションが行われます(フェーズ1)。SHOW ISAKMP SAコマンドでISAKMP SAが確立されているかどうかを確認してください。



ISAKMP SAの確立に失敗するおもな原因は、事前共有鍵(pre-shared key)やISAKMPポリシーの設定ミスです。事前共有鍵が両方のルーターで同じに設定されているか、各ルーターのISAKMPポリシーに矛盾がないかを確認してください。


■ ISAKMP関連のイベントはログにも記録されます。必要に応じてログを確認してください。ISAKMP SAやIPsec SAの確立に成功していれば、「Exchange n: Completed successfully」のようなメッセージが記録されているはずです。

または



SHOW ISAKMP EXCHANGEコマンドを実行すると、完了していないISAKMPネゴシエーションがあるかどうかを確認できます。いつになっても、同じ情報が表示されるときは、ネゴシエーションが途中で止まってしまっている可能性が大です。通常は、このコマンドを実行しても何も表示されません。




■ IPsec通信が行われるためには、ルーター間にIPsec SAが確立されている必要があります。IPsec SAは使用するプロトコルごとに用意します。IPsec SAは、自動鍵管理ではISAKMP/IKEのネゴシエーション(フェーズ2)によって自動的に確立されます。一方、手動鍵のときは、管理者が固定的に設定します。SHOW IPSEC SAコマンドでIPsec SAが確立されているかどうかを確認してください。



また、IPsec SAバンドルの情報はSHOW IPSEC POLICYコマンドのSABUNDLEオプションで確認できます。



ISAKMP/IKEでIPsec SAの確立に失敗するおもな原因は、IPsecの設定(SAスペック、バンドルスペック、IPsecポリシー)が両方のルーターで食い違っていることです。次の各コマンドで両方のルーターの設定に矛盾がないか確認してください。また、前述の手順にしたがい、SHOW ISAKMP SAコマンドでISAKMP SAが確立されているかどうかも確認してください。ISAKMP SAが確立されていないとIPsec SAのネゴシエーション自体が行えません。


また、手動鍵の場合も上記のコマンドを実行して、ルーター間でSAやポリシーに矛盾がないか確認してください。

■ IPsec関連のイベントはログにも記録されます。必要に応じてログを確認してください。

または




 

デバッグオプション

■ ISAKMPのデバッグオプションを有効にすると、ISAKMPパケットの処理が行われるたびに、コンソールにデバッグ情報が表示されます。デバッグオプションを有効にするには、ENABLE ISAKMP DEBUGコマンドを使います。


次にPKTオプションを有効にしたときの画面表示例を示します。PKTは、ルーターが送受信するISAKMPメッセージをデコードして詳細に表示するオプションです。ISAKMP/IKEネゴシエーションの様子を詳しく観察することができます。


■ IPsecポリシーのデバッグオプションを有効にすると、IPパケットに対してIPsecの処理が行われるたびに、コンソールにデバッグ情報が表示されます。デバッグオプションを有効にするには、ENABLE IPSEC POLICY DEBUGコマンドを使います。




 

統計カウンター

以下の各コマンドでは、IPsecやISAKMPに関する統計カウンターを確認することができます。多くのカウンターはルーターの内部処理にかかわる非常に細かい情報ですが、通信上のトラブルシューティングに役立つものもあります。

■ IPsecの全般的な動作に関するカウンターはSHOW IPSEC COUNTERSコマンドで確認できます。COUNTERSパラメーターで特定のカウンターだけを表示させることもできます。


■ ISAKMP関連の統計カウンターはSHOW ISAKMP COUNTERSコマンドで確認できます。


■ ISAKMP SAのネゴシエーション(フェーズ1)に失敗する場合は、Mainモード(MODE=MAINのとき。デフォルト)またはAggressiveモード(MODE=AGGRESSIVE)のカウンターに注目してください。


■ ISAKMP SAは確立できたが、IPsec SAのネゴシエーション(フェーズ2)に失敗する場合は、QUICKモードのカウンターに注目してください。


■ それぞれのIPsecポリシーでどのような処理が何回行われたかは、SHOW IPSEC POLICYコマンドのCOUNTERSオプションで確認できます。


■ IPsec SAの統計カウンターは、SHOW IPSEC SAコマンドのCOUNTERSオプションで確認できます。








(C) 2003 - 2009 アライドテレシスホールディングス株式会社

PN: J613-M3069-03 Rev.L