Cisco IPsecの設定方法

Cisco IPsecの設定方法

Cisco IPsecの設定方法

IPsecについてです。

 

ASA5505でのIPsec設定は以下のページに記載しました。

 

参照サイト

 

 

IPsecの特徴

①ネットワーク層で動作するため、上位層で暗号化を意識する必要無し。

 

②IPレベルで暗号化できる。

 

③インターネットVPN(インターネットを介した拠点間で暗号化データを
 カプセリング/トンネリングし通信をする方法)でよく使用される。

 

 

ISAKMAP(アイサカンプ,アイサキャンプ)について

Internet Security Association and Key Management Protocolの略。

①IPsecのIKEの中で使われる。鍵交換先の認証と、
鍵交換の構造及びSAの生成を規定する仕様。
IKEはInternet Key Exchage略。

 

②ISAKMPは2つのフェーズで2つのSAを生成する。

 

③フェーズ1は鍵交換方式と鍵交換に用いる
暗号/認証方式をネゴシエーション(事前に折衝)する。

 

④フェーズ2でAH,ESPの使用有無と暗号/認証方式等を
ネゴシエーションする。

 

 

IPsecの動作

①IKEフェーズ1  ISAKMP SAを確立する。

 

②IKEフェーズ2  フェーズ1で作成したISAKMP SA内でIPsec SAを確立する。

 

③IPsecでの暗号通信 フェーズ2で作ったIPsec SA内でパケットを通信する。

 

IKEフェーズ1

以下の動作を行ないます。

・SAを確立する相手の認証

 

・フェーズ2の通信を安全に行う為の共有秘密鍵の生成

 

・ISAKMP SAの確立

 

・認証(Pre-Shared Key認証/公開鍵暗号化認証/デジタル署名認証)

 

 

フェーズ1(ISAKMP SA)には2種類有る。

 

 

メインモード

・ID情報を暗号化して送信する。

 

・メインモードでは送信元IPアドレスをIDとして実装している。

 

・どちらも固定IPの時に使用する。
両拠点に固定グローバルIPのVPN機器を置いている場合等のイメージ。

 

 

アグレッシブモード

・ID情報は暗号化されない。

 

・メインモードよりセキュリティが低い

 

・一方が固定IP、もう一方が動的IPの時に使用する。
出先のノートPCから拠点の自PCに接続する等のイメージ。

 

 

ディフィー・ヘルマン鍵共有/交換(Diffie-Hellman key exchange)

 

事前の秘密の共有無しに、盗聴の可能性のある通信路を使って、
暗号鍵の共有を可能にする暗号プロトコルである。
この鍵は、共通鍵暗号方式の鍵として使用可能である。

 

引用先

 

Diffie-Hellman Groupには、1(768-bit)と、2(1024-bit)と
5(1536-bit)の3種類があります。
VPNピアと設定が異なる場合は、"Group 1"で動作します。

 

引用先

 

 

フェーズ2(IPSec SA)

フェーズ1で作成したISAKMP SA内でIPsec SAを確立します。
内容は、IPSec SAの暗号化の方式や鍵生成に必要となる
情報や鍵の有効期限等。

 

IKEキープアライブ

対向が動的IPアドレスの場合で、
IP変更などで切断時、再接続が可能。
「アグレッシブモード」の場合に必要な機能になります。

 

リキー(ReKey)

IPSecではトンネルを張り直す。その有効期限を設定する。
経過時間かパケットの量で設定する。
DHCPの有効期限と少し考え方が似てるかもしれない。

 

 

VPNのモード

 

トランスポートモード

IPパケットのペイロード部(データ)が処理の対象。
なので送受信端末共にIPsec対応である必要がある。
スループットの低下が少ない。

 

トンネルモード

どちらか一方の終端にセキュリティ・ゲートウェイが
ある場合に必ず使用する。
プライベートIPヘッダを含めたIPパケットを暗号化して
ペイロード(送信データ)とし、パブリックIPヘッダを
つけて送信。

 

 

認証・暗号化での2つのプロトコル

AH Authentication Headerの略。パケットの認証のみ。
ESP Encapsulated Security Payloadの略。パケットの認証と暗号化。

 

 

なので4つの組み合わせが有る。

・AH トランスポートモード

 

・AH トンネルモード

 

・ESP トランスポートモード

 

・ESP トンネルモード

 

 

暗号化アルゴリズム

DES<3DES<AES

 

 

認証アルゴリズム

MD5 128bitのハッシュ値< SHA-1 160bitのハッシュ値 <HMAC

 

 

IPsec実際の設定について

 

参照サイト

 

 

今回はルーターの認証にPre-Shared Keyを使います。
ルータは4台ともCisco7200、
IOSはc7200-advipservicesk9-mz.124-6.T.binです。

 

設定は以下の構成で試行しました。

 

R1(config)#crypto isakmp policy 1
^
% Invalid input detected at '^' marker.

となる場合はIOSがIPsecに対応していません。

 

 

対象のトラフィックの定義

まず、対象のトラフィックを定義します。

R1(config)#access-list 100 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255

※以後のipsec設定で使用するため、denyを使用する場合は
「ブロック」では無く「VPNの対象外」との動作となります。

 

 

IKEフェーズ1の定義

IKEフェーズ1の定義に入ります。
config-isakmpモード。

R1(config)#crypto isakmp policy 1

※1~10000迄で設定可能、1が最優先です。

 

 

認証方式

認証には「事前共有鍵」を使用することにしました。

R1(config-isakmp)#authentication pre-share

・pre-share

 

・rsa-encr

 

・rsa-sig

が有ります。

 

R1(config-isakmp)#authentication ?
pre-share Pre-Shared Key
rsa-encr Rivest-Shamir-Adleman Encryption
rsa-sig Rivest-Shamir-Adleman Signature

 

 

暗号化アルゴリズム

暗号化アルゴリズムは「3DES」を使用することにしました。
R1(config-isakmp)#encryption 3des

・3des

 

・aes

 

・des

が有ります。

 

R1(config-isakmp)#encryption ?

3des Three key triple DES
aes AES - Advanced Encryption Standard.
des DES - Data Encryption Standard (56 bit keys).

 

 

ディフィー・ヘルマン鍵共有/交換のグループ

ディフィー・ヘルマン鍵共有/交換のグループは「2」を使用することにしました。

R1(config-isakmp)#group 2

・1

 

・2

 

・5

が有ります。

 

R1(config-isakmp)#group ?
1 Diffie-Hellman group 1
2 Diffie-Hellman group 2
5 Diffie-Hellman group 5

 

 

認証アルゴリズム

認証アルゴリズムは「sha」を使用することにしました。
R1(config-isakmp)#hash sha

・md5

 

・sha
が有ります。

 

R1(config-isakmp)#hash ?
md5 Message Digest 5
sha Secure Hash Standard

 

 

有効期限の設定

有効期限を設定します。
デフォルトは1日の86400秒です。

 

R1(config-isakmp)#lifetime 86400
R1(config-isakmp)#lifetime ?
<60-86400> lifetime in seconds

 

 

関連付け

相手側ルータのIPアドレスとパスワード(共通鍵)を関連付けます。

R1(config)#crypto isakmp key abcde address 10.0.0.2

 

 

トランスフォーム セット

トランスフォーム セット(IPSecセキュリティプロトコルと
アルゴリズムの有効な組み合わせ)を定義します。

R1(config)#crypto ipsec transform-set AAAIPSEC esp-3des esp-sha-hmac
R1(cfg-crypto-trans)#

・ah-md5-hmac

 

・ah-sha-hmac

 

・comp-lzs

 

・esp-3des

 

・esp-aes

 

・esp-des

 

・esp-md5-hmac

 

・esp-null

 

・esp-seal

 

・esp-sha-hmac
が有ります。

 

R1(config)#crypto ipsec transform-set AAAIPSEC ?

ah-md5-hmac AH-HMAC-MD5 transform

 

ah-sha-hmac AH-HMAC-SHA transform

 

comp-lzs IP Compression using the LZS compression algorithm

 

esp-3des ESP transform using 3DES(EDE) cipher (168 bits)

 

esp-aes ESP transform using AES cipher

 

esp-des ESP transform using DES cipher (56 bits

 

esp-md5-hmac ESP transform using HMAC-MD5 auth

 

esp-null ESP transform w/o cipher

 

esp-seal ESP transform using SEAL cipher (160 bits)

 

esp-sha-hmac ESP transform using HMAC-SHA auth

 

 

 

通信モードの設定

通信モードを設定します。

R1(cfg-crypto-trans)#mode transport

・transport

 

・tunnel
が有ります。

 

 

R1(cfg-crypto-trans)#mode ?

transport transport (payload encapsulation) mode

 

tunnel tunnel (datagram encapsulation) mode

 

 

IPSEC SAの設定(まず暗号マッププロファイルの作成)

暗号マッププロファイルの作成を行います。
シーケンス番号は1~65535です。

 

R1(config)#crypto map BBBMAP 1 ipsec-isakmp

% NOTE: This new crypto map will remain disabled until a peer
and a valid access list have been configured.

 

 

ipsecに使用するアクセスリストの指定

ipsecに使用する先程のアクセスリストを番号か名前で指定します。

R1(config-crypto-map)#match address 100

 

 

ピアの設定

相手側ルーターのアドレスかホスト名を指定します。

R1(config-crypto-map)#set peer 10.0.0.2

 

 

トランスフォームセットの設定

先程のトランスフォームセットを指定します。

R1(config-crypto-map)#set transform-set AAAIPSEC

 

※もしIPSec SAの生存時間もデフォルトから変更するなら、KBか秒で指定します。

R1(config-crypto-map)#set security-association lifetime seconds 3600

 

R1(config-crypto-map)#set security-association lifetime kilobytes 1000

 

 

インターフェースへipsecポリシーを割り当て

最後に、インターフェースへipsecポリシーを割り当てます。

R1(config)#int fa0/0
R1(config-if)#crypto map BBBMAP
R1(config-if)#

*Sep 25 19:21:25.867: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON

 

 

IPsec SAの設定確認

IPsec SAの設定を見ます。

R1#show crypto ipsec transform-set

Transform set AAAIPSEC: { esp-3des esp-sha-hmac }
will negotiate = { Transport, },

 

 

ISAKMP SAの状態確認

ISAKMP SAの状態を見ます。

R1#show crypto isakmp sa

IPv4 Crypto ISAKMP SA
dst src state conn-id slot status

 

IPv6 Crypto ISAKMP SA

 

 

IPsec SAの状態確認

IPsec SAの状態を見ます。

 

R1#show crypto ipsec sa

interface: FastEthernet0/0
Crypto map tag: BBBMAP, local addr 10.0.0.1
protected vrf: (none)
local ident (addr/mask/prot/port):
(192.168.1.0/255.255.255.0/0/0)

 

remote ident (addr/mask/prot/port):
(192.168.2.0/255.255.255.0/0/0)

 

current_peer 10.0.0.2 port 500
PERMIT, flags={origin_is_acl,}
#pkts encaps: 0, #pkts encrypt: 0, #pkts digest: 0
#pkts decaps: 0, #pkts decrypt: 0, #pkts verify: 0
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0
#send errors 0, #recv errors 0
local crypto endpt.: 10.0.0.1, remote crypto endpt.: 10.0.0.2
path mtu 1500, ip mtu 1500
current outbound spi: 0x0(0)
inbound esp sas:
inbound ah sas:
inbound pcp sas:
outbound esp sas:
outbound ah sas:
outbound pcp sas:

 

 

相手側ルータの設定

相手側ルータも同じ設定を投入します。
access-listとset peerは対向ルータについての設定です。

 

以上でIPsecの基本設定は終了です。

 

 

IPsecの動作確認

 

パケットの送信

検証のため通信を発生させます。まずスタティックルートを入れておきます。
R1(config)#ip route 192.168.2.0 255.255.255.0 10.0.0.2
R2(config)#ip route 192.168.1.0 255.255.255.0 10.0.0.1
R3(config)#ip route 192.168.2.0 255.255.255.0 192.168.1.1
R4(config)#ip route 192.168.1.0 255.255.255.0 192.168.2.1

 

 

R3からR4へpingします。

R3#ping 192.168.2.100

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.2.100, timeout is 2 seconds:
..!!!
Success rate is 60 percent (3/5), round-trip min/avg/max = 120/124/128 ms

 

 

ISAKMP SAの設定確認

再度、ISAKMP SAの設定を見ます。

 

R1#show crypto isakmp sa

IPv4 Crypto ISAKMP SA
dst src state conn-id slot status
10.0.0.2 10.0.0.1 QM_IDLE 1001 0 ACTIVE

 

IPv6 Crypto ISAKMP SA

 

 

IPsec SAの設定確認

再度、IPsec SAの設定を見ます。

 

R1#show crypto ipsec sa

interface: FastEthernet0/0
Crypto map tag: BBBMAP, local addr 10.0.0.1

 

protected vrf: (none)
local ident (addr/mask/prot/port):
(192.168.1.0/255.255.255.0/0/0)

 

remote ident (addr/mask/prot/port):
(192.168.2.0/255.255.255.0/0/0)

 

current_peer 10.0.0.2 port 500
PERMIT, flags={origin_is_acl,ipsec_sa_request_sent}
#pkts encaps: 4, #pkts encrypt: 4, #pkts digest: 4
#pkts decaps: 3, #pkts decrypt: 3, #pkts verify: 3
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0
#send errors 1, #recv errors 0

 

local crypto endpt.: 10.0.0.1, remote crypto endpt.: 10.0.0.2
path mtu 1500, ip mtu 1500
current outbound spi: 0xA65E995(174451093)

 

inbound esp sas:
spi: 0xBC4C973F(3159136063)
transform: esp-3des esp-sha-hmac ,
in use settings ={Tunnel, }
conn id: 1, flow_id: SW:1, crypto map: BBBMAP
sa timing: remaining key lifetime (k/sec): (4404850/3588)
IV size: 8 bytes
replay detection support: Y
Status: ACTIVE

 

inbound ah sas:

 

inbound pcp sas:

 

outbound esp sas:
spi: 0xA65E995(174451093)
transform: esp-3des esp-sha-hmac ,
in use settings ={Tunnel, }
conn id: 2, flow_id: SW:2, crypto map: BBBMAP
sa timing: remaining key lifetime (k/sec): (4404850/3587)
IV size: 8 bytes
replay detection support: Y
Status: ACTIVE

 

outbound ah sas:

 

outbound pcp sas:

 

 

IPsecとIKEの概要確認

IPsecとIKEの概要を見ます。
R1#show crypto engine connection active

Crypto Engine Connections

 

ID Interface Type Algorithm Encrypt Decrypt IP-Address
1 Fa0/0 IPsec 3DES+SHA 0 3 10.0.0.1
2 Fa0/0 IPsec 3DES+SHA 4 0 10.0.0.1
1001 Fa0/0 IKE SHA+3DES 0 0 10.0.0.1

 

 

パケットキャプチャ

パケットキャプチャは以下です。

 

 

 

 

※Protocol LOOPと有るのはキープアライブです。
機器にもよりますがおよそ下位ポートではデフォルトで送信しています。

 

以下の図解が分かりやすいです。
L2ループ対策

 

キープアライブについて

 

送信したポートにキープアライブ パケットがループバックされると、ループバック
エラーが発生します。デフォルトでは、すべてのインターフェイスに対して、
スイッチはキープアライブを送信します。
ネットワークにはスパニング ツリーでブロックされていない論理ループが存在するので、
通常は、デバイスが自分の発信元インターフェイスにパケットをループバックできます。
自分が送出したキープアライブ パケットを発信元インターフェイスが受信すると、
スイッチによってそのインターフェイスがディセーブル(errdisable)にされます。

 

引用先 Cisco IOS プラットフォームでの errdisable ポート状態からの復旧