鄰居發現(Neighbor Discovery)協議及***防範

<轉載請註明出處>緩存

1. ND協議介紹安全

鄰居發現協議(Neighbor Discovery Protocol,如下稱ND協議)是IPv6的一個關鍵協議,能夠說,ND協議是IPv4某些協議在IPv6中綜合起來的升級和改進,如ARP、ICMP路由器發現和ICMP重定向等協議。固然,做爲IPv6的基礎性協議,ND還提供了其餘功能,如前綴發現、鄰居不可達檢測、重複地址檢測、地址自動配置等。服務器

1.1 IPv6協議格式網絡

NDP-graphic1

Version(4-bit):IP版本,該字段值爲6併發

Traffic Class(8-bit):流量分類,與IPv4包頭的TOS相似ide

Flow Label(20-bit):流標籤,用來標記IPv6數據包的一個流wordpress

Payload Length(16-bit):有效載荷的長度,有效載荷爲緊跟IPv6包頭的數據包的其餘部分oop

Next Header(8-bit):處理選項字段,分段,安全,移動性,鬆散源路由,記錄路由等的新方式。該字段在承載ND報文時字段值爲58(ICMPv6)。該字段詳細字段值對應以下表學習

Value Type of Header
0 Hop-by-Hop Options Header
6 TCP
17 UDP
41 Encapsulated IPv6 Header
43 Routing Header
44 Fragment Header
50 Encapsulating Security Payload
51 Authentication Header
58 ICMPv6
59 No next header
60 Destination Options Header

Hop Limit:(8-bit):定義IP數據包所能通過的最大跳數,每跳一次將此值減1spa

Source Address(128-bit):IP數據包的源地址

Destination Address(128-bit):IP數據包的目的地址

1.2 ND報文類型

ND協議定義的報文使用ICMP承載,其類型包括:路由器請求報文(RS)、路由器通告(RA)報文、鄰居請求報文(NS)、鄰居通告報文(NA)和重定向報文。

1.2.1 路由器請求報文RS Router Solicitation Message

主機啓動後,經過RS消息向路由器發出請求,指望路由器當即發送RA消息響應。RS報文格式以下圖

NDP-graphic2

  • Type 類型字段,值133
  • Code 代碼字段,值0
  • Options 選項字段
    • 源鏈路層地址選項 僅用於已編址的鏈路層可用於RS報文的只有源鏈路層地址選項,代表該報文發送者的鏈路層地址。若是IPv6頭的源地址爲未指定地址,則不能包括該選項

同時,IPv6報文頭中的字段要求以下:

  • Hop Limit 值255,保證是本地鏈路上的報文
  • Source Address 發送接口的本地鏈路地址或未指定地址
  • Destination Address 本地鏈路中全部路由器的組播地址FF02::2

1.2.2 路由器通告報文RA Router Advertisement Message

路由器週期性的發佈RA消息,其中包括前綴和一些標誌位的信息,或者以RA報文響應路由器請求報文RS。RA的報文格式以下圖。

NDP-graphic3

  • Type 類型字段,值134
  • Code 代碼字段,值0
  • M管理地址配置標識(Managed address configuration)
    • 0-無狀態地址分配,客戶端經過無狀態協議(如ND)得到IPv6地址;
    • 1-有狀態地址分配,客戶端經過有狀態協議(如DHCPv6)得到IPv6地址。
  • O 其它有狀態配置標識(Other stateful configuration)
    • 0-客戶端經過無狀態協議(如ND)獲取除地址外的其餘配置信息;
    • 1-客戶端經過有狀態協議(如DHCPv6)獲取除地址外的其餘配置信息,如DNS、SIP服務器信息。協議規定,若M標記置爲1,則O標記也應置爲1,不然無心義。
  • Router Lifetime 缺省路由器的生命週期(單位:秒)

表示發送該RA報文的路由器做爲缺省路由器的生命週期。Router Lifetime最長9000秒小時,缺省值30分鐘。若是該字段爲0時,表示該路由器不能做爲缺省路由器,但RA報文的其餘信息仍然有效。

  • Reachable Time 可達時間(單位:毫秒)

發送NS報文後,在獲得鄰居可達性確認後,認爲鄰居可達的時間,0表示不指定。路由器在接口上經過發送RA報文,讓同一鏈路上的全部節點都使用相同的可達時間。若Reachable Time爲0,表示路由器不指定該字段參數。該值可配置,RA報文中缺省值爲0。

  • Retrans Timer 重傳定時器(單位:毫秒)

重傳NS報文的時間間隔,用於鄰居不可達檢測和地址解析。若該值爲0,表示路由器不指定該字段參數。該值可配置,RA報文缺省值爲0。

  • Options 選項字段
    • 源鏈路層地址選項 僅用於已編址的鏈路層。當路由器正在多個鏈路層地址上進行負荷分擔時,要忽略該選項。
    • MTU選項 鏈路的可變MTU
    • 前綴信息選項 用於地址自動配置的前綴信息,可包含多個
    • 路由信息選項 用於主機生成缺省路由,代表前綴經過該路由器是可達的

同時,IPv6報文頭中的字段要求以下:

  • Source Address 必須是發送接口的本地鏈路地址
  • Destination Address 組播地址FF02::1,或發送RS請求報文的主機的單播地址

1.2.3 鄰居請求報文NS Neighbor Solicitation Message

主機經過NS消息能夠獲得鄰居的鏈路層地址、檢查鄰居是否可達、重複地址檢測等。

NDP-graphic4

  • Type 類型字段,值135
  • Code 代碼字段,值0
  • Target Address 目標地址,16bytes

請求目標的IP地址,不能是組播地址,能夠是本地鏈路、本地站點、全局地址。

  • Options 選項字段
    • 源鏈路層地址選項 ,和RS報文的選項相同,可用於NS報文的只有源鏈路層地址選項。源鏈路層選項僅用於已編址的鏈路層,若是IPv6頭的源地址爲未指定地址,則不能包括該選項。

同時,IPv6報文頭中字段要求以下:

  • Source Address 發送接口的地址或未指定地址(DAD檢測)
  • Destination Address 目的節點單播地址或目的節點地址對應的請求節點組播地址

須要說明,若是源地址爲未指定地址,則目的地址應爲被請求節點的組播地址,而且沒有源鏈路層地址選項。

1.2.4 鄰居通告報文NA Neighbor Advertisement Message

NA報文是主機對NS的響應報文,同時主機在鏈路層地址變化時也能夠主動發送NA消息,以通知相鄰節點本身的鏈路層地址或者角色發生改變。

NDP-graphic5

  • Type 類型字段,值136
  • Code 代碼字段,值0
  • R 路由器標記(Router Flag)

表示NA報文發送者的角色。置位表示發送者是路由器,復位表示發送者爲主機。

  • S 請求標記(Solicited Flag)

置位表示爲響應單播NS發送的NA報文。在NUD探測中,S標記做爲鄰居可達性確認標記;在組播通告或非請求單播通告中,S標記必須清零,如DAD檢測中NS報文用的是被請求節點的組播地址,當地址衝突時,迴應的NA報文的S標記須要清零。

  • O 重載標記(Override Flag)

1-表示須要用目標鏈路層地址選項中的鏈路層地址,來更新鄰居緩存表。

0-只有在鏈路層地址未知時,才能用目標鏈路層地址選項來更新鄰居緩存表。

  • Target Address 目標地址,16bytes

若是是針對NS而發送NA,該字段直接拷貝NS報文目標地址;若是不是針對NS發送的NA,該地址是鏈路層地址發生改變的網絡節點的IP地址。目標地址不能是組播地址。

  • Options 選項字段,只能是目的鏈路層地址選項,通告發送者的鏈路層地址。

同時,IPv6報文頭中字段要求以下:

  • Source Address 必須是發送接口的單播地址
  • Destination Address 單播地址或者全部節點的組播地址(FF02::1)

1.2.5 重定向報文 Redirect Message

路由器經過重定向報文通知主機到目的地有更好的下一跳地址,或者通知主機目的地址爲本網段鄰居。

NDP-graphic6

  • Type 類型字段,值137
  • Code 代碼字段,值0
  • Target Address 目標地址,16bytes

到達目的地址的下一跳地址。若是目標爲路由器(本地鏈路外的報文),必須使用路由器的本地鏈路地址;若是是主機(本地鏈路報文),目標地址和目的地址必須一致。

  • Destination Address 目的地址,即IPv6頭部的目的地址,16bytes
  • Options 選項字段
    • 目標鏈路層地址選項:新下一跳的鏈路層地址。
    • 重定向頭選項:觸發報文儘量多的部分,但不該使重定向報文超過1280bytes。

同時,IPv6報文頭中字段要求以下:

  • Source Address 發送接口的本地鏈路地址
  • Destination Address 觸發重定向的數據報文的單播地址

1.3 ND主要功能

1.3.1 路由器發現

路由器發現是指主機怎樣定位本地鏈路上路由器和肯定其配置信息的過程,主要包含如下三方面的內容:

  • 路由器發現
  • 前綴發現
  • 參數發現

在路由器通告報文RA中承載着路由器的相關信息,ND協議經過RS和RA的報文交互完成路由器發現、前綴發現和參數發現三大功能。協議交互主要有兩種狀況:主機請求觸發路由器通告和路由器按期發送路由器通告。

1.3.2 地址解析

地址解析是指某節點在知道目的節點IP地址的狀況下,肯定目的鏈路層地址的過程。

當一個節點須要獲得同一本地鏈路上另一個節點的鏈路層地址時,須要進行地址解析,該機制相似於IPv4中的ARP。 ND協議用NS和NA報文完成IPv6地址到鏈路層地址的解析,解析後的鏈路層地址和IP地址等信息用來創建節點的一個鄰居緩存表項。

1.3.3 鄰居不可達檢測NUD

鄰居不可達檢測是節點怎樣肯定鄰居不可達狀態的過程。ND協議用NS和NA報文來驗證鄰居節點的可達性。

1.3.4 重複地址檢測DAD

重複地址檢測是節點肯定即將使用的地址是否被另外一節點使用的過程。

在節點自動配置某個接口的IPv6單播地址以前,必須在本地鏈路範圍內驗證要使用的臨時地址是惟一的,而且未被其餘節點使用過。ND協議使用NS/NA報文完成該功能。

2. ND常見***

2.1 重複地址檢測DAD***

在結點使用無狀態協議自動配置時發送NS報文,NS報文中附帶告終點準備使用的地址target address,***者僞造NA報文,回覆稱該地址已被使用,迫使結點更換target address,如此反覆,結點將沒法完成無狀態協議自動配置。

針對DAD***,能夠採用ND snooping,DHCP snooping,ND detection技術防範。

DHCP snooping與IPv4同樣,經過監聽DHCP的交互進程,得到用戶的IP,MAC,鏈接的交換機端口號的綁定表項。ND snooping與前者很相似,監聽ND協議的DAD交互過程,獲取用戶的IP、MAC、Port的對應關係。

ND Detection是H3C在ND防***方面的創新技術,經過結合已經創建的綁定表項,這個綁定表項能夠是使用ND snooping,DHCP snooping,手工來進行配置的,經過比較已經獲取到的可信表項中的IP與MAC地址,對ND報文進行過濾,丟棄異常的報文。相比單純使用ACL進行的用戶綁定,ND Detection技術結合綁定表項對ND報文進行過濾,可以較好的防護ND***。

2.2 地址欺騙

地址欺騙相似IPv4中的ARP欺騙,***者僞造RS/NS/NA報文來修改受害主機或網關上受害主機的MAC地址,形成受害主機沒法與網絡進行正常的通訊。

防範方法與DAD***防範方法相似。

2.3 網絡配置參數***(RA僞造***)

RA可以攜帶不少網絡配置信息,包括默認路由器,網絡前綴列表,是否使用DHCP服務器進行有狀態地址分配等網絡配置的關鍵信息。若是受害者接收了虛假的RA信息,會形成網絡配置錯誤,從而引起欺騙***。

防範方法爲設置RA信任端口,未來自不信任端口的RA報文丟棄。

2.4 針對網關的泛洪***

經過發送大量的NS/RS報文,形成網關的表項溢出。

爲了不網關的ND表項被異常的ND報文打滿溢出形成DoS***,在網關上可以針對端口配置最大的ND表項學習數量,可以緩解此類***。

3. ND snooping實現機制

如下爲簡單翻譯結果,詳細請參考 IETF草案Control Packet Snooping Based Binding draft-bi-savi-cps-00.txt 8.3節

3.1 DAD交互過程

根據本文1.3.4重複地址檢測DAD的描述,主機在自動配置或手動配置IPv6地址時,會經過NS/NA報文檢測是否存在重複地址。詳細步驟以下:

  • 主機發送NS請求,並設置以下字段值
    • source address爲0.0.0.0
    • desnation address爲ff02::1(組播地址)
    • target address爲主機準備配置的地址,DAD即檢測這個地址是否在網絡上有重複
    • Hop Limit字段值爲255,主要是爲了防止一跳之外的節點僞造ND報文
  • 鏈路內收到該NS報文的主機將檢測自身地址是否和target address重複,不重複則忽略,重複則發送NA報文,若是target address也是本身準備配置的地址,則放棄該地址並忽略NS報文
  • 回覆的NA報文的target address是從NS報文target address段直接複製過來,destination address 爲組播地址

3.2 ND snooping監聽過程

ND snooping則監聽DAD交互過程,產生MAC-IP對應表filter table.步驟以下:

  • 交換機收到DAD過程當中的NS報文,將NS中的target address插入監聽列表BST(Binding State Table)(若是這個地址不在BST中的話)設置ND snooping狀態爲SAC_START,初始化計時器MAX_DAD_DELAY
  • MAX_DAD_DELAY超時前若是收到其餘主機的NA回覆報文,則刪除BST中該地址信息,本次ND snooping監聽結束,反之設置ND snooping狀態爲SAC_BOUND,初始化計時器MAX_SAC_LIFETIME,將該地址信息加入FT(filter table)
  • 計時器MAX_SAC_LIFETIME超時後, 重設計時器MAX_DAD_PREPARE_DELAY,併發送NS報文到這個地址以指望獲得它的MAC地址,在MAX_DAD_PREPARE_DELAY超時前若是沒有收到NA回覆,則刪除BST,FT中的該地址信息,ND snooping監聽結束,反之取出NA報文中的MAC地址,加入FT中,並設置計時器MAX_SAC_LIFETIME,ND snooping狀態爲SAC_QUERY
  • 計時器MAX_SAC_LIFETIME超時後,交換機將返回上一步從新發送NS報文,以確認該地址是否正常,是否須要更新BST,FT。

3.3 ND snooping流程圖

NDP-graphic7

相關文章
相關標籤/搜索