今回はLISPのxTRをMITM(Man In The Middle) Attackから保護する機能に関して説明します。
概要
xTRへのMITM Attack
xTRがEIDのRLOCを解決する際に、悪意のあるユーザが加工したMap Replyメッセージを送信することで、xTRのMap Cacheに不正なRLOCを埋め込むことが可能である。
この結果、xTRはトラフィックを悪意のあるユーザに転送してしまいます。つまり、MITM Attackが成功します。
LISP-SEC
LISP-SEC(LISP Security)を使用することで、EIDのRLOCを解決する際、ハッシュ値を生成してデータに付加するすることができます。
xTRがMAP Replyメッセージを受信後、格納されているハッシュ値を基にデータが改竄されていないか確認できます。
xTRはEIDのRLOCを解決する際、ワンタイムパスワードであるITR-OTK(Ingress Tunnel Router One Time Key)を生成します。
そして、ITR-OTKを付加したMap RequestメッセージをMR/MSに送信します。
MR/MSはMap RequestメッセージからITR-OTKを取り出し、HKDF(HMAC Key Derivation Function)と呼ばれる鍵導出関数を使用してMS-OTK(Mapping Server One Time Key)を生成します。
また、Mapping DatabaseからRLOC解決対象のEIDにマッチするEID-Prefixを取り出し、ITR-OTKとHMACを基に、EID-Prefixのハッシュ値であるEID-HMACを生成します。
その後、Map RequestメッセージからITR-OTKを削除し、代わりにEID-HMACとMS-OTKを付加して、転送します。
Map Requestメッセージを受信したxTRは、自身のRLOCとMS-OTKとHMACを基に、RLOCのハッシュ値であるPKT-HMAC(Packet HMAC)を生成します。
そして、EID-HMACとPKT-HMACを付加したMap Replyメッセージを返信します。
Map Replyメッセージを受信したxTRは、自身が生成したITR-OTKとHKDFを基に、MS-OTKを生成します。
また、HMAC、ITR-OTK、MS-OTK、Map Replyメッセージに格納されているEID-PrefixとRLOCを基に、EID-HAMCとPKT-HMACを生成します。
そして、生成したハッシュ値と、Map Replyメッセージに付加されているハッシュ値を比較し、等しい場合は、データは改竄されてないと判断し、EID-PrefixとRLOCをMap Cacheに格納します。
検証の基本設定
基本設定の内容
R1をMR/MS、R2とR3をxTRとして動作させます。
R2はEID-Prefixが10.1.1.0/24、RLOCが172.16.1.2のマッピング情報をR1に登録します。
R3はEID-Prefixが10.2.2.0/24、RLOCが172.16.1.3のマッピング情報をR1に登録します。
R2とR3でLISP-SECを有効にします。
基本設定
interface GigabitEthernet2
ip address 172.16.1.1 255.255.255.0
!
router lisp
service ipv4
map-server
map-resolver
exit-service-ipv4
!
site Site_1
authentication-key Zaq12wsx!@
eid-record 10.1.1.0/24
eid-record 10.2.2.0/24
exit-site
!
exit-router-lisp
interface GigabitEthernet2
ip address 172.16.1.2 255.255.255.0
!
interface GigabitEthernet3
ip address 10.1.1.2 255.255.255.0
!
router lisp
security
service ipv4
itr map-resolver 172.16.1.1
itr
etr map-server 172.16.1.1 key Zaq12wsx!@
etr
exit-service-ipv4
!
instance-id 0
service ipv4
eid-table default
database-mapping 10.1.1.0/24 172.16.1.2 priority 1 weight 50
exit-service-ipv4
!
exit-instance-id
!
exit-router-lisp
interface GigabitEthernet2
ip address 172.16.1.3 255.255.255.0
!
interface GigabitEthernet3
ip address 10.2.2.3 255.255.255.0
!
router lisp
security
service ipv4
itr map-resolver 172.16.1.1
itr
etr map-server 172.16.1.1 key Zaq12wsx!@
etr
exit-service-ipv4
!
instance-id 0
service ipv4
eid-table default
database-mapping 10.2.2.0/24 172.16.1.3 priority 1 weight 50
exit-service-ipv4
!
exit-instance-id
!
exit-router-lisp
interface GigabitEthernet2
ip address 10.1.1.4 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 10.1.1.2
interface GigabitEthernet2
ip address 10.2.2.5 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 10.2.2.3
設定内容と状態の確認
設定確認
MR/MSにはLISP-SEC用の特別な設定は不要です。
xTRではsecurityコマンドを設定することで、LISP-SECが有効になります。
router lisp
security
EID-PrefixとRLOCのマッピング情報登録時の様子
LISP-SECが有効なxTRがEID-PrefixとRLOCのマッピング情報を登録する際、S(LISP-SEC)ビットをセットしたMap Registerメッセージを送信します。
以下はR1がMap Registerメッセージを受信した際のデバックになります。Sビットがセットされていることが確認できます。
R1#debug lisp control-plane all
*May 18 23:21:00.152: [MS] LISP: Received Map-Register no proxy, map-notify, no merge, security, no mobile-node, not to-RTR, no fast-map-register, no EID-notify, ID-included, 1 record, nonce 0xEBCC4881-0x0E394AEF, key-id 1, auth-data-len 20, hash-function sha1, xTR-ID 0xF180E005-0x7DEB7B41-0x6FFC3231-0xCD92F0F5, site-ID unspecified, domain-id none, multihoming-id none
*May 18 23:21:00.153: [MS] LISP-0: Received Map-Register mapping record for IID 0 SVC_IP_IAF_IPv4 10.1.1.0/24 LCAF 254, ttl 0, action drop, authoritative, 0 locators.
以下はR2が送信したMap Registerメッセージになります。Sビットがセットされていることが確認できます。
R1のMapping Databaseを見ると、LISP-SECが有効なことが確認できます。
R1#show lisp site detail 10.1.1.0/24
LISP Site Registration Information
Site name: Site_1
Allowed configured locators: any
Allowed EID-prefixes:
EID-prefix: 10.1.1.0/24
First registered: 00:18:19
Last registered: 00:18:15
Routing table tag: 0
Origin: Configuration
Merge active: No
Proxy reply: No
Skip Publication: No
Force Withdraw: No
TTL: 1d00h
State: complete
Registration errors:
Authentication failures: 0
Allowed locators mismatch: 0
ETR 172.16.1.2:20646, last registered 00:18:15, no proxy-reply, map-notify
TTL 1d00h, no merge, hash-function sha1, nonce 0x3C5CACDF-0x261C6A46
state complete, security-capability
xTR-ID 0xF180E005-0x7DEB7B41-0x6FFC3231-0xCD92F0F5
site-ID unspecified
Domain-ID unspecified
Multihoming-ID unspecified
sourced by reliable transport
Locator Local State Pri/Wgt Scope
172.16.1.2 yes up 1/50 IPv4 none
宛先のEIDに対応するRLOC解決時の様子
R2が10.2.2.5のRLOCを解決する際の様子を確認します。
(WiresharkではLISP-SEC用のデータをデコードできないため、Wiresharkの結果は省略します。)
以下はR2がMap Requestメッセージを送信する際のデバックになります。ITR-OTKを格納したMap Requestメッセージを送信していることが確認できます。
R2#debug lisp control-plane all
*May 18 23:44:49.333: [XTR] LISP: Processing data signal for EID prefix IID 0 10.2.2.5/32
*May 18 23:44:49.334: [XTR] LISP-0: Remote EID IID 0 prefix 10.2.2.5/32, Change state to incomplete (sources: , state: unknown, rlocs: 0).
*May 18 23:44:49.336: [XTR] LISP-0: Remote EID IID 0 prefix 10.2.2.5/32, [incomplete] Scheduling map requests delay 00:00:00 min_elapsed 00:00:01 (sources: , state: incomplete, rlocs: 0).
*May 18 23:44:49.337: [XTR] LISP-0: Remote EID IID 0 prefix 10.2.2.5/32, Starting idle timer (delay 00:02:30) (sources: , state: incomplete, rlocs: 0).
*May 18 23:44:49.399: LISP-0: IID 0 Request processing of remote EID prefix map requests to IPv4.
*May 18 23:44:49.403: [XTR] LISP: Send map request type remote EID prefix
*May 18 23:44:49.404: [XTR] LISP: Send map request for EID prefix IID 0 10.2.2.5/32
*May 18 23:44:49.406: [XTR] LISP-0: Remote EID IID 0 prefix 10.2.2.5/32, Send map request (1) (sources: , state: incomplete, rlocs: 0).
*May 18 23:44:49.411: LISP-0: EID-AF IPv4, Sending authenticated map-request from 10.2.2.5 to 10.2.2.5 for EID 10.2.2.5/32, ITR-RLOCs 1, nonce 0x9D598E65-0xBF48C192 (encap src 172.16.1.2, dst 172.16.1.1).
以下はR1がMap Requestメッセージを受信した際のデバックになります。EID-HMACとMS-OTKを格納したMap Requestメッセージを転送していることが確認できます。
R1#debug lisp control-plane all
*May 18 23:44:49.560: [MS] LISP-0: Processing received Encap-Control(8) message on GigabitEthernet2 from 172.16.1.2:4342 to 172.16.1.1:4342.
*May 18 23:44:49.560: [MS] LISP-0: Processing received Map-Request(1) message on GigabitEthernet2 from 10.2.2.5:4342 to 10.2.2.5:4342.
*May 18 23:44:49.561: [MS] LISP-0: Received map request for IID 0 10.2.2.5/32, source_eid IID 0 10.1.1.4, ITR-RLOCs: 172.16.1.2, records 1, nonce 0x9D598E65-0xBF48C192.
*May 18 23:44:49.562: [MS] LISP-0: MS EID IID 0 prefix 10.2.2.0/24 SVC_IP_IAF_IPv4 site Site_1, Forwarding authenticated map request to ETR RLOC 172.16.1.3.
以下はR3がMap Requestメッセージを受信した際のデバックになります。EID-HMACとPKT-HMACを格納したMap Replyメッセージを返信していることが確認できます。
R3#debug lisp control-plane all
*May 18 23:44:49.535: [MS] LISP-0: Processing received Encap-Control(8) message on GigabitEthernet2 from 172.16.1.1:4342 to 172.16.1.3:4342.
*May 18 23:44:49.536: [MS] LISP-0: Processing received Map-Request(1) message on GigabitEthernet2 from 10.2.2.5:4342 to 10.2.2.5:4342.
*May 18 23:44:49.536: [MS] LISP-0: Received map request for IID 0 10.2.2.5/32, source_eid IID 0 10.1.1.4, ITR-RLOCs: 172.16.1.2, records 1, nonce 0x9D598E65-0xBF48C192.
*May 18 23:44:49.537: LISP: Processing map request record for EID prefix IID 0 10.2.2.5/32
*May 18 23:44:49.538: LISP-0: Sending authenticated map-reply from 172.16.1.3 to 172.16.1.2.
*May 18 23:44:49.539: [XTR] LISP: Processing mapping information for EID prefix IID 0 10.1.1.0/24
*May 18 23:44:49.539: [XTR] LISP-0: IAF IID 0 SVC_IP_IAF_IPv4, Not configured to accept unsolicited mapping.
以下はR2がMap Replyメッセージを受信した際のデバックになります。EID-HMACとPTK-HMACが格納されたMap Replyメッセージを受信していることが確認できます。
R2#debug lisp control-plane all
*May 18 23:44:49.435: [MS] LISP-0: Processing received Map-Reply(2) message on GigabitEthernet2 from 172.16.1.3:4342 to 172.16.1.2:4342.
*May 18 23:44:49.436: LISP: Received authenticated map reply nonce 0x9D598E65-0xBF48C192, records 1
*May 18 23:44:49.436: LISP-0: Processing Map-Reply mapping record for IID 0 SVC_IP_IAF_IPv4 10.2.2.0/24 LCAF 254, ttl 1440, action none, authoritative, 1 locator.
*May 18 23:44:49.437: LISP-0: 172.16.1.3 pri/wei/dID/mID=1/50/0/0 LpR.
*May 18 23:44:49.437: LISP-0: Map Request IID 0 prefix 10.2.2.5/32 remote EID prefix[LL], Received reply with rtt 32ms.
*May 18 23:44:49.438: [XTR] LISP: Processing mapping information for EID prefix IID 0 10.2.2.0/24
*May 18 23:44:49.439: [XTR] LISP-0: IAF IID 0 SVC_IP_IAF_IPv4, Persistent db: ignore writing request, disabled.
*May 18 23:44:49.439: [XTR] LISP-0: Remote EID IID 0 prefix 10.2.2.0/24, Change state to complete (sources: <map-rep>, state: unknown, rlocs: 0).
*May 18 23:44:49.439: [XTR] LISP-0: Remote EID IID 0 prefix 10.2.2.0/24, Starting idle timer (delay 00:02:30) (sources: <map-rep>, state: complete, rlocs: 0).
*May 18 23:44:49.439: [XTR] LISP-0: Remote EID IID 0 prefix 10.2.2.5/32, Change state to deleted (sources: <>, state: incomplete, rlocs: 0).
*May 18 23:44:49.440: [XTR] LISP: RIB Watch Group default 172.16.1.3/32 , created.
*May 18 23:44:49.440: [XTR] LISP: RIB Watch Group default 172.16.1.3/32 , scheduling RIB update.
*May 18 23:44:49.441: [XTR] LISP-0: Remote EID IID 0 prefix 10.2.2.0/24, RLOCs pending rwatch update, defer fwd update (sources: <map-rep>, state: complete, rlocs: 0).
*May 18 23:44:49.441: [XTR] LISP-0: Remote EID IID 0 prefix 10.2.2.0/24, 1 RLOCs pending rwatch update, defer fwd update (sources: <map-rep>, state: complete, rlocs: 0).
*May 18 23:44:49.441: [XTR] LISP-0: Remote EID IID 0 prefix 10.2.2.0/24, Recalculated RLOC status bits from 0x0 to 0x1 (sources: <map-rep>, state: complete, rlocs: 1).
*May 18 23:44:49.441: [XTR] LISP-0: Remote EID IID 0 prefix 10.2.2.0/24, 1 RLOCs pending rwatch update, defer fwd update (sources: <map-rep>, state: complete, rlocs: 1).
*May 18 23:44:49.442: [XTR] LISP-0: Remote EID IID 0 prefix 10.2.2.5/32, Map-reply from 172.16.1.3 returned less specific 10.2.2.0/24 (sources: <>, state: deleted, rlocs: 0).
*May 18 23:44:49.452: [XTR] LISP: RIB Watch Group default 172.16.1.3/32 , installing in RIB.
*May 18 23:44:49.454: [XTR] LISP: RIB Next-hop default GigabitEthernet2 172.16.1.3 lcl UNSPEC, created.
*May 18 23:44:49.454: [XTR] LISP: RIB Next-hop default GigabitEthernet2 172.16.1.3 lcl 172.16.1.2, notified.
*May 18 23:44:49.455: [XTR] LISP-0: Remote shrRLOC 172.16.1.3, Reachability notification, up* allow* remote.
*May 18 23:44:49.455: [XTR] LISP-0: Remote EID IID 0 prefix 10.2.2.0/24, No more RLOCs pending rwatch update, schedule deferred fwd update (sources: <map-rep>, state: complete, rlocs: 1).
R2が10.2.2.0/24のRLOCを解決できていることが確認できます。
R2#show ip lisp map-cache
LISP IPv4 Mapping Cache for EID-table default (IID 0), 2 entries
0.0.0.0/0, uptime: 00:00:42, expires: 00:00:17, via static-send-map-request
Negative cache entry, action: send-map-request
10.2.2.0/24, uptime: 00:06:26, expires: 23:53:34, via map-reply, complete
Locator Uptime State Pri/Wgt Encap-IID
172.16.1.3 00:06:26 up 1/50 -
もしR2が受信したMap ReplyメッセージにEID-HMACとPTK-HMACが存在しない場合は、以下のエラーが表示されます。
R2#debug lisp control-plane all
*May 19 01:00:24.472: [MS] LISP-0: Processing received Map-Reply(2) message on GigabitEthernet2 from 172.16.1.3:4342 to 172.16.1.2:4342.
*May 19 01:00:24.473: LISP: Received map reply nonce 0x9C7659CB-0xBB1EA2FD, records 1
*May 19 01:00:24.473: LISP-0: Map Request IID 0 prefix 10.2.2.5/32 remote EID prefix[LL], Map-reply verification failed due to lack of security info.
*May 19 01:00:24.473: LISP-0: Map Request IID 0 prefix 10.2.2.5/32 remote EID prefix[LL], Map-reply failed security verification, dropping.
コメント