Cisco IOSのIPsec設定要素
Cisco IOS / IOS XE の IPsec 設定では、IKE 用の部品、IPsec 用の部品、インターフェースへ適用する部品を分けて定義する。
IPsec の概念では、IKE と SA、ESP / AH、トンネルモードを理解する必要がある。Cisco IOS / IOS XE の設定では、それらが proposal、policy、keyring、profile、transform-set などのコマンド要素として現れる。
IKEv2の設定要素
Section titled “IKEv2の設定要素”IKEv2 では、通信開始前に相手認証、暗号方式の合意、鍵交換、SA の作成を行う。Cisco IOS / IOS XE では、主に次の要素に分けて設定する。
| 要素 | 役割 |
|---|---|
| IKEv2 proposal | IKEv2 SA を守る暗号方式、完全性確認方式、PRF、DH グループの候補 |
| IKEv2 policy | どの proposal を IKEv2 ネゴシエーションで使うかをまとめる設定 |
| IKEv2 keyring | 対向 peer と事前共有鍵を対応づける設定 |
| IKEv2 profile | 対向の識別条件、認証方式、keyring をまとめる設定 |
IKEv2 proposal は、IPsec の実データ用の暗号方式ではない。IKEv2 の制御通信を守るための方式である。
PRFとAEAD
Section titled “PRFとAEAD”PRF(Pseudo-Random Function)は、IKEv2 の鍵素材や認証処理に使う値を生成するための変換である。暗号化方式、完全性確認方式、DH グループとは別の proposal 要素として区別する。
AES-CBC と SHA-256 を組み合わせる場合、Cisco IOS / IOS XE では PRF を省略すると、指定した integrity algorithm と同じ SHA-256 が PRF に使われる。明示する場合は proposal 内で prf sha256 を指定する。
AES-GCM は、暗号化と完全性確認を一つの方式で行う AEAD である。AES-GCM を使う proposal では独立した integrity を指定せず、PRF は別に指定する。IPsec 側で ESP AES-GCM を使う場合も、別の ESP HMAC を組み合わせない。
| 方針 | IKEv2 proposal | IPsecデータ保護 |
|---|---|---|
| IOSv・互換性重視の例 | AES-CBC-256、SHA-256、group 14。PRF を明示するなら SHA-256 | ESP AES-CBC-256 と HMAC-SHA-256 |
| 対応機器での通常推奨例 | AES-GCM、PRF SHA-256、group 19 / 20 などの ECDH | ESP AES-GCM |
どの方式を使う場合も、対向機器との共通アルゴリズム、組織の暗号ポリシー、IOS / IOS XE の対応状況を確認する。利用可能な候補は ?、設定された proposal は show crypto ikev2 proposal で確認する。
IKEv2設定の流れ
Section titled “IKEv2設定の流れ”flowchart TD
subgraph ike["IKEv2 control plane"]
proposal["IKEv2 proposal: encryption, integrity, PRF, DH"]
policy["IKEv2 policy: selects proposal"]
keyring["IKEv2 keyring: peer and pre-shared key"]
ikeprofile["IKEv2 profile: identity and authentication"]
ikesa["IKEv2 SA"]
end
subgraph ipsec["IPsec data plane"]
transform["transform set: ESP or AH algorithms"]
ipsecprofile["IPsec profile: binds transform set and IKEv2 profile"]
ipsecsa["IPsec SA"]
end
proposal --> policy --> ikesa
keyring --> ikeprofile --> ikesa
ikeprofile --> ipsecprofile
transform --> ipsecprofile --> ipsecsa
IKEv2 profile は「この相手には、どの認証方式と鍵情報を使うか」を決める。IPsec profile から参照されることで、実際の IPsec トンネル設定と結びつく。
IPsecの設定要素
Section titled “IPsecの設定要素”IKE が鍵や SA を準備したあと、実際のデータパケットは ESP で保護される。Cisco IOS / IOS XE では、IPsec 側の設定を次の要素で表す。
| 要素 | 役割 |
|---|---|
| transform set | ESP / AH で実データを保護する方式を定義する |
| IPsec profile | transform set、PFS、IKEv2 profile などをまとめる |
| tunnel protection | Tunnel インターフェースへ IPsec profile を適用する |
transform set は、実際に流れるデータパケットをどう保護するかを決める。IKEv2 proposal が IKEv2 の制御通信用であるのに対し、transform set は IPsec のデータ通信用である。
esp-aes 256 は、ESP の暗号化に 256 bit 鍵の AES-CBC を使う指定である。esp-sha256-hmac は暗号化方式ではなく、HMAC-SHA-256 で ESP パケットの改ざんを検出し、データ送信元を認証する指定である。両方を組み合わせると、AES-CBC が機密性、HMAC-SHA-256 が完全性とデータ送信元認証を担当する。
VTIとGREの違い
Section titled “VTIとGREの違い”Cisco の手順では、IPsec をどのインターフェースへ適用するかも重要になる。
| 構成 | 役割 |
|---|---|
| VTI | tunnel mode ipsec ipv4 の Tunnel インターフェース。IPsec 自体を仮想インターフェースとして扱う |
| GRE over IPsec | GRE Tunnel インターフェースを作り、その GRE パケットを IPsec で保護する |
| crypto map | インターフェースに crypto map を適用し、ACL で暗号化対象通信を指定する方式 |
crypto map で使う ACL は、パケットフィルタとしての ACL と同じ構文を使うが、役割は interesting traffic の指定である。ACL の基本は 標準ACLと拡張ACL を参照する。
このノートでは、基本は VTI を使う。GRE over IPsec は、GRE で仮想的な経路を作り、その GRE パケットを IPsec で守る構成として扱う。
flowchart TB
subgraph vti["VTI: IPsec acts as the tunnel interface"]
vroute["Route to remote LAN"] --> vtunnel["Tunnel0 with mode ipsec ipv4"]
vtunnel --> vprofile["Apply IPsec profile"]
vprofile --> vesp["ESP protects the inner IP packet"]
end
subgraph gre["GRE over IPsec: GRE creates the tunnel"]
groute["Route to remote LAN"] --> gtunnel["Tunnel0 with mode gre ip"]
gtunnel --> grepacket["GRE packet"]
grepacket --> gprofile["Apply IPsec profile"]
gprofile --> gesp["ESP protects the GRE packet"]
end
vesp --> wan["WAN or Internet"]
gesp --> wan
VTI では、IPsec 用の Tunnel インターフェースへ経路を向ける。GRE over IPsec では、GRE がトンネルを作り、IPsec は GRE パケットの保護を担当する。
IKEv1での対応
Section titled “IKEv1での対応”IKEv1 では、IKEv2 proposal / policy / keyring / profile とは名前や分け方が違う。
| IKEv2の要素 | IKEv1で近い要素 |
|---|---|
| IKEv2 proposal | ISAKMP policy |
| IKEv2 policy | ISAKMP policy の優先順位 |
| IKEv2 keyring | crypto isakmp key |
| IKEv2 profile | ISAKMP profile、または peer address による事前共有鍵設定 |
| IPsec transform set | IPsec transform set |
| IPsec profile | IPsec profile |
IKEv1 では crypto isakmp policy が Phase 1 の暗号方式、ハッシュ、認証方式、DH グループをまとめて定義する。IPsec transform set は Phase 2、つまり実データを守る IPsec SA 側の方式を定義する。
よくある混乱
Section titled “よくある混乱”| 混乱 | 考え方 |
|---|---|
| proposal と transform set の違いが分からない | proposal は IKE 制御通信側、transform set は IPsec データ通信側 |
| profile が多すぎる | IKEv2 profile は相手認証まわり、IPsec profile は Tunnel へ適用する保護設定 |
| VTI と GRE over IPsec が混ざる | VTI は IPsec 自体を Tunnel にする。GRE over IPsec は GRE Tunnel を IPsec で保護する |
| SA を通信路だと思ってしまう | SA は通信をどう保護するかの条件であり、通信路そのものではない |