(NW)IPSec設定してみる

投稿者: | 2020年8月23日
皆さんこんにちは。

今回はIPSecの設定をやってみようと思います。
これまで言葉は知っていて何となくの「L3での暗号化だよね?」ぐらいの知識しかありませんでした。以前GREの設定を行った際にIPSecと組み合わせて使うことが一般的ということを知ったので一度ちゃんと調べてみようと思った次第です。

結構ボリュームがあって理解するのが大変でしたが今までよりは理解が深まったようにも思います。

やることとしては、

1, ルータ2台にIPSecの設定をいれる
    – トンネルモードで動作させる
2, ルータ1 / ルータ2 の間でIPSecトンネルを利用してペイロードが暗号化されていることを確認する
3, もろもろ確認

ルータ設定

動作確認

PC1 –> PC2 にPINGを飛ばしてみます。
IPSecがうまく設定できて入れば、途中経路でパケットを覗き見したときにIPペイロードが安吾浮かされているはずです。 Pingが飛びました。
IPペイロードも暗号化されていることが確認できました。
トンネルモードの動作で、新しくIPヘッダを付け替えてるので、送信元、宛先IPともにIPSecトンネルの終端装置になっていることが分かります。
次にルータ側をもろもろ確認したいと思います。
まず、SA(セキュリティ・アソシエイト)の状態を確認します。
このSAが仮想的な経路とみなされて、暗号化されたデータがやり取りされる見たいです。TCPのセッション的な立ち位置っぽい。 よく確認すると、以下のとおり、inboundとoutboundでそれぞれSA(仮想的な経路)があることが分かります。
IPSecでは行きと帰りで別々の経路を用意する必要があるみたいです。 それぞれ、SPIの値が設定されています。SPIはSAのデータベース(SAD)から対象のパケットがどのSAで復号する必要があるかを検索するときに利用するキーのようなものだと理解しています。(ちゃんとあってるかは微妙)
そのため、ESPヘッダの中にもSPIが入っていることが確認できます。

(OUTBOUND: 1.1.1.1 –> 1.1.1.2)※Pingを打ったときの行きパケット
SPI : 0x7A7452CC
(OUTBOUND: 1.1.1.2 –> 1.1.1.1)※Pingを打ったときの戻りパケット
SPI : 0xF26ED36F
ざっくりと自分なりのIPSecトンネルモードのシーケンスをまとめるとこんな感じです。

1, SPD(セキュリティポリシーDB)にマッチしたパケットを検知(IPSecで暗号化する:PROTECT
2, SADを検索して送信元IP/宛先IPにマッチするSAがあるかを検索する
3, 初回でSAが生成されてないので、IKEを使って、LocalルータとRemoteルータにそれぞれSAを作成する
4, SAの暗号ポリシーにしたがってIPペイロードを暗号化する
    – 暗号化で利用する共通鍵などはIKEで設定されたものを利用する
5, Remoteルータからの戻りの際も戻りようのSAを構築するので、「3, 4,」のSA構築作業がRemoteルータでもう一度行われる


以上で今回の動作確認は終わりたいとおもいます。

いままで、トンネルモードとトランスポートモードの違いもいまいち理解してませんでしたが今回の設定を通して何となくですが理解することができたように思います。

IKEの細かいシーケンスの確認やGRE over IPSec の設定なんかもまたそのうちやってみようかとおもいます。

それではまた。

参考:
http://www5e.biglobe.ne.jp/aji/3min/ex/sup21.html
https://www.cisco.com/c/ja_jp/support/docs/routers/1700-series-modular-access-routers/71462-rtr-l2l-ipsec-split.html
https://www.cisco.com/c/ja_jp/support/docs/security-vpn/ipsec-negotiation-ike-protocols/5409-ipsec-debug-00.html