VPNの設定
IKE(Internet Key Exchange)
IPsecで暗号通信を行うために必要な暗号化方式や鍵の取り決めを自動化するプロトコル。
IKEネゴシエーション
VPNを張る両端の機器がIKEを使って暗号化や認証のやり方をどうするかをすり合わせるプロセス。
→機械同士がパラメータを交渉する流れのこと
2つのフェーズで構成されている
フェーズ1
ISAKMP SAの確立 → 安全に話せる通信路ができる
※ISAKMPとは (Internet Security Association and Key Management Protocol)はIPsecなどで使うセキュリティアソシエーション(SA)の作成管理を行うためのフレームワーク
※SAとは (Security Association)は暗号通信を行うためのセッション(論理的な契約情報)のこと 暗号通信の取り決め情報のこと
フェーズ2
実際のデータ通信を保護するIPsec SAを確立 → 実際に暗号化されたVPN通信が始められる
※IPsecとは (IP Security)はIPレベルで通信を暗号化・認証して安全にやり取りするためのプロトコル群。 IP通信を安全にするためのプロトコル群
IKEプロポーサル
IKEネゴシエーションで使う暗号認証の設定パラメータをまとめた提案セットのこと
0. 基本設定
R1
Router>enable
Router#conf t
Router(config)#hostname R1
R1(config)#ip route 0.0.0.0 0.0.0.0 200.200.200.2 →スタティックデフォルトルートの設定
R1(config)#int f0/0
R1(config-if)#ip address 172.16.0.1 255.255.0.0
R1(config-if)#no shutdown
R1(config-if)#int f0/1
R1(config-if)#ip address 200.200.200.1 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#end
R1#copy run start
R2
Router>enable
Router#conf t
Router(config)#hostname R2
R2(config)#ip route 0.0.0.0 0.0.0.0 200.200.200.2 →スタティックデフォルトルートの設定
R2(config)#int f0/0
R2(config-if)#ip address 172.17.0.1 255.255.0.0
R2(config-if)#no shutdown
R2(config-if)#int f0/1
R2(config-if)#ip address 200.200.200.2 255.255.255.0
R2(config-if)#no shutdown
R2(config-if)#end
R2#copy run start
IPsec対象トラフィックの定義(ACLの設定)
R1(config)#access-list100 permit ip 172.16.0.0 0.0.255.255 172.17.0.0 0.0.255.255
送信元:172.16.0.0/16(R1拠点LAN)
宛先:172.17.0.0/16(R2拠点LAN)
ここで定義されたトラフィックのみ暗号化される
拠点LAN⇔拠点LANの通信だけをVPNトンネルに通す
0.0.255.255になってるのはワイルドカードマスクだから
ワイルドカードマスク → どこを無視するのかを表す
0ビットの部分 = 完全一致が必要
1ビットの部分 = 自由
access-list 100の100はアクセスリスト番号
Cisco IOSでは、拡張ACL/標準ACLを番号で区別する
標準ACL→1~99,1300~1999 宛先IPだけを条件にできるシンプルなACL
拡張ACL→100~199,2000~2699 送信元IP,宛先IP,プロトコルなど、ポート番号まで細かく指定可能
VPNの暗号化対象を指定するときは、送信元ネットワーク+宛先ネットワークを両方指定する必要があるため、拡張ACLを使う
1.IKEプロポーサルポリシーの設定
IKEにはバージョン1(IKEv1)とバージョン2(IKEv2)がある。
< 主な違い(IKEv2目線)>
・ラウンドトリップが少なく接続が速い
IKEv1:フェーズ1+フェーズ2で最大5往復以上
IKEv2:基本は2往復で完了
・単一SAで複数サブネット保護
IKEv1:サブネットごとにSAが必要
IKEv2:1つのSAで複数サブネットをまとめて保護可能
基礎練習のためIKEv1で設定する
1.1 プライオリティ
IKEプロポーサルの優先順位を決めるための番号
IKEは番号が小さいものほど優先的に試される
有効範囲:1 ~ 10000
ここの1はプライオリティ(優先度)を表している
R1(config)#crypto isakmp policy 1
1.2 暗号化アルゴリズム
鍵交換の時に、どの暗号方式で通信内容を守るかを決める
・AES-128 / AES-192 / AES-256
現在の標準的な共通鍵暗号方式
数字は鍵の長さを表す 長いほどセキュリティは高いが処理は重くなる
実務ではAES-128かAES-256を使うのが一般的
・DES
古い暗号方式 鍵長は56bit
セキュリティが弱く、現在ではほぼ使われていない
・3DES
DESを3回繰り返して強化した方式
R1(config-isakmp)#encryption aes
1.3 ハッシュアルゴリズム
VPNのやり取りが壊れていないか・改ざんされていないかを保証するために必要
・SHA(Secure Hash Algorithm)
MD5より強度が強く、改ざん検出に優れる
IKEv1でよく使われるのはSHA-1
実務ではさらに強いSHA-2が使われることが多い
・MD5(Message Digest 5)
処理が速いがセキュリティは弱い
R1(config-isakmp)#hash sha
IPsecやIKEのSHAはほとんどがHMAC付きSHAを意味する
→ ただのハッシュ関数だと誰でも計算できてしまい、改ざんは検出できるが正しい相手かどうかは確認できない
HMAC-SHAは暗号カギを混ぜてハッシュを計算するため、正しい鍵を持つ人しか同じ結果を出せない → 改ざん検出+認証が可能
1.4 係数グループ
IKEで鍵交換をするときに使われるのがDiffie-Hellman(DH)グループ
< Diffie-Hellman グループとは >
2つのVPN機器(ピア)が実際に秘密鍵を送らずに共有鍵を作る仕組み
グループ番号が大きいほど鍵の長さが長くなる
→ セキュリティ強度が強くなる代わりに、処理に時間がかかるという特徴がある
・グループ 1(768ビット)
古い。すでに非推奨。ASAでもサポートされない。
・グループ 2(1024ビット)
昔は標準。いまは最低限レベル。CSMのデフォルト。
・グループ 5(1536ビット)
グループ2より強いが、最近は推奨されない。AESを使うなら最低これ以上。
・グループ 7(ECC 163ビット)
楕円曲線暗号(ECC)。効率的だけど、古めのECCサイズ。
・グループ 14(2048ビット)
いま 一般的に推奨される最低限。ASAもデフォルトがここ。
・グループ 15(3072ビット)
さらに強い。192ビット鍵の保護に推奨。
・グループ 16(4096ビット)
かなり強力。256ビット鍵の保護に推奨。ただし処理が重い。
Cisco1841はサポートされるDHグループが古いため、group14は非対応
group1とgroup2が対応されているため、ここではgroup2を設定
R1(config-isakmp)#group2
1.5 保存期間
セキュリティアソシエーション(SA)が有効でいられる時間のこと
SA = この暗号方式・鍵で通信しますという約束事
この時間が切れると自動的に再交渉が行われ、新しい鍵が作られる
有効範囲:60 ~ 2147483647秒
デフォルトは86400秒
R1(config-isakmp)#liftetime 86400
1.6 認証方式
VPNを張るときに相手は本物のピアなのかを確認するための仕組み
IKEフェーズ1の最後で認証を行って信頼できる相手かを確認する
・事前共有キー(Pre-Shared Key, PSK)
双方の機器に同じパスフレーズ(秘密キー)をあらかじめ設定しておく方法
ネゴシエーションのときにそのキーを使って正しい相手かを確認する
簡単・設定が楽なことから中小規模のVPNでよく使われる
・証明書(RSA Certificate)
公開鍵基盤(PKI)を利用し、CA(認証局)が発行するデジタル証明書を使って認証する
強固なセキュリティ、否認防止が可能
大規模VPNで一般的
R1(config-isakmp)#authentication pre-share
1.7 カテゴリ
管理・識別用のラベル
VPNやIKEポリシーを複数作ったときに、どのポリシーがどの用途かを管理しやすくするために使う
練習環境のため省略
※コマンドの打ち方の参考
https://www.cisco.com/c/en/us/td/docs/security/asa/asa72/configuration/guide/conf_gd/ike.html?utm_source=chatgpt.com
2.IPsecプロポーサルポリシーの設定
2.1 Crypto Map Type
< Crypto Mapとは >
IPsecの設定においてセキュリティポリシーとセキュリティの対象となるトラフィックを関連付ける設定。設定することでVPNピアとどのように通信を保護するかを決定し、VPNトンネルを介して通信するトラフィックの保護を行う。
・Static Crypto Map
ポイントツーポイントや完全メッシュ型で使う
ルータ側で相手のIP、トランスフォームセット、ACLなどを事前に固定的に書く
一般的な拠点間VPN
・Dynamic Crypto Map
ハブ&スポーク型VPNで使う
R1(config)#crypto map MAP-IPSEC 10 ipsec-isakmp
10はシーケンス番号
ルータはこの番号の小さい順に条件をチェックしてマッチしたらそのエントリの設定でVPNを張る
R1(config-crypto-map)#set peer 200.200.200.2
VPNの相手先のIPを指定
R1(config-crypto-map)#set transform-set TS-IPSEC
使う暗号化方式・認証方式の組み合わせを指定
R1(config-crypto-map)#match address 100
ACL100で定義した暗号化対象トラフィックを指定
2.2 トランスフォームセット
VPNのフェーズ2で使われる暗号と認証方法をまとめたセット
IPsecの暗号化方式とIPsecの認証方式をセットにして定義する
R1(config)#Crypto ipsec transform-set TS-IPSEC esp-aes esp-sha-hmac
2.3 Lifetime
IPsecセキュリティアソシエーション(SA)の有効期限の説明
VPNで使う暗号化セッションにはいつまで有効かを決めるルールーがある
・Seconds(秒)
そのSAが生きられる時間
デフォルトは3600秒
・Kilobytes(KB)
そのSAで使える暗号化データの上限
デフォルトは4,608,000KB
R1(config-crypto-map)#set security-association lifetime seconds 3600
3.インターフェイスへIPSecポリシーを適用
R1(config)#interface f0/1
R1(config-if)#crypto map MAP-IPSEC
R1(config-if)#end
R1#copy run start
PC1からPC2にpingを送信

二回目のpingはすべて成功している
VPNの接続を切断するために、2点間を接続するVPNネットワークを検証する前にネットワーク上のすべての機器を再起動させる
IPsec通信を行う前にR1のISAKMP SAとIPSEC SAの様子を確認
ISAKMP SAの確認
IPSEC SAの確認

[inbound esp sas][outbound esp sas]に情報が表示されていないのでIPSECが確立されていないことが分かる
PC1からPC2にpingを行う
ping実行後のISAKMP SAの確認

エントリーが表示されているため、確立されていることが確認できる
ping実行後のIPSEC SAの確認


「inbound esp sas」、「outbound esp sas」に情報が表示されているため、確立されていることが分かる
ISAKMP SAの設定の確認

Protectionのところが現在の設定でDefaultのところがデフォルト
デフォルトの設定を使用する場合はコマンドの指定を省略できる
IPSEC SAの設定の確認
設定したトランスフォームセットの名前「TS-IPSEC」が確認できる
VPNセレクタの設定情報、フェーズ2のセキュリティポリシー情報の確認
VPNトラフィックの確認
シミュレーションモードに切り替え、PC1からPC2にpingコマンドを実行する
PC1からR1に移動した封筒をクリックする

「Outbound PDU Details」タブをクリックし、「PDU Formats」に注目する

「ESP」ヘッダーが確認できる
R1のネットワークを変えた場合
PC1のIPアドレスとR1のLAN側IPアドレスを172.18.0.0/16内に設定する
PC2にpingを送信してVPN経由で通信できるかを確認する
pingが通ったため、通信ができていることが分かる
VPN経由かどうかSAを確認をする
SAが表示されないため、通信は物理ネットワークを経由して行われており、VPNトンネルは確立していないことが分かる
参考文献








