許多人曾預料,企業(yè)組織采用軟件定義網(wǎng)絡(luò )(SDN)技術(shù)的步伐會(huì )晚于服務(wù)提供商或多租戶(hù)數據中心和云服務(wù)提供商。我們現在看到網(wǎng)絡(luò )功能虛擬化(NFV)在企業(yè)內部得到更多的使用,一些企業(yè)正開(kāi)始推行SDN試點(diǎn)項目。就在企業(yè)考慮如何在自己的數據中心環(huán)境中利用SDN技術(shù)之際,也開(kāi)始考慮SDN能提供哪些新的安全功能。針對控制器不允許傳送的數據流,SDN交換機可以丟棄數據包。本文探究SDN交換機運行起來(lái)能否像傳統防火墻。
軟件定義網(wǎng)絡(luò )是由這個(gè)概念發(fā)展而來(lái)的:將較低層的數據包/幀轉發(fā)功能與智能化決定如何傳送應用程序流量的控制功能分離開(kāi)來(lái)。控制平面與轉發(fā)平面相分離,讓網(wǎng)絡(luò )可以以新的和創(chuàng )新的方式為數據包處理提供方便,并且為網(wǎng)絡(luò )虛擬化創(chuàng )造了一種新的范式。SDN為網(wǎng)絡(luò )設計打開(kāi)了一片新天地,能夠帶來(lái)創(chuàng )新的網(wǎng)絡(luò )方案。SDN還促使我們重新考慮安全策略在網(wǎng)絡(luò )里面如何執行。
在OpenFlow SDN模式中,網(wǎng)絡(luò )交換機里面的數據流由OpenFlow控制器直接放在那里。要是數據流不存在(table-miss),那么交換機將數據包送到(punt)控制器,以便在決定該如何轉發(fā)數據包方面尋求幫助。OpenFlow技術(shù)規范表明,如果table-miss流表項未出現在交換機中,又沒(méi)有規則將數據包發(fā)送到控制器,那么交換機丟棄該數據。如果交換機將數據包送到數據包,那么控制器處理數據包進(jìn)入(Packet-in)消息,決定該數據包的命運。控制器隨后確定應該轉發(fā)數據包,還是丟棄數據包。這種行為聽(tīng)起來(lái)似乎SDN交換機的運行方式如同防火墻,并執行“流表中不含有的數據包則被丟棄”標準安全策略。可以認為這好比是默認的“錯誤保護狀態(tài)”,Elizabeth D. Zwicky、Simon Cooper與D. Brent Chapman合著(zhù)的《構建互聯(lián)網(wǎng)防火墻》一書(shū)中也提到了“錯誤保護狀態(tài)”(Fail-Safe Stance)。乍一看,這聽(tīng)起來(lái)就像是一種出色的新型安全技術(shù),似乎SDN交換機上的每一個(gè)端口運行起來(lái)都如同防火墻。
許多SDN交換機運行起來(lái)酷似標準的以太網(wǎng)交換機,針對發(fā)往廣播、多播或未知MAC地址的以太網(wǎng)幀,通過(guò)所有端口泛洪數據流。大多數SDN交換機會(huì )像典型的基于硬件的以太網(wǎng)交換機那樣,泛洪正常的ARP數據流。在大多數情況下,SDN交換機的默認行為就是充當以太網(wǎng)網(wǎng)橋,或學(xué)習型交換機。然而,可以讓SDN交換機處于明確轉發(fā)模式:只有控制器允許或配置/推送的數據流才允許發(fā)送。
如果環(huán)境中的每只以太網(wǎng)交換機都可以像傳統防火墻那樣運行,它會(huì )改變網(wǎng)絡(luò )環(huán)境中實(shí)施安全策略的方式。設想一下:如果每只以太網(wǎng)交換機都是多端口防火墻,那么防火墻策略可以實(shí)施在整個(gè)網(wǎng)絡(luò )上的每一個(gè)入站交換機端口處和交換機之間的每條鏈路上。將會(huì )有面向每個(gè)服務(wù)器、每個(gè)桌面、每條鏈路的防火墻,防火墻策略將由控制器來(lái)實(shí)施,而控制器對當前的應用程序流量有一個(gè)全局觀(guān),清楚應該允許哪些流量。在整個(gè)環(huán)境執行安全策略將意味著(zhù)完全侵蝕安全邊界。手動(dòng)實(shí)施并維護那么多的安全策略將是管理難題。然而,有了控制器架構,策略只要創(chuàng )建一次,隨后就可以推送到每一個(gè)網(wǎng)絡(luò )設備,以便執行。
網(wǎng)絡(luò )切分(network slicing)是SDN的常見(jiàn)使用場(chǎng)合之一。網(wǎng)絡(luò )可以在邏輯上劃分成邏輯分隔的網(wǎng)絡(luò ),這些網(wǎng)絡(luò )覆蓋在同一個(gè)物理網(wǎng)絡(luò )硬件上。網(wǎng)絡(luò )切分在大學(xué)里面是一種常見(jiàn)的使用場(chǎng)合,因為大學(xué)希望將不同的部門(mén)(招生部、財務(wù)科、宿室樓和計算機科學(xué)系等)劃分成自成一體的邏輯網(wǎng)絡(luò )區域。SDN可以分隔網(wǎng)絡(luò ),類(lèi)似虛擬路由和轉發(fā)(VRF)實(shí)例,可用于分隔第3層轉發(fā)。這還可以通過(guò)在控制平面和數據平面之間添加一個(gè)切分層來(lái)實(shí)現,因而讓安全策略可以針對特定的切片。執行“流空間(Flowspace)”中切片之間的強分隔意味著(zhù),一個(gè)切片中的并不影響另一個(gè)切片。想了解更多信息,可關(guān)注Flowvisor和FSFW:流空間防火墻。這方面的一個(gè)例子就是思科可擴展網(wǎng)絡(luò )控制器(XNC)及Networking Slicing應用程序。這樣一來(lái),SDN就能提供“多類(lèi)型防御體系”(Diversity of Defense)概念,《構建互聯(lián)網(wǎng)防火墻》一書(shū)中同樣提到了這個(gè)概念。
使用具有SDN功能的交換機作為防火墻之所以切實(shí)可行,這方面的一個(gè)關(guān)鍵概念就是它為應用程序數據流維護的狀態(tài)。訪(fǎng)問(wèn)控制列表(ACL)不帶狀態(tài)功能,并不意識到連接何時(shí)開(kāi)始或何時(shí)結束。即使有老式的思科ACL CLI參數“established”,ACI也只是變得稍微“帶狀態(tài)功能”。ACL通常并不關(guān)注任何三向TCP握手(SYN、SYN-ACK和ACK),也不關(guān)注FIN/ACK會(huì )話(huà)終止。另一方面,狀態(tài)防火墻可以觀(guān)察會(huì )話(huà)的建立及關(guān)閉過(guò)程,并使用狀態(tài)檢查技術(shù)(Stateful Inspection),定向地運用策略。
那么,現代SDN產(chǎn)品如何實(shí)施策略,它們運行起來(lái)是否可能像傳統防火墻?說(shuō)到思科以應用程序為中心的基礎設施(ACI),Nexus 9000交換機就以一種無(wú)狀態(tài)方式來(lái)運行。應用程序策略基礎設施控制器(APIC)中配置的應用程序網(wǎng)絡(luò )配置文件(ANP)以無(wú)狀態(tài)的方式,被部署到ACI架構中的交換機。因而,ACI系統在運行時(shí)無(wú)法達到與標準狀態(tài)防火墻一樣的安全級別。這就是為什么ACI允許第4層至第7層的服務(wù)圖可以配置并整合到ACI架構中。
說(shuō)到開(kāi)放虛擬交換機(OVS),它只支持策略方面的無(wú)狀態(tài)匹配。可以配置匹配TCP標志的OVS策略,或者配置規則,以便使用“學(xué)習”方法來(lái)確立返回數據流。然而,這些方法沒(méi)有一種像傳統的狀態(tài)檢查防火墻那樣帶狀態(tài)功能。開(kāi)放虛擬交換機社區在開(kāi)展一些工作,擁有連接跟蹤工具(Conntrack),以便讓OVS可以通知Netfilter(好比正則表達式)連接跟蹤器,并維持現有會(huì )話(huà)的狀態(tài)表。
然而,Project Floodlight可以配置ACL,這些運行起來(lái)也如同無(wú)狀態(tài)防火墻。Floodlight有一個(gè)防火墻應用程序模塊,可通過(guò)檢查數據包進(jìn)入行為來(lái)執行ACL規則。這采用了一種被動(dòng)的工作方式,第一個(gè)數據包旨在為流量創(chuàng )建實(shí)例,根據優(yōu)先級排序的策略規則集來(lái)允許或拒絕流量。允許規則擁有重疊的流空間,而優(yōu)先級制定了根據第一個(gè)匹配規則由上而下操作的策略。
VMware NSX能夠配置SDN環(huán)境里面的安全策略。NSX for vSphere支持邏輯交換/路由、防火墻、負載均衡和虛擬專(zhuān)用網(wǎng)(VPN)功能。防火墻規則在虛擬網(wǎng)卡(vNIC)處執行,但防火墻策略與虛擬機關(guān)聯(lián)起來(lái);主機移動(dòng)時(shí),策略也隨之移動(dòng)。NSX分布式防火墻是一種內核可裝入模塊,提供了帶狀態(tài)功能的第2層/第3層/第4層雙協(xié)議防火墻機制,能夠執行反欺詐。VMware NSX防火墻策略運行起來(lái)如同擁有自反ACL的思科路由器。說(shuō)到等價(jià)多路徑(ECMP)設計或高可用性(HA),NSX邊緣服務(wù)網(wǎng)關(guān)防火墻以無(wú)狀態(tài)方式運行。換句話(huà)說(shuō),狀態(tài)防火墻和負載均衡或NAT并不被采用HA或ECMP拓撲結構的邊緣服務(wù)網(wǎng)關(guān)所支持。
有些行業(yè)組織正在努力研制可提供強大可靠的安全策略執行功能的SDN系統。FlowGuard等研究項目和一篇題為《面向SDN的狀態(tài)硬件防火墻的基于OpenFlow的原型》的文章(作者是南達科他州大學(xué)的Jacob Collings)表明,有可能在SDN網(wǎng)絡(luò )設備里面獲得狀態(tài)功能。
經(jīng)過(guò)這一番分析后,我們可以得出這個(gè)結論:從控制器獲得轉發(fā)策略的SDN交換機未必帶狀態(tài)功能。因而,這些具有SDN功能的交換機無(wú)法提供與狀態(tài)防火墻一樣的保護級別。詢(xún)問(wèn)廠(chǎng)商其SDN解決方案中防火墻帶狀態(tài)功能方面的細節,并且明白它們是如何運行的,這點(diǎn)很要緊。由于許多這些SDN系統可能以無(wú)狀態(tài)方式來(lái)運行,如果貴企業(yè)需要狀態(tài)防火墻保護,那么你就必須使用SDN策略來(lái)轉發(fā)流量,并支持服務(wù)鏈,以獲得帶狀態(tài)功能的數據包檢查網(wǎng)絡(luò )功能虛擬化(NFV)防火墻。