獨立的安全調研公司 最近對 Cisco Catalyst 2950 、 Catalyst 3550 、 Catalyst 4500 和 Catalyst 6500 系列交換機上采用的虛擬 LAN ( VLAN )技術進行了一次安全檢查 。雖然此次檢查沒有暴露出嚴重的安全漏洞,但必須指出的是,如果交換機的配置不正確或不適當,則很有可能引發意外行為或發生安全問題。
去年,思科系統公司一直致力于在若干文檔中制定安全網絡配置的最佳實踐準則,例如《 SAFE 藍圖》 [2] 或《 Catalyst 4500 、 5000 和 6500 系列交換機最佳實踐經驗》 [3] 。但是,迄今為止,思科還沒有提供一本全面介紹與 VLAN 相關的所有最佳實踐經驗、可方便客戶和現場工程師參考的文檔。
本文的目的是全面介紹思科工程師多年積累的豐富經驗和建議,幫助客戶和現場工程師正確地在思科交換機上配置 VLAN 。除此以外,本文還將通過要點說明解釋 @stake 測試的主要結果,闡述解決安全問題的方法。
基本安全準則
要想創建安全的交換網,必須先熟悉基本安全準則。需要特別注意的是, SAFE 最佳實踐 [2] 中強調的基本準則是設計任何安全交換網的基石。
如果用戶不希望任何設備受損,則必須嚴格控制對該設備的訪問。不僅如此,所有網絡管理員都應該使用思科平臺上提供的所有實用安全工具,包括系統密碼的基本配置、 IP 準入過濾器和登陸檢查,以及 RADIUS 、 TACACS+ 、 Kerberos 、 SSH 、 SNMPv3 、 IDS 等更先進的工具(詳情參見 [3] )。
必須使所有基本安全準則得到滿足之后,再關注更先進的安全細節。在下面的章節中,我們將說明與 VLAN 相關的問題。
虛擬 LAN
第二層( L2 )交換機指能夠將若干端口組成虛擬廣播域,且各虛擬廣播域之間相互隔離的設備。這些域一般稱為虛擬 LAN ( VLAN )。
VLAN 的概念與網絡領域中的其它概念相似,流量由標記或標簽標識。標識對第二層設備非常重要,只有標識正確,才能隔離端口并正確轉發接收到的流量。正如后面章節中將要介紹的那樣,缺乏標識有時是引發安全問題的原因,因而需要避免。
如果設備中的所有分組與相應 VLAN 標記緊密結合,則能夠可靠區分不同域的流量。這就是 VLAN 交換體系結構的基本前提。
值得注意的是,在物理鏈路(有時稱為干線)上,思科設備使用的是 ISL 或 802.1Q 等常用的 VLAN 標記技術。與此同時,思科設備使用先進標記技術在內部保留 VLAN 信息,并用于流量轉發。
此時,我們可以得出這樣的結論:如果從源節點發送出去之后,分組的 VLAN 標識不能被修改,即保持端到端不變,則 VLAN 的可靠性應等價于物理安全性。
關于這個問題,我們還將在下面詳細討論。
控制面板
惡意用戶特別希望能夠訪問網絡設備的管理控制臺,因為一旦成功,就能夠容易地根據他們的需要修改網絡配置。
在基于 VLAN 的交換機中,除與帶外端口直接連接外,管理 CPU 還可以使用一個或多個 VLAN 執行帶內管理。另外,它還可以使用一個或多個 VLAN 與其它網絡設備交換協議流量。
基本物理安全準則要求網絡設備位于可控(鎖定)空間,主要 VLAN 安全準則則要求將帶內管理和協議流量限制在可控環境中。這個要求可以通過以下工具和最佳實踐經驗實現:
• 流量和協議 ACL 或過濾器
• QoS 標記和優先級劃分(控制協議由相應的服務等級或 DSCP 值區分)
• 有選擇地關閉不可信端口上的第二層協議(例如關閉接入端口上的 DTP )
• 只在專用 VLAN 上配置帶內管理端口
• 避免使用 VLAN 1 傳輸任何數據流量
命令示例:
Catalyst 操作系統( CatOS )軟件 Cisco IOS ò 軟件
使用 VLAN 1 需注意的事項
VLAN 1 成為特殊 VLAN 的原因是,需要第二層設備才能由默認 VLAN 分配其端口,包括其管理端口。另外, CDP 、 PAgP 和 VTP 等許多第二層協議都需要發送到干線鏈路上的特定 VLAN 。基于這三個原因,最后選中了 VLAN 1 。
因此,如果裁剪不當, VLAN 1 有時會不明智地包含整個網絡。當其直徑達到一定程度時,不穩定性風險將迅速升高。不僅如此,如果使用幾乎覆蓋全網的 VLAN 執行管理任務,則將提高可信設備的風險,使其容易受到因誤配置或意外接入而進入 VLAN 1 ,或者特意利用這種意外安全漏洞接入 VLAN 1 的不可信設備的攻擊。
為挽回 VLAN 1 的聲譽,可實施一個簡單的通用安全準則:作為一項安全規定,網絡管理員應該將任何 VLAN ,尤其是 VLAN 1 與并非絕對需要此 VLAN 的所有端口隔離開。
因此,對于 VLAN 1 ,上述準則可以轉換成以下建議:
• 不使用 VLAN 1 傳輸帶內管理流量,使用另一專用 VLAN ,將管理流量與用戶數據和協議流量隔離開;
• 撤銷 VLAN 1 中所有不需要的干線和接入端口(包括未連接端口和關閉端口)。
同樣,上述規則也適用于管理 VLAN 讀操作:
• 不在不需要的任何干線或接入端口上配置管理 VLAN (包括未連接端口和關閉端口);
• 為增強安全性,應盡可能不使用帶內管理,轉而使用帶外管理(如果想詳細了解帶外管理基礎設施,請參見 [3] )。
作為一項設計準則,必須“切掉”特定 VLAN 中不需要的流量。例如,為防止所有 telnet 連接,只運行 SSH 進程,通常會對管理 VLAN 中傳輸的流量應用 VLAN ACL 和 / 或 IP 過濾器。另外,也可以應用 QoS ACL ,以便限制呼叫流量的最高速率。
如果 VLAN 1 或者管理 VLAN 以外的 VLAN 出現安全問題,應使用自動或人工剪裁。需要注意的是,以透明或關閉方式配置 VTP 或者人工剪裁 VLAN 通常是增強對 VLAN 網絡控制的最有效的方法。
命令示例:
CatOS Cisco IOS 軟件
“完全信任或完全不信任所有人同樣有害”——英國諺語
正確決定并實施 VLAN 1 之后,下一個邏輯步驟是將注意力轉向安全環境中另一常用的、同等重要的最佳實踐。這是個通用的安全準則:將不可信設備與不可信端口相連,將可信設備或可信端口相連,斷開所有其他端口。這個準則可轉變為以下通用建議:
• 如果某端口與“外部”設備相連,則不要與它進行任何通信,否則,很可能會中了某人的圈套,產生對自己不利的效果。在這些端口上,應關閉 CDP 、 DTP 、 PAgP 、 UDLD 及其它不必要的協議,并啟用 portfast/BPDU 防護。我們可以這樣想這個問題:為什么要冒險與不可信任的鄰居交談呢?
• 啟用根防護特性,防止直接或間接連接的 STP 型設備影響根橋的位置。
• 如果想限制或防止意外協議與網絡級 VLAN 配置交互,應對 VTP 域作相應的配置,或者全部關閉 VTP 。這種預防措施不但能限制或防止將管理員的錯誤傳播到整個網絡,還能限制或防止 VTP 版本較高的新交換機意外地覆蓋掉整個域的 VLAN 配置。
• 默認狀態下,只能相信那些確實“可信”的端口,所有其它端口則一律定為“不可信”端口,以防止連接的設備不適當地修改 QoS 值。
• 關閉未使用端口,將其放置在未使用 VLAN 中。如果不與未使用 VLAN 建立連接,或者不在未使用 VLAN 中添加設備,就可以通過基本的物理或邏輯障礙來防止非授權訪問。
命令示例:
CatOS Cisco IOS 軟個件
為什么首先擔心第二層安全性?
為使不同層次能夠獨立操作(只了解其相互接口),我們建立了 OSI 模型。 OSI 的思想是:只要留有各層次之間的標準接口,某層協議的開發就不會影響到其它層次。
遺憾的是,這意味著,當某個層次遭襲時,由于其它層次意識不到問題的存在,因而會危及通信的安全性(如圖 1 所示)。
圖 1 OSI 模型的結構
在這個體系結構中,系統的安全性只相當于最薄弱鏈路的安全性。
數據鏈路層與其它層次一樣脆弱,可能會遭受各種攻擊,因此,交換機必須通過配置加以保護。
VLAN 網絡可能會遇到哪類攻擊?
第二層的多數攻擊都將使設備失去攻擊者跟蹤能力,這樣,攻擊者就能夠在轉發路徑上大肆執行惡意操作,先修改配置,然后攻擊網絡。
下面列出的是人們最常談到的第二層攻擊,無獨有偶,這些也是 @stake 記錄的攻擊類型 [1] :
• MAC 洪泛攻擊
• 802.1Q 和 ISL 標記攻擊
• 雙封裝 802.1Q/ 嵌套式 VLAN 攻擊
• ARP 攻擊
• 專用 VLAN 攻擊
• 組播暴力攻擊
• 擴展樹攻擊
• 隨機幀重壓攻擊
下面詳細說明這些攻擊。
MAC 洪泛攻擊
從嚴格意義上講,這種攻擊不屬于 “攻擊”,因為它只是限制所有交換機和橋接器的工作路徑。它們占用了用于保存所有接收分組的源地址的有限硬件學習表,當這些表充滿后,由于無法再讀到流量的地址,無法轉發流量,因而會出現流量洪泛現象。但是,由于分組洪泛只局限在初始 VLAN 內,因而不允許 VLAN 跳轉(如 @stake 的報告所示)。
惡意用戶可以利用這種攻擊將與其連接的交換機轉變成啞偽集線器,搜索并查看所有洪泛流量。很多程序都可以用于執行此項任務,例如 macof ,它是 dsniff 套件的一部分 [4] 。惡意用戶可以利用這個弱點發起實際攻擊,例如 ARP 破壞攻擊(欲知詳情,請參見《 ARP 攻擊》)。
非智能交換機無法抵御這種攻擊,因為它不檢查發送方的第二層標識,發送方只需發送偽分組就能假冒無限數量的設備。
思科的交換機支持多種特性,以便識別并控制所連設備的身份。這些交換機奉行的安全準則非常簡單:認證和說明對所有不可信設備都至關重要。
需要強調的是,端口安全性、 802.1x 和動態 VLAN 這三個特性可用于根據用戶的登陸 ID 和設備自身的 MAC 層標識限制設備連接。
例如,利用端口安全性,預防 MAC 洪泛攻擊可以像限制每個端口可以使用的 MAC 地址數那么簡單:設備流量的標識將直接與其原始端口相接。
802.1Q 和 ISL 標記攻擊
標記攻擊屬于惡意攻擊,利用它,一個 VLAN 上的用戶可以非法訪問另一個 VLAN 。例如,如果將交換機端口配置成 DTP auto ,用于接收偽造 DTP 分組,那么,它將成為干線端口,并有可能接收通往任何 VLAN 的流量。因此,惡意用戶可以通過受控制的端口與其它 VLAN 通信。
有時候,即使只是接收普通分組,交換機端口也可能違背自己的初衷,像全能干線端口那樣操作(例如,從本地以外的其它 VLAN 接收分組)。這種現象通常稱為“ VLAN 滲漏”(如果想閱讀關于類似問題的報告,請參見 [5] )。
對于第一種攻擊,只需將所有不可信端口(不符合信任條件)上的 DTP 設置為“關”,即可預防這種攻擊的侵襲;要對付第二種攻擊,可以按照下面介紹的簡單配置步驟操作(例如下一節中介紹的步驟),也可以通過軟件升級實現。幸運的是, Cisco Catalyst 2950 、 Catalyst 3550 、 Catalyst 4000 和 Catalyst 6000 系列交換機并不需要進行這種升級,因為其上運行的軟件和硬件能夠在所有端口上實施適當的流量分類和隔離(如 @stake 在 [1] 中說明的那樣)。
那么,報告中為什么會提及本地 VLAN 呢 [5] ?我們將在下面的章節中提供答案 ......
雙封裝 802.1Q/ 嵌套式 VLAN 攻擊
雖然在交換機內部,但 VLAN 數字和標識用特殊擴展格式表示,目的是使轉發路徑保持端到端 VLAN 獨立,而且不會損失任何信息。在交換機外部,標記規則由 ISL 或 802.1Q 等標準規定。
ISL 屬于思科專有技術,是設備中使用的擴展分組報頭的緊湊形式:由于每個分組總會獲得一個標記,沒有標識丟失風險,因而可以提高安全性。
另一方面,制訂了 802.1Q 的 IEEE 委員會決定,為實現向下兼容性,最好支持本地 VLAN ,即不與 802.1Q 鏈路上任何標記顯式相關的 VLAN 。這種 VLAN 以隱含方式用于 802.1Q 型端口上接收到的所有無標記流量。
這種功能是用戶所希望的,因為利用這個功能, 802.1Q 型端口可以通過收發無標記流量直接與老 802.3 端口對話。但是,在所有其它情況下,這種功能可能會非常有害,因為通過 802.1Q 鏈路傳輸時,與本地 VLAN 相關的分組將丟失其標記,例如其服務等級( 802.1p 位)。
但是基于這些原因——丟失識別途徑和丟失分類信息,就應避免使用本地 VLAN ,更不要說還有其它原因,如圖 2 所示。
圖 2 雙封裝攻擊
先剝離,再送回
攻擊者 802.1q 幀 幀
VLAN A VLAN B 數據 包含本地 VLAN A 的干線 VLAN B 數據
注意: 只有干線所有的本地 VLAN 與攻擊者相同,才會發生作用。
當雙封裝 802.1Q 分組從 VLAN 恰巧與干線的本地 VLAN 相同的設備進入網絡時,這些分組的 VLAN 標識將無法端到端保留,因為 802.1Q 干線總會對分組進行修改,即剝離掉其外部標記。刪除外部標記之后,內部標記將成為分組的惟一 VLAN 標識符。因此,如果用兩個不同的標記對分組進行雙封裝,流量就可以在不同 VLAN 之間跳轉。
這種情況將被視為誤配置,因為 802.1Q 標準并不逼迫用戶在這些情況下使用本地 VLAN 。事實上,應一貫使用的適當配置是從所有 802.1Q 干線清除本地 VLAN (將其設置為 802.1q-all-tagged 模式能夠達到完全相同的效果)。在無法清除本地 VLAN 時, 應選擇未使用的 VLAN 作為所有干線的本地 VLAN ,而且不能將該 VLAN 用于任何其它目的 。 STP 、 DTP 和 UDLD (參見 [3] )等協議應為本地 VLAN 的唯一合法用戶,而且其流量應該與所有數據分組完全隔離開。
ARP 攻擊
ARP 協議 [6] 是一項老技術。 ARP RFC 產生的時候,網絡中的所有人都被視為“友好人士”,因而沒有在 ARP 功能中考慮安全性。這樣,任何人都可以聲稱自己是某個 IP 地址的所有者。更準確地說,任何人都可以聲稱其 MAC 地址與某個子網內的任何 IP 地址相關。這是完全可行的,因為 ARP 請求或答復中包含設備的第二層標識信息( MAC 地址)和第三層標識( IP 地址),而且沒有核實機制,無法核查這些標識的準確性。
在另一個實例中,由于不能用準確、可靠的手段確認設備的身份,因而出現了嚴重的安全漏洞。這個例子同時表明,如果 OSI 模型中的較低層次遭到攻擊,由于較高層意識不到問題的存在,因而將直接影響較高層的操作。( ARP 是一種獨特的協議樣本,它在第二層內運行,但從邏輯上,它位于 OSI 模型中數據鏈路層與網絡層之間的邊界上。)
@stake 發動的 ARP 攻擊的目的是,通過發送包含偽造標識的 ARP 分組,欺騙某交換機將分組轉發到另一個 VLAN 中的某臺設備。但是,在所有思科設備中, VLAN 是正交的,因而不依賴于 MAC 地址。所以,只通過修改 ARP 分組中的設備標識,是不可能影響它與其它 VLAN 內設備的通信方式的。事實上,正如報告中所說,不可能進行任何 VLAN 跳轉。
另一方面,在同一個 VLAN 內,利用 ARP 破壞或 ARP 欺詐攻擊 [7] ,可以有效地欺騙終端站點或路由器識別偽造的設備標識,致使惡意用戶能夠以中間人的身份,發動中間人( MiM )攻擊。
對于這種情況,一張圖可對其進行最好的說明(見圖 3 )。
圖 3 ARP 破壞攻擊
將免費信息送至 0000.0000.000B :我的 IP 地址為 1.1.1.1 ,我的 MAC 地址為 000:00:00:00:00:0C
PC 1.1.1.2 的 ARP 表受到侵襲。所有外出流量都將通過 PC 1.1.1.3 ,然后將流量透明地轉發至路由器。
發動 MiM 攻擊的方法是,在發送至受襲設備的 ARP 包中假冒另一臺設備(例如默認網關),由于接收方不檢查這些分組,因而其 ARP 表將接收假冒信息。
預防這種攻擊有兩種方法,一種方法是阻擋攻擊者和受攻擊設備之間的第二層直接通信,另一種方法是在網絡中嵌入更多智能,使之能夠檢查轉發 ARP 分組的標識是否正確。第一種方法可以通過 Cisco Catalyst 專用 VLAN 或專用 VLAN 邊緣特性實現。第二種方法可以利用稱為 ARP 檢查的新特性實現,這種特性首先在 Cisco Catalyst 6500 Supervisor Engine II 上的 CatOS 7.5 中推出,以后將在 Cisco Catalyst 交換機的 Cisco IOS 軟件中提供。
專用 VLAN 攻擊
“專用 VLAN 攻擊”有點用詞不當,因為它對應的不是安全漏洞,而是對特性的某種期望。專用 VLAN 屬于第二層特性,因而應該只在第二層隔離流量。另一方面,路由器則屬于第 3 層( L3 )設備,當它與專用 VLAN 混合端口相連時,即使目的地與始發地在同一個子網中,也應該將該端口上接收到的第三層流量轉發到相應的目的地( @stake 將這種行為稱為第二層代理)。
因此,雖然兩個相互隔絕的 VLAN 中的兩臺主機應該通過第二層直接通信相互交流,但它們通常在相互交談時將路由器作為分組中繼。
上述現象如圖 4 所示。
圖 4 第二層代理
與常規路由流量相同,如果需要,可以利用轉發設備上相應的 ACL 配置對通過第二層代理中繼的分組進行過濾。
利用輸出思科 IOS ACL 阻擋中繼流量的示例如下:
deny subnet/mask subnet/mask
permit any subnet/mask
deny any any
如果想詳細了解 VLAN ,請參見 [8] 。
組播暴力攻擊
這種攻擊試圖利用交換機的潛在安全漏洞(讀操作:缺陷)發起第二層組播幀風暴。 @stake 希望通過測試了解第二層交換機快速接收到大量第二層組播幀時將發生什么情況。正確的反應是將流量限制在原始 VLAN 中,錯誤的反應是將幀泄漏到其它 VLAN 中。
@stake 的結果顯示,這種攻擊對 Cisco Catalyst 交換機無效,因為所有幀都包含在相應的廣播域中(這個結果毫不奇怪:畢竟,在所有 Catalyst 交換機中,廣播只是組播的一個特殊部分)。
生成樹協議
試圖利用交換機弱點(例如缺陷)發動攻擊的另一種攻擊是 STP 攻擊。 @stake 測試的所有 Cisco Catalyst 交換機都支持這種協議。默認狀態下, STP 是打開的,而且交換機上的所有端口都可以收聽 STP 消息。 @stake 試圖測試,在某些情況下,思科 PVST (每 VLAN 生成樹)是否將無法打開 1 多個 VLAN 。攻擊包括窺探線路上的 STP 幀,以便獲取端口 STP 的 ID 。接下來,攻擊者將發出 STP 配置 / 拓撲變更認可 BPDU ,宣布它稱為優先級較低的新根橋。
在此過程中,測試者輸入廣播流量,看是否有 VLAN 漏出,結果是沒有出現這種現象。這說明,在思科交換機上實施的 STP 的功能十分強大。
隨機幀重壓攻擊
這種攻擊有很多形式,但主要特點是,它包含隨機分布在多個分組域的暴力攻擊,只保持源地址和目標地址不變。 @stake 工程師的多次測試表明,任何分組都無法成功地跳過 VLAN 。
專用 VLAN 可以更好地隔離第二層的主機,并防止它們受到不可信設備的意外惡意流量的攻擊。使用時,可以建立互信任主機組,將第二層網絡分成多個子域,只讓友好設備相互交流。如果想詳細了解專用 VLAN ,請參見 [8] 。
結論
實踐表明, VLAN 技術的可靠性遠遠高于誹謗者的預期,只有用戶誤配置或特性誤用才能突破其強大功能。
用戶會犯的最嚴重的錯誤是,不重視高級交換網絡體系結構中的數據鏈路層,尤其是 VLAN 。需要牢記的是, OSI 模型的安全性與其最薄弱鏈路的安全性相當。因此,必須同等地重視每一層次,才能保證整個結構的安全性。
• 設備或算法可能失敗的一種方式,例如,當設備誤操作、成為易受攻擊的薄弱環節時。
基于 Cisco Catalyst 交換機的任何良好網絡設備都應該包含本文介紹的最佳實踐準則,這樣才能有效保護網絡的第二層安全體系結構免遭破壞。
雖然前面章節討論的某些安全概念比較通用,但需要注意的是,本文針對的只是包含 Cisco Catalyst 交換機的網絡,其它交換機廠商的實施方法可能大不相同,因而某些交換機可能更容易遭受本文介紹的各種攻擊的侵襲。
參考資料
• 研究報告:安全使用 VLAN : @stake 安全評估—— 2002 年 8 月
http://www.cisco.com/warp/public/cc/pd/si/casi/ca6000/tech/stake_wp.pdf
2. SAFE :企業網的安全藍圖, http://www.cisco.com/go/safe/
3. Catalyst 4500 、 5000 和 6500 系列交換機配置和管理的最佳實踐, http://www.cisco.com/warp/customer/473/103.html
4. dsniff ,作者 Dug Song , http://monkey.org/~dugsong/dsniff/
5. VLAN 安全性測試報告, 2000 年 7 月, http://www.sans.org/newlook/resources/IDFAQ/vlan.htm
6. 以太網地址解析協議, RFC 826 , http://www.ietf.org/rfc/rfc0826.txt
7. ARP 欺騙攻擊:
http://www.sans.org/newlook/resources/IDFAQ/switched_network.htm
8. 白皮書: Catalyst 6500 系列服務供應商特性(專用 VLAN )
http://www.cisco.com/warp/public/cc/pd/si/casi/ca6000/tech/c65sp_wp.htm
9. @stake , http://www.atstake.com/
縮略詞與定義
802.1Q |
定義了標準 VLAN 標記方案的 IEEE 規范 |
BPDU |
橋協議數據單元 運行生成樹協議的交換機所交換的信息 |
CDP |
思科發現協議 用于發現由兼容設備組成的網絡拓撲的思科專有協議 |
DTP |
動態中繼協議 用于動態協商中繼參數(例如狀態和格式)的思科專有協議 |
IEEE |
電子和電氣工程師協會 |
ISL |
交換機間鏈路 思科專有 VLAN 標記格式 |
本地 VLAN |
不與 802.1Q 鏈路上任何標記顯式相關的 VLAN |
OSI |
開放系統互聯 網絡參考模型 |
PAgP |
端口匯聚協議 用于動態協商通道參數(如端口數)的思科專有協議 |
STP |
生成樹協議 IEEE 802.1D 標準中定義的橋協議 |
UDLD |
單向鏈路檢測 用于核實物理鏈路雙向性的思科專有協議 |
VLAN |
虛擬局域網 包含一個或多個交換機端口的虛擬廣播域 |
VTP |
VLAN 中繼協議 用于在預定域中分發 VLAN 信息的思科專有協議 |