相信對「網路安全」相關消息有在關注的朋友,會聽過 BGP狹持 (BGP Hijacking) 這個詞。比較有名的事件,像是:
首先,按照慣例,要講 BGP 狹持之前,我們必須講些基礎。
查 wikipedia,他的敘述是這樣的
Border Gateway Protocol (BGP) is a standardized exterior gateway protocol designed to exchange routing and reachability information among autonomous systems (AS) on the Internet.[1] The protocol is often classified as a path vector protocol but is sometimes also classed as a distance-vector routing protocol[citation needed]. The Border Gateway Protocol makes routing decisions based on paths, network policies, or rule-sets configured by a network administrator and is involved in making core routing decisions.
不過這太長了,所以我來解釋。
在很久以前,網路這東西才剛發明。其實最早的時候,只是一堆電腦用電纜線等等方式串起來,而且開貨車載硬碟搞不好還比網路快。(雖然現在也是)
由於當時網路上的機器數量少,所以,都是用人工的方式,來手動指定每台電腦之間的連線路徑該怎麼走。不過,隨著網際網路的成長,人工處理的方式越來越不可行。
於是有人發明了 EGP (External Gateway Protocol)。更早之前還有一個叫做 GGP 的協定。
EGP 是一個讓兩個閘道(路由器)之間溝通的協定,通過 EGP 協定,兩台閘道可以互相告訴對方說,目前已知哪條路可以走,哪條不行,哪條走得快。
過了一陣子之後,人們又發現,光是有 EGP 還不夠用,而且閘道以內(內網)的路由還是亂七八糟。於是又發明了 AS (Autonomous System) 的概念,
首先,先將以下會講到的東西,做個整理。
autonomous,依據新牛津美語字典的解釋:
autonomous | ôˈtänəməs |
adjective
(of a country or region) having self-government, at least to a significant degree: the federation included sixteen autonomous republics.
• acting independently or having the freedom to do so: an autonomous committee of the school board | autonomous underwater vehicles.
• (in Kantian moral philosophy) acting in accordance with one's moral duty rather than one's desires.
由於一開始是讓每台機器都各自直接接上網路,隨著機器數量一多,就越來越難管理。於是就有人發明了 AS 的概念,將網路改變成兩層的結構。以閘道做區隔,最外層是外網,使用 EGP 來做聯繫。閘道內是以 AS 來做管理。
每個 AS 當中,會有很多個網段。
一個 AS 會有一個 ASN (AS number),而 AS 通常是由一個單位管理,例如 ISP、超級大學校、大公司等等,什麼都大的組織。每個 AS 裡面的路由表都自己管,只要事先宣告自己持有什麼網段就行了,故名 autonomous。
因此,又暫時把太雜亂的問題往後拋了。
EGP 是以樹狀結構的方式來處理閘道與閘道之間的關係。所以又隨著網路的成長,開始遇到能力匹配不了的問題。於是又有人提出了 BGP。
BGP 基本上,就是讓每個封包,知道可以從哪裡去到他想要去的位置。BGP 也能夠決定封包從哪條路過去最好。
由於每個使用 BGP 的 AS,都會跟彼此交換資訊,說因此兩個 AS 之間不一定有直接的連線。BGP 會自動決定各種狀態下的路由,決定東西從哪邊走,該在哪邊停。
由於 AS 會互相交換資訊,所以可以收集資訊,也可以「傳錯資訊」。
這就是下一篇要講的:BGP Hijacking。