VLAN(虛擬局域網)是一群盡管所處物理位置不同,卻相互保持通信的主機。VLAN可向用戶提供獨立的網段,在節省帶寬的同時也有利于設備的管理,而且通過VLAN所提供的一些功能還可以幫助企業節省成本。
VLAN建立在OSI的第二層數據鏈路層上,盡管OSI的每一層是獨立的,但是他們之間是相互關聯的。如果某一層出現問題,也必將會影響到其它層的數據傳遞,VLAN建立在數據鏈路層上,同其它層一樣易于受到攻擊。
VLAN所面臨的安全問題
雖然VLAN適于流量管理但也并非特別安全。下面就列出了一系列VLAN所面臨的安全威脅。
ARP攻擊
ARP(地址解析協議)的工作原理實際是將第三層的IP地址轉換成第二層的MAC地址的過程。
一個惡意用戶可以偽造IP地址和MAC地址,然而在ARP協議中卻無法核實這些細節,ARP的這種缺陷就造成了安全問題。利用這些偽造的信息,惡意用戶就會被誤認為是一個合法的用戶,他們不僅可以隨意使用網絡中的資源,甚至可以在VLAN的設備中發送ARP數據包。
更有甚者,惡意攻擊者可以通過此缺陷制造中間人攻擊。當一個網絡設備被標示成另一個網絡設備,例如默認網關之類,中間人攻擊就可能會發生了,在這種情況下我們也是無法核實這些細節信息的。
當攻擊者發送ARP數據包給目標受害者,這些ARP報文不能被接收器驗證,這是因為接收的ARP表其實已經是經過攻擊者偽造的信息了。這個時候,攻擊者就可以接收到這個返回消息的設備的有關信息了,甚至還可以試圖接收到其他網絡設備的信息。最后,攻擊者會將ARP表和網絡設備恢復正常。
像Arpspoof,Arpoison,Cain and Abel,和Ettercap,Trapper(這個工具的創作靈感不少都來自于著名的Cain)這些工具都可以執行ARP欺騙。
對付ARP攻擊的一個有效策略就是動態ARP監測(DAI)。DAI是一種驗證網絡中所有ARP數據包的安全功能,它可將ARP數據中的IP地址和MAC地址都丟掉。
VLAN中的DAI狀態(CISCO中的DHCP環境)
進入全局配置指令
Router# configure terminal
通過使用iparp檢查Vlan ,在全局配置中允許在VLAN中使用DAI
Router(config)# iparp inspection vlan {vlan_ID |vlan_range}
最后,驗證配置
Router(config-if)# do show iparp inspection vlan {vlan_ID |vlan_range} | begin Vlan
MAC泛洪攻擊
MAC泛洪攻擊是VLAN攻擊中常見的一種。在MAC泛洪攻擊中,交換機內充斥的不同的MAC地址,這些地址信息消耗了交換機中大多數內存空間。在這種情況下,交換機就變成了"hub"開始與大家分享所有端口的數據了。所以,通過這種方法,攻擊者就可以用數據嗅探器搜集敏感數據了。
舉個例子,比如有3三個工作站,分別是WA,WB和WC。當我們試圖用WA給WB發送一條數據,因為交換機的緣故WC是看不見這條信息的。現在,把攻擊者看作是WC,它開始在交換機內用不同的MAC地址來制造MAC泛洪攻擊,交換機的內容被耗光了,然后交換機就像HUB一樣開始收發信息了,當WA再次向WB發送數據時,WC能很容易地看到它們之間傳送的信息了。
在VLAN中,MAC泛洪攻擊防范的最佳方法是配置靜態安全MAC地址。這個需要進行手動配置,具體操作方法是使用命令"switchport port-security mac-addressmac-address interface"。另一種防范MAC泛洪攻擊的方法便是限制端口接受MAC地址的數量。
DHCP攻擊
DHCP(動態主機設置協議)可以是服務器自動分配IP地址、子網掩碼、默認網關等信息給主機。在VLAN中有兩種類型的DHCP攻擊,一種是DHCP耗竭攻擊(DHCP starvation Attack),另一種是DHCP欺騙攻擊(DHCP rogue attack)。
DHCP耗竭攻擊:攻擊者使用偽造的MAC地址發送大量的DHCP請求。這會導致DHCP服務器發生拒絕服務的情況,這樣,正常的用戶就無法使用網絡了。通過限制MAC地址的數量可以避免這個情況的發生。
DHCP欺騙攻擊:攻擊者可以偽裝成一個DHCP服務器,然后向正常用戶提供錯誤的網關、錯誤的DNS和錯誤的IP,那么用戶就會遇到許多問題,比如連接問題和與其它主機通信的問題。通過使用有選擇性丟包功能的多層交換機,可以防范此攻擊。
可以實現這類攻擊的工具是Yersinia。它是一種網絡工具,可以發現許多協議的漏洞,同時它也可以用來進行生成樹協議攻擊。
生成樹協議攻擊
攻擊者使用零優先級發送一條STP(Spanning-Tree Protocol,生成樹協議)消息,創建一個新的根橋接,從而破壞整個網絡,這就是著名的生成樹協議攻擊。在用戶界面上禁用生成樹功能可以避免這個攻擊,也可以在思科設備上進行Root Guard配置或在用戶端口上設置DPDU Guard功能,禁止使用零優先級值,這樣攻擊者也就不能獲得根橋接了。
在操作系統中使用Root Guard
vega> (enable) set spantree guard root 1/1 Rootguard on port 1/1 is enabled.
Warning!! Enabling rootguard may result in a topology change. vega> (enable)
在操作系統中使用DPDU guard
Console> (enable) set spantreeportfastbpdu-guard enablevSpantreeportfastbpdu-guard enabled on this switch.(在交換機上激活Spantreeportfastbpdu-guard) Console> (enable)
組播暴力攻擊
組播暴力攻擊的實現依賴于交換機在非常短的時間內輪番接收到一連串的組播幀,這將導致這些幀會泄漏到其它VLAN中,而不是保留于原有的VLAN中。這可能也會引發拒絕服務現象。
一臺高品質的交換機可以保證幀不會從原本的VLAN中泄漏到其它VLAN里,從而防止這類攻擊的發生。
PVLAN攻擊(專用VLAN攻擊)
PVLAN是第二層的功能,用于第二層的通信隔離。當一臺三層設備--例如路由器--連接到某個專用VLAN中,那么該路由器所接收到的所有流量有可能會向任何一處不可知的目的地傳輸。在某些情況下這種特性會成為攻擊者實現個人目的的有效手段。
通過配置VLAN的訪問列表可以預防上述情況的發生。
定義VLAN訪問映射# vlanaccess-mapmap_name [0-65535] 刪除VLAN訪問映射圖序列# no vlan access-mapmap_name 0-65535 刪除VLAN訪問映射# no vlan access-mapmap_name
VMPS/VQP攻擊
這類攻擊通常發生在動態VLAN訪問端口。VMPS(VLAN管理策略服務器)使用VQP(VLAN查詢)協議。VMPS有一個缺陷,它并不使用基于MAC地址的指定Vlans身份認證,而且UDP讓它在被攻擊中更加脆弱。
通常DoS攻擊都發生在未經驗證的VLAN中。
VLAN跨越攻擊
VLAN跨越指的是數據包被傳送到不正確的端口上。基本上VLAN跨越攻擊有如下兩個類型。
◆交換機欺騙
◆雙標簽
交換機欺騙
交換機欺騙:攻擊者試圖通過配置802.1Q或者ISL把自己偽裝成一個交換機,通過DTP(動態中繼協議)信號可以幫助攻擊者完成欺騙。
雙標簽
雙標簽是包括2個802.1Q頭的傳輸幀標簽,一個頭用于(受害者)用戶的交換機,另一個用于攻擊者的交換機。防止VLAN跨越攻擊的最簡單的方法就是在所有來歷不明的端口上禁止DTP協議。
舉例:
ciscoswitch# conf tciscoswitc(config)# int gi1/10ciscoswitch(config-if)# switchportnonegotiateFrom the example "switchportnonegotiate" disables the DTP.
雙封裝802.1Q
IEEE802.1Q有助于在大型網絡之外創建小規模網絡。大型網絡速度慢而且非常消耗帶寬,然而小型網絡卻更利于管理,占用的帶寬也少。所以,相比大而復雜的網絡來說,有時候我們更需要一個小型網絡,因此在IEEE802的基礎上研發了IEEE802.1Q。
我們必須在啟用了Trunk(端口匯聚)功能下使用IEEE802.1Q,假設主干中啟用了IEEE802.1Q,那么就可以執行一個特殊的攻擊。這個攻擊被稱作雙封裝攻擊,它在原始幀中增加了兩個標簽,在IEEE802.1Q中,對幀的修改基本上要通過消除外部標簽完成,然而剩下的原始內部標簽就成為了攻擊的目標。
(TIPs:當雙封裝 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 等協議應為本地 VLAN 的唯一合法用戶,而且其流量應該與所有數據分組完全隔離開。)
為了防止802.1Q中的雙封裝,本地VLAN應該不被放配到任何端口。我們必須使主干中的流量都攜帶著標簽,而為了實現這一點,我們可以使用命令"Switch(config)# vlan dot1q tag native"。它是一個標記本地VLAN的全局命令。
隨機幀重壓攻擊(Random Frame Stress Attack)
隨機幀重壓攻擊的表現形式有很多,但通常只存在于幾個領域中。在這種暴力攻擊下,會讓源地址和目標地址保持不變。當遇到異常的輸入和計算時,它們主要是對交換機進行測試。
這種攻擊是可以預防的,可以讓專用VLAN隔離第二層的主機,免受惡意流量的侵害。(Tips:使用時,可以建立互信任主機組,將第二層網絡分成多個子域,只讓友好設備相互交流。)
結論:
我希望以上內容能夠幫助大家了解VLAN的一些攻擊方式,并能夠讓概念簡單化。另外,想要對VLAN進行攻擊并不容易的,但是請大家不要忘記更改設備的默認設置。最后為各位管理員總結以下幾點:
◆以安全的方式管理交換機
◆本地VLAN ID 不應用于中繼。使用專用LVAN ID作為中繼端口。
◆所有用戶端口設置為非中繼
◆多做一些交換機端口安全配置,但需要小心。
◆避免使用VLAN 1
◆為用戶端口盡可能設置安全功能
◆為了緩解STP攻擊啟用BPDU保護
◆使用專用VLAN并且進一步劃分L2網絡
◆如果使用VTP,請用MD5驗證。
◆禁用未使用的端口