本產品的文件集力求使用無偏見用語。針對本文件集的目的,無偏見係定義為未根據年齡、身心障礙、性別、種族身分、民族身分、性別傾向、社會經濟地位及交織性表示歧視的用語。由於本產品軟體使用者介面中硬式編碼的語言、根據 RFP 文件使用的語言,或引用第三方產品的語言,因此本文件中可能會出現例外狀況。深入瞭解思科如何使用包容性用語。
思科已使用電腦和人工技術翻譯本文件,讓全世界的使用者能夠以自己的語言理解支援內容。請注意,即使是最佳機器翻譯,也不如專業譯者翻譯的內容準確。Cisco Systems, Inc. 對這些翻譯的準確度概不負責,並建議一律查看原始英文文件(提供連結)。
本文檔介紹有關保護IP組播網路基礎設施的最佳實踐的一般指南。
思科建議您瞭解以下主題:
本文件所述內容不限於特定軟體和硬體版本。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
本檔案涵蓋一些基本概念、術語,並討論下列主題:
在IP組播中有兩種典型服務模式:
1. 任何來源多點傳送(ASM)
2. 來源特定多點傳送(SSM)
在ASM中,接收方透過網際網路組成員協定(IGMP)或組播偵聽程式發現(MLD)成員身份報告加入組G以指示該組。此報告請求由任何源傳送到組G的流量,因此名稱為「任何源」。 相反,在SSM中,接收機加入由源S定義的特定通道,該特定通道向組G傳送。以下將詳細介紹每種服務模式。
ASM模型的特徵在於兩種協定:「密集模式泛洪和修剪」和「稀疏模式顯式連線」:
i)密集模式泛洪和修剪協定(DVMRP/MOSPF/PIM-DM)
在密集模式協定中,網路中的所有路由器都知道所有樹、它們的源和接收器。距離向量組播路由協定(DVMRP)和協定獨立組播(PIM)密集模式等協定在整個網路中泛洪「活動源」資訊,並透過在不需要特定樹流量的部分拓撲中建立「修剪狀態」來構建樹。它們也稱為泛洪和修剪協定。在組播開放最短路徑優先(MOSPF)中,有關接收方的資訊在整個網路中泛洪以支援樹構建。
不需要使用密集模式協定,因為網路某些部分中構建的每個樹總是會對網路中的所有路由器(或管理範圍內,如果已配置)造成資源利用率(具有收斂影響)。這些協定在本文的剩餘部分中不再討論。
ii)稀疏模式明確結合通訊協定(PIM-SM/PIM-BiDir)
使用稀疏模式顯式加入協定時,裝置不會在網路中建立特定於組的狀態,除非接收方已傳送組的顯式IGMP/MLD成員報告(或「加入」)。ASM的這種變體可以很好地擴展,是組播的焦點模式。
這是PIM稀疏模式的基礎,大多陣列播部署到目前為止都使用這種模式。這也是雙向PIM (PIM-BiDir)的基礎,PIM-BiDir正越來越多地部署用於MANY (源)到MANY (接收器)應用程式。
這些協定稱為稀疏模式,因為它們可以有效地支援具有「稀疏」接收器群體的IP組播傳送樹,並僅在源與接收器之間的路徑中的路由器上以及在PIM-SM/BiDir中建立控制平面狀態(Rendezvous Point,RP)。它們絕不會在網路的其它部分建立狀態。只有在收到來自下游路由器或接收者的加入時,才會明確建立路由器中的狀態,因此稱為「明確加入通訊協定」。
PIM-SM和PIM-BiDir都使用「共用樹」,允許將來自任何源的流量轉發到接收方。共用樹上的組播狀態稱為(*,G)狀態,其中*是ANY SOURCE的萬用字元。此外,PIM-SM支援建立與來自特定源的資料流相關的狀態。這些樹稱為SOURCE TREES,相關的狀態稱為(S,G)狀態。
SSM是當接收方(或某些代理)傳送(S,G)「加入」以表示它想要接收由源S傳送到組G的流量時使用的模型。使用IGMPv3/MLDv2「INCLUDE」模式成員身份報告即可實現此目的。此模型稱為來源特定多點傳送(SSM)模型。SSM要求在路由器之間使用顯式連線協定。其標準協定是PIM-SSM,它只是用於建立(S,G)樹的PIM-SM的子集。SSM中沒有共用樹(*,G)狀態。
因此,組播接收器可以「加入」ASM組G,或「加入」(或更精確地「訂閱」)SSM(S,G)通道。為避免重複術語「ASM組或SSM通道」,使用了術語(組播)流,這意味著流可以是ASM組或SSM通道。
要保護組播網路,必須瞭解常見的資料包型別以及如何防範它們。需要關注的協定主要有三種:
1. IGMP/MLD
2. PIM
3. MSDP
下一節將分別討論這些協定中的每種協定以及每種協定可能出現的問題。
IGMP/MLD是組播接收方用來向路由器發出訊號,表示它們要接收特定組播組的內容的協定。Internet組成員協定(IGMP)是IPv4中使用的協定,組播偵聽程式發現(MLD)是IPv6中使用的協定。
通常部署的IGMP有兩個版本:IGMPv2和IGMPv3。此外,還有兩個通常部署的MLD版本:MLDv1和MLDv2。
IGMPv2和MLDv1在功能上是等效的,而IGMPv3和MLDv2在功能上是等效的。
這些協定在以下鏈路中指定:
IGMPv2:RFC 2236
MLDv1:RFC 3590
IGMPv3和MLDv2:RFC 4604
IGMPv2和IGMPv3不僅是協定,也是IPv4 IP協定(具體來說,是第2號協定)。它不僅按照這些RFC中的說明用於報告組播組成員資格,而且被其他IPv4組播協定(如DVMRP、PIM版本1、mtrace和mrinfo)使用。在您嘗試過濾IGMP(例如,透過Cisco IOS® ACL)時,請務必記住這一點。在IPv6中,MLD不是IPv6協定;而是使用ICMPv6來承載MLD資料包。PIM版本2是IPv4和IPv6中的相同協定型別(協定號103)。
本部分將討論多播和單播PIM控制資料包。討論了自動RP和引導路由器(BSR),它們是在PIM-SM網路中選擇集合點和控制組到RP分配的方法。
組播PIM控制資料包包括:
單播PIM控制資料包定向到RP或從RP傳出,包括:
圖1:PIM單播資料包
攻擊此類資料包的攻擊可能來自任何地方,因為這些資料包是單播資料包。
自動RP是Cisco開發的協定,其用途與PIMv2 BSR相同。自動RP是在BSR之前開發的,並且僅支援IPv4。BSR支援IPv4和IPv6。自動RP中的對映代理的功能與BSR中的引導路由器相同。在BSR中,來自C-RP的消息單播到引導路由器。在自動RP中,消息透過組播傳送到對映代理,從而允許在邊界進行更簡單的過濾,如後所述。自動RP在此連結中進行了詳細說明:https://www.cisco.com/c/en/us/td/docs/ios/solutions_docs/ip_multicast/White_papers/rps.html
在Cisco IOS中,自動RP/BSR資料包始終被轉發,並且當前未被停用。在自動RP的情況下,這可能會導致特殊的安全風險。
圖2:自動RP資料包
注意:雖然自動RP用作PIM-SM RP通告和發現的機制,但它不使用PIM資料包(IP協定103);而是使用具有多播地址的使用者資料包協定(UDP)埠496資料包。
?自動RP使用兩種資料包型別:
C-RP-Announce資料包:這些資料包組播到所有對映代理,並使用網際網路編號分配機構(IANA)保留的「已知」地址(224.0.1.39)。它們由C-RP傳送,以通告RP能夠充當RP的RP地址和組範圍。
C-RP發現資料包:這些資料包組播到所有PIM路由器,並使用IANA保留的「已知」地址(224.0.1.40)。自動RP對映代理傳送這些日誌,以通告選擇為特定組範圍RP的特定C-RP。
這些資料包型別中的每一種都旨在透過網路泛洪。
在Cisco IOS中,224.0.1.39和224.0.1.40都以PIM密集模式轉發,以避免在組用於分發RP資訊時組的RP沒有事先瞭解的問題。這是唯一推薦使用的PIM密集模式。
在Cisco IOS XR中,自動RP消息是從鄰居到鄰居的逐跳反向路徑轉發(RPF)泛洪。因此,在Cisco IOS XR中無需建立PIM DM mroute狀態即可支援自動RP。事實上,Cisco IOS XR根本不支援PIM-DM。
MSDP是IPv4協定,它允許透過各自的交匯點將一個域中的源通告給另一個域中的接收方。MSDP在RFC 3618中指定。
為了在PIM域之間共用有關活動源的資訊,使用MSDP。如果某個源在一個域中變為活動狀態,則MSDP確保所有對等域及時獲知此新源,這樣,如果其他域中的接收器恰好傳送到接收器感興趣的組,則允許快速與此新源進行聯絡。ASM/PIM-SM組播通訊需要MSDP,它運行在各自域中的集合點之間配置的單播傳輸控制協定(TCP)連線上。
本文檔的此部分按網路中的功能實體組織。所討論的威脅模型圍繞這些實體形成。例如,本文檔說明如何保護組播網路中的路由器(從組播的角度),而與路由器的部署位置無關。同樣,在指定路由器、交匯點等裝置上部署全網安全措施(或措施)也有一些注意事項
此處描述的威脅也遵循此邏輯,按網路中的邏輯功能進行組織。
在抽象層級,任何組播部署都可能受到多個安全方面的威脅。安全性的關鍵方面是保密性、完整性和可用性。
保密性威脅:在大多數應用中,組播流量不加密,因此任何人都可以偵聽或捕獲路徑中的任何線路或網路元素。在「獲取VPN」一節中,討論了加密組播流量以防止此類攻擊的方法。
對流量完整性的威脅:如果沒有應用級安全或基於網路的安全性(例如GET VPN),組播流量在傳輸過程中很容易遭到修改。這對於使用組播(例如OSPF、PIM和許多其他協定)的控制平面流量尤為重要。
對網路完整性的威脅:如果沒有本文中描述的安全機制,未經授權的傳送方、接收方或受損網元可以訪問組播網路、未經授權傳送和接收流量(竊取服務)或使網路資源過載。
可用性威脅:存在多種拒絕服務攻擊的可能性,可能使合法使用者無法使用資源。
接下來的幾節將討論網路中每個邏輯功能的威脅。
路由器面臨許多基本威脅,這些威脅與路由器是否支援組播以及攻擊是否涉及組播流量或協定無關。
拒絕服務(DoS)攻擊是網路中最重要的通用攻擊媒介。原則上,每個網路元素都可能遭受DoS攻擊,這可能會使元素過載,進而導致合法使用者的服務丟失或降級。請務必遵循適用於單播的基本網路安全建議。
值得注意的是,組播攻擊並非總是有意為之,而往往是意外的。例如,最早在2004年3月觀察到的Witty蠕蟲就是透過對IP地址的隨機攻擊傳播的蠕蟲的一個例子。由於地址空間完全隨機化,多播IP目標也受到蠕蟲的影響。在許多組織中,由於蠕蟲將資料包傳送到許多不同的組播目標地址,許多第一跳路由器崩潰。但是,路由器沒有使用相關狀態建立來承擔此類組播流量負載,並且有效地經歷了資源耗盡。這表明即使企業中未使用組播,仍需要保護組播流量。
針對路由器的常見威脅包括:
在路由器上啟用組播時,除了單播外,還必須保護組播。使用IP組播不會改變基本威脅模型;但是,它支援可能受到攻擊的其他協定(PIM、IGMP、MLD、MSDP),這些協定需要特別保護。在這些協定中使用單播流量時,威脅模型與路由器運行的其他協定相同。
必須注意的是,組播流量不能以與單播流量相同的方式用於攻擊路由器,因為組播流量基本上是「接收方驅動」的,不能以遠端目標為目標。攻擊目標需要明確地「加入」到組播流。在大多數情況下(主要例外是自動RP),路由器僅監聽和接收「本地鏈路」組播流量。鏈路本地流量從不轉發。因此,對帶有組播資料包的路由器的攻擊只能來自直接連線的攻擊者。
組播源(PC或影片伺服器)有時不受與網路相同的管理控制。因此,從網路業者的角度看,傳送方大多被視為不受信任。鑑於PC和伺服器的強大功能及其複雜的安全設定(通常不完整),傳送方對任何網路(包括組播)都構成重大威脅。這些威脅包括:
注意:主機通常不傳送或接收PIM資料包。執行此操作的主機可能嘗試發起攻擊。
接收方通常也是具有大量CPU功率和頻寬的平台,並且支援多種攻擊形式。這些威脅與傳送方威脅大致相同。第2層攻擊仍是一個重要的攻擊媒介。除了攻擊媒介通常是IGMP(或如前所述,第2層攻擊)之外,接收方也可能出現偽造接收方和服務被盜情況。
PIM-SM RP和PIM-BSR是組播網路中的關鍵點,因此是攻擊者的重要目標。如果第一跳路由器也不是,則只有單播攻擊形式(包括PIM單播)才能直接針對這些元素。針對RP和BSR的威脅包括:
考慮圖3中的拓撲,其中顯示一個源、三個接收器(A、B、C)、一個交換機(S1)和兩個路由器(R1和R2)。藍線代表單播流,紅線代表組播流。所有三個接收器都是組播流的成員。
圖3:路由器和交換機中的複製
要禁止流量從特定源流向特定接收器,請執行以下操作:
本節適用於ASM和SSM服務模型,其中基於接收方端顯式加入來轉發流量。
對於單播流,沒有隱含的接收方保護。單播源可以將流量傳送到目的地,即使該目的地沒有要求該流量。因此,防火牆等防禦機制通常用於保護端點。另一方面,組播在協定中內建了一些隱性保護。理想情況下,流量僅能到達已加入所討論流量的接收方。
使用ASM,源可以透過組播流量傳輸到活動RP所支援的任何組,來啟動流量插入或DoS攻擊。理想情況下,此流量不會到達接收方,但可以至少到達路徑中的第一跳路由器,也可以到達RP,從而允許有限的攻擊。但是,如果惡意源知道目標接收方感興趣的組,並且如果沒有適當的過濾器,它可以將流量傳送到該組。只要接收方監聽組,就會接收此流量。
使用SSM時,如果第一跳路由器沒有接收方加入該(S,G)通道,則流量停止時,才可能受到不必要來源的攻擊。這不會導致第一跳路由器受到任何狀態攻擊,因為它會丟棄接收方沒有明確加入狀態的所有SSM流量。在此模型中,惡意源僅知道目標對哪個組感興趣是不夠的,因為「連線」是源特定的。在這裡,需要欺騙的IP源地址加上潛在的路由攻擊才能成功。
即使網路中沒有接收器,PIM-SM也會在最靠近源的第一跳路由器以及交匯點上建立(S,G)和(*,G)狀態。因此,在源第一跳路由器和PIM-SM RP上的網路可能存在狀態攻擊。
如果惡意源開始向多個組傳送流量,則對於檢測到的每個組,處於網路狀態的路由器會在源和RP上建立狀態(條件是RP配置允許所述組)。
因此,PIM-SM會受到來源的狀態和流量攻擊。如果源地址在正確的字首內隨機更改其源IP地址,或者換句話說,只有地址的主機位被欺騙,則攻擊可能會加重。
圖4:ASM RP攻擊
與PIM-SSM一樣,來自源的PIM-BiDir狀態建立攻擊是不可能的。PIM-BiDir中的流量在由來自接收方加入建立的狀態上轉發,並在轉發到RP的狀態上轉發,以便它可以到達RP後面的接收方,因為加入僅到達RP。將流量轉發到RP的狀態稱為(*,G/M)狀態,由RP配置(靜態、自動RP、BSR)建立。它不會在源的情況下發生更改。因此,攻擊者可以將組播流量傳送到PIM-BiDir RP,但與PIM-SM不同,PIM-BiDir RP不是「活動」實體,而只是轉發或丟棄PIM-BiDir組的流量。
註:在某些Cisco IOS平台(*,G/M)上不支援狀態。在這種情況下,源可以透過將流量傳送到多個PIM-BiDir組來攻擊路由器,從而導致(*,G)狀態建立。例如,Catalyst 6500交換機支援(*,G/M)狀態)。
攻擊可能源自組播接收器。任何傳送IGMP/MLD報告的接收方通常會在第一跳路由器上建立狀態。單播中沒有等效機制。
圖5:接收端基於顯式加入的流量轉發
接收方攻擊可以分為三種型別:
緩解此類攻擊的各種方法將在下一節「組播網路內的安全」中介紹。
安全不是單點功能,而是每個網路設計的一個固有組成部分。因此,必須在網路中的每個點考慮安全性。每個網路元素都必須得到適當的保護,這一點至關重要。一種可能的攻擊場景是路由器被入侵者破壞,適用於任何技術。一旦入侵者控制了路由器,攻擊者就可以實施多種不同的攻擊場景。因此,每個網路元素都必須相應地受到保護,以防範任何形式的基本攻擊以及特定的組播攻擊。
注意:某些平台(如Catalyst 9000系列交換機)預設啟用CoPP,並且不會取代保護。 有關其他資訊,請參閱CoPP指南。
如果您決定在即時網路中調整、修改或建立rACL或CoPP,請務必小心。由於這兩個功能都能夠過濾到控制平面的所有流量,因此必須明確允許所有所需的控制平面和管理平面協定。所需的協定清單非常龐大,很容易忽略不太明顯的協定,例如終端訪問控制器訪問控制系統(TACACS)。在部署到生產網路之前,所有非預設rACL和CoPP配置必須始終在實驗室環境中經過測試。此外,初始部署只需從「允許」策略開始。這允許使用ACL命中計數器驗證任何意外命中。
在組播環境中,必須在rACL或CoPP中允許所需的組播協定(PIM、MSDP、IGMP等),組播才能正常運行。請務必記住,來自PIM-SM場景中的源的組播流中的第一個資料包用作控制平面資料包,以幫助建立組播狀態,一直到裝置的控制平面。因此,在rACL或CoPP中允許相關的組播組非常重要。由於存在許多平台特定的例外,因此在部署之前,請務必查閱相關文檔並測試任何計畫的配置。
在Cisco IOS XR上,本地封包傳輸服務(LPTS)就像是思科IOS上的CoPP,充當通往路由器控制平面的流量管制器。此外,接收流量(包括單播和組播流量)可以過濾和速率限制。
在啟用組播的網路中,每個網路元素都需要使用組播特定的安全功能進行保護。本節針對一般路由器保護進行了概述。下一節將討論並非每台路由器都需要的功能,但僅限於網路中的特定位置,以及需要路由器之間互動(例如PIM身份驗證)的功能。
ip multicast route-limit <mroute-limit> <warning-threshold>
圖6:Mroute限制
Mroute限制允許設定組播路由表中允許的路由數量的閾值。如果啟用了組播路由限制,則不會建立超出配置限制的組播狀態。還有一個警告閾值。當路由數量超過警告閾值時,會觸發系統日誌警告消息。在mroute limit處,會觸發狀態的任何其它資料包將被丟棄。
ip multicast route-limit命令也適用於每個MVRF。
停用SAP監聽:無ip sap監聽
sap listen命令會使路由器接收會話宣告協定/會話描述協定(SAP/SDP)消息。SAP/SDP是一種從組播主幹(MBONE)的天數開始的舊協定。這些消息指示有關未來或當前可用的組播內容的目錄資訊。這可能是對路由器CPU和記憶體資源執行DoS的源,因此需要停用此功能。
控制對mrinfo資訊的訪問- 「ip multicast mrinfo-filter」命令
mrinfo命令(在Cisco IOS以及某些Microsoft Windows和Linux版本上提供)使用各種消息來查詢組播路由器以獲取資訊。ip multicast mrinfo-filter全局配置命令可用於將此資訊的訪問限制在源子集或完全停用。
此示例拒絕源自192.168.1.1的查詢,而允許來自任何其他源的查詢:
ip multicast mrinfo-filter 51 access-list 51 deny 192.168.1.1 access-list 51 permit any
此示例拒絕來自任何源的mrinfo請求:
ip multicast mrinfo-filter 52 access-list 52 deny any
注意:與任何ACL一樣,deny 表示過濾資料包,而permit表示允許該資料包。
如果mrinfo命令用於診斷目的,則強烈建議使用相應的ACL配置ip multicast mrinfo-filter命令以僅允許從源地址的子集進行查詢。mrinfo命令提供的資訊也可以透過SNMP進行檢索。強烈建議使用完整的mrinfo請求塊(阻止來自裝置查詢的任何源)。
ip multicast group-range <std-acl> ipv6 multicast group-range <std-acl>
如果ACL拒絕的任何組顯示資料包,則這些資料包在所有控制協定(包括PIM、IGMP、MLD和MSDP)中都會被丟棄,並且也會在資料平面上被丟棄。因此,不會為這些組範圍建立任何IGMP/MLD快取條目、PIM、組播路由資訊庫/組播轉發資訊庫(MRIB/MFIB)狀態,並且會立即丟棄所有資料包。
這些命令在裝置的全局配置中輸入。
建議您在網路中所有路由器上部署此命令,以便控制源自網路外部的所有組播流量。請注意,這些指令會影響資料平面和控制平面。如果可用,此命令提供的覆蓋範圍比標準ACL更廣泛,因此是首選命令。
PIM路由器必須接收PIM Hello才能建立PIM鄰居關係。PIM鄰居關係也是指定路由器(DR)選舉、DR故障轉移以及傳送/接收PIM加入/修剪/斷言消息的基礎。
圖7:PIM鄰居控制
要禁止不需要鄰居,請使用ip pim neighbor-filter命令,如圖7所示。此命令過濾所有不允許的鄰居PIM資料包,包括Hello、加入/修剪資料包和BSR資料包。網段上的主機可能會偽裝源IP地址以充當PIM鄰居。需要第2層安全機制(即IP源防護)來防止源地址在網段上欺騙嘗試,或在接入交換機中使用VLAN ACL來防止來自主機的PIM資料包。關鍵字「log-input」可在ACL中用於記錄與ACE匹配的資料包。
PIM加入/修剪資料包被傳送到PIM鄰居,以從特定(S,G)或(*,G)路徑增加或移除該鄰居。PIM多點傳送封包是以「存留時間(TTL)=1」傳送的連結本機多點傳送封包。所有這些資料包都組播到眾所周知的全PIM路由器地址:224.0.0.13。這意味著,所有此類攻擊必須與受攻擊的路由器位於同一子網上。攻擊可能包括偽造的Hello、加入/修剪和斷言資料包。
注意:將PIM多播資料包中的TTL值人為增加或調整為大於1的值不會產生問題。All-PIM-Routers地址始終在路由器上本地接收和處理。正常和合法路由器絕不會直接轉發該資料包。
?為了保護RP免受潛在的PIM-SM註冊消息泛洪的影響,DR需要對這些消息進行速率限制。使用ip pim register-rate-limit命令:
ip pim register-rate-limit <count>
圖8:PIM-SM暫存器隧道控制
PIM單播資料包可用於攻擊RP。因此,基礎設施ACL可以保護RP免受此類攻擊。請記住,多播傳送方和接收方無需傳送PIM資料包,因此PIM協定(IP協定103)通常可在使用者邊緣進行過濾。
自動RP控制- RP通告過濾器
ip pim rp-announce filter命令是一種附加安全措施,可在可能的情況下使用自動RP進行配置:
ip pim rp-announce-filter
這可以在對映代理上配置,以控制哪些路由器被接受為哪些組範圍/組模式的候選RP。
圖9:自動RP - RP通告過濾器
自動RP控制-限制自動RP消息
使用多播邊界命令將自動RP資料包、RP通告(224.0.1.39)或RP發現(224.0.1.40)限制到特定PIM域:
ip multicast boundary <std-acl>
access-list 1 deny 224.0.1.39
access-list 1 deny 224.0.1.40
224.0.1.39 (RP-announce) 224.0.1.40 (RP-discover)
圖10:組播邊界命令
BSR控制-限制BSR消息
使用ip pim bsr-border 命令過濾PIM域邊界的BSR消息。無需ACL,因為BSR消息透過鏈路本地組播逐跳轉發。
圖11:BSR邊框
在最後一節中,將討論針對PIM-SP和RP控制平面資料包以及自動RP、BSR和MSDP消息的過濾器。
圖12顯示了結合地址範圍的自動RP過濾器的示例。顯示兩種連結區域的不同方式。從自動RP角度看,這兩個ACL是等效的。
圖12:自動RP過濾器/作用域
自動RP的介面邊界過濾器的思想是確保自動RP通告僅到達它們支援的區域。區域、公司和Internet範圍均已定義,每個範圍中都有RP和自動RP通告。管理員只希望區域路由器知道區域RP,區域和公司路由器知道公司RP,並希望所有網際網路RP都全局可用。範圍可以進一步擴展。
如圖所示,過濾自動RP資料包有兩種基本不同的方式:網際網路邊界顯式呼叫自動RP控制組(224.0.1.39和224.0.1.40),從而導致對所有自動RP資料包進行過濾。此方法可用於管理域的邊緣,在該邊緣沒有透過自動RP資料包。區域邊界使用filter-auto-rp關鍵字來檢查自動RP資料包中的rp到組範圍通告。如果ACL顯式拒絕通告,則在轉發資料包之前會將其從自動RP資料包中刪除。在示例中,這允許在區域內瞭解整個企業範圍的RP,而在從區域到企業其餘部分的邊界處過濾整個區域範圍的RP。
在本例中,ISP1充當PIM-SM中轉提供商。它們僅支援與鄰居的MSDP對等,並且只接受(S,G),但不接受(*,G)邊界路由器上的流量。
在域間(通常在自治系統之間)要採取兩種基本的安全措施:
圖13顯示了ISP1的邊界路由器中介面過濾器的示例配置。
要在域邊界保護資料層面,請禁止過濾器透過「host 0.0.0.0」和管理性作用域地址透過multicast boundary命令加入(*,G):
圖13:域間(*,G)過濾器
要保護控制平面,可透過三種基本安全措施強化MSDP:
1) MSDP SA過濾器
透過MSDP SA過濾器過濾MSDP消息的內容是一種「最佳慣例」。此過濾器的主要思想是避免組播狀態傳播給非網際網路範圍的應用和組,並且不需要在源域之外轉發。理想情況下,從安全形度來看,過濾器僅允許已知組(以及可能的發件人),並拒絕任何未知發件人和/或組。
通常無法明確列出所有允許的發件人和/或組。建議對每個組使用單個RP的PIM-SM域使用預設配置過濾器(無MSDP網狀組):
!--- Filter MSDP SA-messages. !--- Replicate the following two rules for every external MSDP peer. ! ip msdp sa-filter in <peer_address> list 111 ip msdp sa-filter out <peer_address> list 111 ! !--- The redistribution rule is independent of peers. ! ip msdp redistribute list 111 ! !--- ACL to control SA-messages originated, forwarded. ! !--- Domain-local applications. access-list 111 deny ip any host 224.0.2.2 ! access-list 111 deny ip any host 224.0.1.3 ! Rwhod access-list 111 deny ip any host 224.0.1.24 ! Microsoft-ds access-list 111 deny ip any host 224.0.1.22 ! SVRLOC access-list 111 deny ip any host 224.0.1.2 ! SGI-Dogfight access-list 111 deny ip any host 224.0.1.35 ! SVRLOC-DA access-list 111 deny ip any host 224.0.1.60 ! hp-device-disc !--- Auto-RP groups. access-list 111 deny ip any host 224.0.1.39 access-list 111 deny ip any host 224.0.1.40 !--- Scoped groups. access-list 111 deny ip any 239.0.0.0 0.255.255.255 !--- Loopback, private addresses (RFC 6761). access-list 111 deny ip 10.0.0.0 0.255.255.255 any access-list 111 deny ip 127.0.0.0 0.255.255.255 any access-list 111 deny ip 172.16.0.0 0.15.255.255 any access-list 111 deny ip 192.168.0.0 0.0.255.255 any !--- Default SSM-range. Do not do MSDP in this range. access-list 111 deny ip any 232.0.0.0 0.255.255.255 access-list 111 permit ip any any !
建議儘可能嚴格地過濾入站和出站方向。
有關MSDP SA過濾器建議的詳細資訊,請使用:https://www.cisco.com/c/en/us/support/docs/ip/ip-multicast/13717-49.html
2) MSDP狀態限制
在多個自治系統(AS)之間啟用MSDP時,建議限制路由器中由於從鄰居接收的「源-活動」(SA)消息而建立的狀態量。您可以使用ip msdp sa-limit命令:
ip msdp sa-limit <peer> <limit>
圖14:MSDP控制平面
使用ip msdp sa-limit命令,您可以限制由於從MSDP對等體接收的SA消息而建立的SA狀態的數量。一些簡單的經驗法則建議包括:
3) MSDP MD5鄰居身份驗證
建議在MSDP對等裝置上使用消息摘要演算法(MD5)密碼身份驗證。這使用TCP MD5簽名選項,與RFC 6691中所述的用於保護BGP的用法相同。
圖15:MSDP MD5鄰居身份驗證
這三個MSDP安全建議追求不同的目標:
透過適當的單播安全機制,可以緩解發信人提出的許多組播安全問題。下面是推薦的一些單播安全機制的最佳實踐:
此類措施可用於阻止對核心的定向攻擊。例如,這還可以解決使用PIM單播資料包到RP的攻擊等問題,RP位於網路內部,因此受基礎設施ACL保護。
在圖16所示的示例中,過濾器是在第一跳多播路由器(指定路由器)的LAN介面(E0)上配置的。過濾器由稱為「源」的擴展訪問控制清單定義。此ACL應用於連線到源LAN的指定路由器的面向源的介面。事實上,由於組播流量的性質,所有面向區域網的介面上都需要配置一個類似的過濾器,源地址可能會變為活動狀態。由於不可能在所有情況下都準確知道源活動發生的位置,因此建議對網路中的所有入口點應用此類過濾器。
圖16:控制項來源
此過濾器的目的是防止從特定源地址或源地址範圍到特定組或組地址範圍的流量。此過濾器在PIM建立任何mroutes之前起作用,並幫助限制狀態。
這是標準資料層面ACL。這在高端平台的ASIC上實現,不會造成效能損失。對於直接連線的源,建議首選資料層面ACL,而不是控制層面ACL,因為它們可以最大限度地減少不需要的流量對控制層面的影響。限制資料包可以傳送到的目標(IP組播組地址)也非常有效。由於這是路由器命令,因此它無法克服偽裝的源IP地址(請參閱本部分的前面部分)。因此,建議為可以連線到特定區域網/虛擬區域網(LAN/VLAN)的所有裝置提供額外的第2層(L2)機制或一致的策略。
注意:ACL中的「log」關鍵字對於瞭解特定ACL條目的命中非常有用;但是,這會佔用到CPU資源,需要謹慎處理。此外,在基於硬體的平台上,ACL日誌消息由CPU生成,因此必須考慮CPU的影響。
?從安全形度來看,ASM/PIM-SM體系結構的實際優勢之一是,交匯點為網路中任意組範圍內的所有源提供單點控制。這可以與稱為accept-register過濾器的裝置一起使用。此過濾器的命令如下:
ip pim accept-register / ipv6 pim accept-register
圖17:PIM-SM源控制
在PIM-SM網路中,可以使用此命令控制不需要的流量源。當源流量到達第一跳路由器時,第一跳路由器(DR)建立(S,G)狀態並向RP傳送PIM源暫存器消息。如果源地址未列在accept-register過濾器清單中(在RP上配置),則RP拒絕該註冊,並將立即註冊停止消息傳送回DR。
在圖中所示的示例中,簡單的ACL已應用到RP,RP僅過濾源地址。也可以在RP上使用擴展ACL過濾源和組。
源過濾器存在缺點,因為在RP上使用pim accept-register命令時,仍會在源的第一跳路由器上建立PIM-SM (S,G)狀態。這可能導致源裝置本地的接收裝置上的流量位於源裝置和RP裝置之間。此外,pim accept-register 命令可在RP的控制平面上工作。這可能用於使RP過載假註冊消息,並可能導致DoS情況。
建議在RP上應用pim accept-register命令以及其他方法,例如在所有進入網路的DR上應用簡單資料平面ACL。 儘管在配置完美並運行的網路中,DR上的入口ACL足以滿足需求,但建議您在邊緣路由器上配置錯誤時,將RP上的pim accept-register命令配置為次要安全機制。具有相同目標的分層安全機制稱為「深度防禦」,是安全領域的常見設計原則。
大多數接收方問題屬於IGMP/MLD接收方協定互動領域。
圖18:控制IGMP
過濾IGMP或MLD資料包時,請記住以下幾點:
預設情況下,一旦啟用IP組播,IGMP進程即啟用。IGMP資料包也承載這些協定,因此每當啟用組播時,都會啟用所有這些協定:
有關詳細資訊,請參閱IANA的網際網路組管理協定(IGMP)型別編號
Router> mtrace 172.16.0.0 172.16.0.10 239.254.254.254 Type escape sequence to abort. Mtrace from 172.16.0.0 to 172.16.0.10 via group 239.254.254.254 From source (?) to destination (?) Querying full reverse path... 0 172.16.0.10 -1 172.16.0.8 PIM thresh^ 0 0 ms -2 172.16.0.6 PIM thresh^ 0 2 ms -3 172.16.0.5 PIM thresh^ 0 894 ms -4 172.16.0.3 PIM thresh^ 0 893 ms -5 172.16.0.2 PIM thresh^ 0 894 ms -6 172.16.0.1 PIM thresh^ 0 893 ms
單播IGMP資料包(用於IGMP/UDLR)可被過濾,因為它們很可能是攻擊資料包,而不是有效的IGMP協定資料包。Cisco IOS支援單點傳播IGMP封包,可支援單向連結和其他例外狀況。
偽造的IGMP/MLD查詢資料包可能會導致IGMP版本低於預期。
特別是,主機最好從不傳送IGMP查詢,因為以較低的IGMP版本傳送的查詢會導致收到此查詢的所有主機恢復為較低版本。如果存在IGMPv3/SSM主機,則可能會「攻擊」SSM流。對於IGMPv2,這可能會導致更長的離開延遲。
如果存在具有單個IGMP查詢器的非冗餘LAN,路由器需要丟棄接收到的IGMP查詢。
如果存在冗餘/通用被動LAN,則需要能夠進行IGMP監聽的交換機。在此案例中,有2個特定功能可以為您提供幫助:
路由器防護
如果交換機在該埠上收到組播路由器控制資料包(IGMP常規查詢、PIM Hello或CGMP Hello),則任何交換機埠都可以成為組播路由器埠。當交換機埠成為組播路由器埠時,所有組播流量都將傳送到該埠。使用「路由器防護」可以防止發生這種情況。路由器防護功能不需要啟用IGMP監聽。
路由器防護功能允許將指定的埠指定為組播主機埠。即使收到多點傳送路由器控制封包,連線埠也不能成為路由器連線埠。
如果在啟用路由器防護的連線埠上收到以下封包型別,則會捨棄這些封包型別:
丟棄這些資料包時,會更新統計資訊,指示由於路由器防護而丟棄資料包。
IGMP最低版本
可以配置允許的IGMP主機的最低版本。例如,您可以禁止所有IGMPv1主機或所有IGMPv1和IGMPv2主機。此篩選器僅適用於成員資格報告。
如果主機連線到一個通用的「被動」LAN(例如,不支援IGMP監聽的交換機,或者沒有針對該交換機進行配置),那麼路由器除了忽略隨後觸發的「舊版本」成員報告而不自行恢復之外,對於此類錯誤查詢也無能為力。
由於IGMP查詢對所有主機都必須可見,因此不可能使用具有預共用金鑰(例如靜態金鑰IPSec)的基於雜湊的消息身份驗證(HMAC)機制來驗證來自「有效路由器」的IGMP查詢。如果兩個或多個路由器連線到一個通用LAN網段,則需要選擇IGMP查詢器。在這種情況下,唯一可用的過濾器是ip訪問組過濾器,它基於傳送查詢的另一台IGMP路由器的源IP地址。
必須允許「正常」組播IGMP資料包。
此過濾器可用於接收器埠,僅允許「良好」的IGMP資料包,並過濾已知的「不良」資料包:
ip access-list extended igmp-control <snip> deny igmp any any pim ! No PIMv1 deny igmp any any dvmrp ! No DVMRP packets deny igmp any any host-query ! Do not use this command with redundant routers. ! In that case this packet type is required ! permit igmp any host 224.0.0.22 ! IGMPv3 membership reports permit igmp any any 14 ! Mtrace responses permit igmp any any 15 ! Mtrace queries permit igmp any 224.0.0.0 10.255.255.255 host-query ! IGMPv1/v2/v3 queries permit igmp any 224.0.0.0 10.255.255.255 host-report ! IGMPv1/v2 reports permit igmp any 224.0.0.0 10.255.255.255 7 ! IGMPv2 leave messages deny igmp any any ! Implicitly deny unicast IGMP here!
<snip> permit ip any any ! Permit other packets interface ethernet 0 ip access-group igmp-control in
注意:此型別的IGMP過濾器可用於接收ACL或CoPP。在這兩種應用中,都需要結合其它流量處理的過濾器,例如路由和管理平面協定。
圖19:主機接收器端存取控制
要過濾發往接收方的流量,請不要過濾資料平面流量,而是過濾控制平面協定IGMP。由於IGMP是接收組播流量的必要前提,因此不需要資料平面過濾器。
特別是,您可以限制接收方可以加入的組播流(連線到配置該命令的介面)。在這種情況下,請使用ip igmp access-group / ipv6 mld access-group 命令:
ip igmp access-group / ipv6 mld access-group
對於ASM群組,此命令只會根據目的地位址進行篩選。然後會忽略ACL中的來源IP位址。對於使用IGMPv3/MLDv2的SSM組,它會根據源和目標IP進行過濾。
此示例過濾所有IGMP揚聲器的給定組:
access-list 1 deny 226.1.0.0 0.0.255.255
access-list 1 permit any log
!
interface ethernet 1/3
ip igmp access-group 1
此示例過濾給定組的特定IGMP揚聲器(因此,特定的組播接收器):
ip access-list extended test5 deny igmp host 10.4.4.4 host 232.2.30.30 permit igmp any any ! interface Ethernet0/3 ip igmp access-group test5
ip igmp limit <n> [ except <ext-acl> ] ipv6 mld limit <n> [ except <ext-acl> ]
建議始終為每個介面配置此限制,同時全局配置此限制。在每種情況下,限制都指IGMP快取中的條目數。
以下兩個示例展示如何使用此命令幫助限制住宅寬頻網路邊緣的組數量。
示例1 -將接收組限制為僅包含SDR通告和一個接收通道
會話目錄(SDR)充當某些組播接收器的通道指南。有關詳細資訊,請參閱RFC 2327。
一個常見的要求是限制接收方接收SD組加一個通道。可以使用以下示例配置:
ip access-list extended channel-guides permit ip any host 239.255.255.254 ! SDR announcements deny ip any any ip igmp limit 1 except channel-guides interface ethernet 0 ip igmp limit 2 except channel-guides
本示例中的訪問清單僅指定了通道指南;全局ip igmp limit命令將每個IGMP源限制為一(1)個通道,但不包括總是可以接收的通道指南。interface命令會覆蓋全局命令,並且除了通道指南外,還允許在此介面上接收兩(2)個通道。
示例2 -聚合DSLAM鏈路上的准入控制
此命令還可用於提供某種形式的頻寬准入控制。例如,如果必須分配300個SDTV頻道(每個頻道4Mbps),並且有一個指向數字使用者線路接入多路複用器(DSLAM)的1Gbps鏈路,則可以做出策略決定,將電視頻寬限制為500 Mbps,並將剩餘頻寬留給網際網路和其他用途。在這種情況下,您可以將IGMP狀態限制為500 Mbps/4 Mbps = 125 IGMP狀態。
這種情況下可以使用以下配置:
圖20:使用每介面IGMP限制;對Agg-DSLAM鏈路的准入控制
ip multicast limit [ rpf | out | connected ] <ext-acl> <max>
在輸入和輸出介面上可以單獨限制狀態。直接附加的源狀態也可以使用「已連線」關鍵字進行限制。以下範例說明此命令的用法:
示例1 - Agg-DSLAM鏈路上的出口准入控制
在本例中,有300個SD電視頻道。假設每個SD通道需要4 Mbps,總速率不超過500 Mbps。最後,還假設需要支援基本、擴展和高級捆綁包。頻寬分配示例:
然後每個通道使用4 Mbps,將DSLAM上行鏈路限制為:
配置面向來自PEAgg的DSLAM的出站介面的限制:
圖21:使用每介面mroute限制;Agg-DSLAM鏈路的准入控制
示例2 - Agg-DSLAM鏈路上的入口准入控制
不同於上游裝置的出站介面上的「out」限制,可以在下游裝置的RPF介面上使用RPF限制。這可以有效地產生與之前示例相同的結果,如果下游裝置不是Cisco IOS裝置,則此結果會很有用。
圖22:使用每個介面的Mroute限制;輸入准入控制
示例3 -基於頻寬的限制
您可以在多個內容提供商之間進一步細分訪問頻寬,並為每個內容提供商提供到DSLAM的上行鏈路上頻寬的公平份額。在這種情況下,請使用ip multicast limit cost命令:
ip multicast limit cost <ext-acl> <multiplier>
使用此命令,可以將「成本」(使用「multiplier」中指定的值)歸屬於與ip組播限制中擴展ACL匹配的任何狀態。
此命令為全局命令,可同時配置多個開銷。
在本例中,必須支援三個不同的內容提供商,以便他們能夠公平地訪問每個內容提供商到網路中。此外,在此範例中,需要支援各種型別的動態影像專家組(MPEG)串流:
MPEG2 SDTV:4Mbps
MPEG2 HDTV:18Mbps
MPEG4 SDTV:1.6Mbps
MPEG4 HDTV:6Mbps
在這種情況下,您可以為每個流型別分配頻寬成本,並使用以下配置在三個內容提供商之間共用750Mbps的剩餘部分:
ip multicast limit cost acl-MP2SD-channels 4000 ! from any provider ip multicast limit cost acl-MP2HD-channels 18000 ! from any provider ip multicast limit cost acl-MP4SD-channels 1600 ! from any provider ip multicast limit cost acl-MP4HD-channels 6000 ! from any provider ! interface Gig0/0 description --- Interface towards DSLAM --- <snip> ! CAC ip multicast limit out 250000 acl-CP1-channels ip multicast limit out 250000 acl-CP2-channels ip multicast limit out 250000 acl-CP3-channels
圖23:每個介面Mroute狀態限制的成本係數
與單播一樣,組播流量有時也需要得到保護,以提供保密性或完整性保護。可能需要此類服務的領域主要有兩個:
IPSec作為一種通訊協定[RFC 6040、7619、4302、4303、5282]特別限制為單點傳播流量(由RFC)。在那裡,兩個單播對等體之間建立了「安全關聯」(SA)。要將IPSec應用於組播流量,一個選項是在GRE隧道內封裝組播流量,然後將IPSec應用於GRE隧道(單播)。較新的方法使用在組的所有成員之間建立的單個安全關聯。組解釋域(GDOI) [RFC 6407]定義如何實現此目的。
基於GDOI,思科開發了一種稱為組加密傳輸(GET) VPN的技術。該技術使用文檔「draft-ietf-msec-ipsec-extensions」中定義的「具有地址保留的隧道模式」。在GET VPN中,首先在組的所有成員之間建立組安全關聯。隨後,使用ESP(封裝安全負載)或AH(身份驗證報頭)保護流量,使用具有地址保留的隧道模式。
總之,GET VPN封裝了一個使用原始報頭地址資訊的組播資料包,然後使用ESP保護與組策略相關的內部資料包。
GET VPN的優點是組播流量完全不受安全封裝機制的影響。路由的IP報頭地址與原始IP報頭地址相同。無論是否使用GET VPN,組播流量均可採用相同的方法加以保護。
應用於GET VPN節點的策略在組金鑰伺服器上集中定義,並分發到所有組節點。因此,所有組節點都具有相同的策略,並且應用於組流量的安全設定相同。與標準IPSec類似,加密策略定義哪種型別的流量需要以哪種方式受到保護。這樣GET VPN便可用於各種用途。
在組金鑰伺服器上設定網路範圍的加密策略,並將其分發到GET VPN終端。該策略包含IPSec策略(IPSec模式-此處:具有報頭保留的隧道模式)和要使用的安全演算法(例如AES)。它還包含一個策略,描述可以保護哪些流量(如ACL所定義)。
GET VPN可用於組播和單播流量。ACL可以定義保護單播流量的策略:
permit ip 10.0.0.0 0.255.255.255 10.0.0.0 0.255.255.255
這會加密來源IP為10/8且目的地IP為10/8的所有流量。GET VPN會忽略所有其他流量,例如從10/8到另一個地址的流量。
GET VPN用於組播流量的技術相同。例如,此訪問控制條目(ACE)可用於保護從任何源到相應組播組的流量:
permit ip any 239.192.0.0 0.0.255.255
此策略匹配所有源(「any」)和以239.192開頭的所有組播組。流向其他組播組的流量不安全。
注意:必須特別注意加密ACL的構造。必須在GDOI策略中排除管理流量,或源自GET VPN域外但在內部終止的流量(即僅透過一個加密端點的流量)。
?常見的錯誤包括:
驗證控制平面流量(例如路由協定)通常是一種最佳實踐,可確保消息來自受信任的對等體。對於使用單播的控制平面協定(例如BGP),這相對簡單。然而,許多控制平面協定使用組播流量。例如OSPF、RIP和PIM。有關完整清單,請參閱IANA的IPv4多播地址空間登錄檔。
其中某些協定具有內建身份驗證,例如路由資訊協定(RIP)或增強型內部組路由協定(EIGRP),而其它協定則依賴IPSec提供此身份驗證(例如OSPFv3、PIM)。對於後一種情況,GET VPN提供了一種可擴展的方法來保護這些協定。在大多數情況下,需要驗證協定消息,或者換句話說,驗證消息是由受信任的對等體傳送的。但是,GET VPN也允許對此類消息進行加密。
要保護(通常僅進行身份驗證)此類控制平面流量,需要使用ACL描述流量並將其包括在GET VPN策略中。詳細資訊取決於要保護的協定,其中需要注意ACL是否包括僅透過入口GET VPN節點(已封裝)的流量,還是也透過出口節點的流量。
保護PIM協定有兩種基本方法:
注意:這些命令作為示例提供,用於幫助解釋概念。 例如,必須排除某些用於引導PIM的PIM協定,例如BSR或自動RP。這兩種方法都有一定的優點和不便之處,這取決於具體部署情況。有關詳細資訊,請參閱有關如何使用GET VPN保護PIM的特定文獻。
組播是網路中越來越常見的一種服務。家庭/家庭寬頻網路中的IPTV服務的出現,以及世界許多金融市場向電子交易應用遷移,僅僅是要求將組播作為絕對要求的兩個例子。組播具有各種不同的配置、操作和管理挑戰。其中一項關鍵挑戰是安全。
本文檔研究了多種可以保護組播的方法:
考慮到組播安全,請記住它與單播有何不同。組播傳輸基於動態狀態的建立,組播涉及動態資料包複製,組播根據PIM JOIN/PRUNE消息建立單向樹。整個環境的安全涉及瞭解和部署豐富的Cisco IOS命令架構。這些命令主要圍繞保護協定操作、狀態(組播)或針對資料包放置的監察器(如CoPP)為中心。 正確使用這些命令可以為IP組播提供強大的保護服務。
綜上所述,本文提出並描述了多種方法:
IP組播是一種令人興奮且可擴展的方式,可提供各種應用服務。與單播一樣,它需要在各種不同區域中進行保護。本文提供了保護IP組播網路的基本構建塊。
修訂 | 發佈日期 | 意見 |
---|---|---|
1.0 |
24-Aug-2022 |
初始版本 |