LISP MITM Attack対策

今回は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が有効になります。

R2

router lisp
 security
            

 

EID-PrefixとRLOCのマッピング情報登録時の様子

LISP-SECが有効なxTRがEID-PrefixとRLOCのマッピング情報を登録する際、S(LISP-SEC)ビットをセットしたMap Registerメッセージを送信します。

 

以下はR1がMap Registerメッセージを受信した際のデバックになります。Sビットがセットされていることが確認できます。

R1

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

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

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

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

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

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

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

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.
            

コメント

タイトルとURLをコピーしました