跳到主要內容區塊

ntuccepaper2019

專題報導

BGP Hijacking 發生之可能原因及因應對策
  • 卷期:v0048
  • 出版日期:2019-03-20

作者:游子興 / 臺灣大學計算機及資訊網路中心資訊網路組


BGP路由協定為不同Autonomous System(自治系統, 簡稱 AS)彼此交換路由之方法,本文藉由發生於2018/11/19中華電信連外網路之異常事件來探討BGP Hijacking發生之可能原因及因應對策。其中BGP AS-Path長度與BGP Prefix路由長度為此次事件最可能之兩個原因。

 

中華電信網路大當機

中華電信在 2018/11/19 週一上午9:30發生網路當機約30分鐘,相關新聞如圖1。依據新聞所述,網路異常發生於中華電信連外線路,發生原因在於某網路業者路由設定有誤。若仔細思考上述網路當機的邏輯,還真的有些匪夷所思,就是某網路業者因設定有誤,就可以影響其他業者之連外線路?若真是如此那可真是一件非常可怕的事情。本文主要在探討此種狀況發生的原因及如何因應之辦法。

 



圖1:中華電信 2018/11/19 網路當機新聞

 

BGP AS-Path長度

上述事件發生後,校內某研究資安議題之教授,來信詢問Border Router是否會丟掉AS-Path長度超過某個門檻值(比如255)的BGP更新訊息?因為每台路由器皆有有限之記憶體配置,若收到過長之AS-Path長度更新訊息,可能導致記憶體耗盡而造成路由器運作異常。

 

AS-Path之概念以下圖2為例,從AS:1659 TANet學術網路到AS: 13335 Cloudflare網路所需經過之AS-Path為9264 -> 4635 -> 13335,AS-Path長度為3。

 


圖2:AS-Path 連線示意圖

 

那一般而言,正常的AS-Path長度應該是多少?要能正確回答此問題之前提,必須要有一台Border Router接收所有Internet之BGP Prefix(Full Routes),以此Router來統計所有AS-Path長度,在2018年12月Internet上BGP Prefix路由總筆數約有76萬筆。而臺灣大學之Border Router僅有接收部分之Internet BGP Prefix,接收之路由筆數約12萬筆,因此約佔Internet路由總筆數之1/6,而這12 萬筆路由構成35,157筆不同之AS-Path路徑,這些不同AS-Path長度統計如下圖3.4所示,可知大部分的AS-Path長度介於3 ~ 8之間,而最長之AS-Path長度為34。

 


圖3:臺大Border Router AS-Path長度統計

 


圖4:臺大Border Router AS-Path長度統計

 

若仔細觀察AS-Path長度為34之詳細路徑如圖5所示,會發現長度很長之原因在於有許多重複之AS:196691及AS:198130,這些重複的AS-Path其實是網路管理者故意設定的,在路由設定上稱為AS prepend。其目的是希望盡量不要使用此條路徑連線到AS:198130,因此故意設定較長之AS-Path而有較低之優先權。因此在現今Internet環境中,因為ISP彼此互連的情況非常頻繁,因此實際上不大可能會發生要到達某個ASN需要經過超過255 AS-Path長度才能抵達的情況。

 


圖5:最長之AS-Path詳細路徑

 

因此回到最初的問題,是否有指令可限制路由器不要收到過長之AS-Path長度更新訊息導致記憶體耗盡,而造成路由器運作異常?有的以Cisco Router為例,可用如下指令限制收到最長之AS-Path長度為50,若收到超過50 AS-Path長度的路由則直接丟棄。

 

(config)# router bgp 1659

(config-router)# maxas-limit 50 

 

BGP Prefix路由筆數

網路路由協定中最優先的規則就是Longest prefix match,也就是最長的網段路由最優先。因此設想一個情況,若有某個ISP對其他BGP Neighbor宣稱所有Internet Class C網段在他身上,依據最長的網段路由優先規則,將導致其他ISP 對外連線封包皆優先送到此ISP,此情況似乎與中華電信斷線所宣稱之原因極為相似。


那應該如何避免此狀況呢?先前提到目前Internet BGP Prefix路由筆數約為76萬筆,若將所有 Internet路由切成Class C之路由筆數為2^24 = 16,777,216(1千6百萬),因此路由筆數會增加非常多。因此在管理Border Router設定中,最好限制從每個不同的BGP Neighbor所允許收到之路由總筆數。


以下圖6為臺大區網從不同ISP收到之BGP Prefix筆數統計,可發現除非是重大網路架構變更,否則收到之BGP Prefix路由筆數應該不會有太大之變化,因此可用如下指令設定從不同BGP Neighbor允許收到之路由筆數

 

(config)# router bgp 1659

 

(config-router)# neighbor ip-address maximum-prefix 3000

 


圖6:臺大區網不同ISP收到之BGP Prefix筆數統計

 

結論

網路管理者之夢魘就是網路異常與斷線,若追究其異常發生原因在於外部網路所引起而非內部設定出問題,則更叫人欲哭無淚。因此如何在平時適當防範可能的BGP Neighbor異常,而造成本身對外網路異常是所有網管所需正視的問題。

 

參考資料 

1.Autonomous system (Internet),
https://en.wikipedia.org/wiki/Autonomous_system_(Internet)
2.中華電周一網路大當機30分鐘,竟是因人為疏失, https://tw.appledaily.com/new/realtime/20181119/1468986/
3.CIDR REPORT for 8 Mar 19,https://www.cidr-report.org/as2.0/