SDN交換機(jī)是否是防火墻的一種新形式?
軟件定義網(wǎng)絡(luò)從低層數(shù)據(jù)包解耦,控制功能的轉(zhuǎn)發(fā)幀智能地決定應(yīng)用程序的流量應(yīng)如何傳輸這一概念發(fā)展演化而來。控制面板從轉(zhuǎn)發(fā)面板的分離使得網(wǎng)絡(luò)為數(shù)據(jù)包處理提供了創(chuàng)新的方法,并為建立網(wǎng)絡(luò)虛擬化提供了新的范式。SDN開辟了整個網(wǎng)絡(luò)設(shè)計(jì)的新世界和創(chuàng)造性的網(wǎng)絡(luò)方法。SDN也引發(fā)我們重新思考如何在網(wǎng)絡(luò)上執(zhí)行安全政策。
在OpenFlow的SDN模型中,網(wǎng)絡(luò)交換機(jī)內(nèi)的流量是通過OpenFlow控制器安置的。如果流量是不存在的(Table-miss項(xiàng)),然后切換到控制器尋求幫助,以確定數(shù)據(jù)包應(yīng)該如何轉(zhuǎn)發(fā)。OpenFlow技術(shù)規(guī)范規(guī)定,如果Table-miss項(xiàng)的流量入口在交換機(jī)中不存在,就沒有任何規(guī)則將數(shù)據(jù)包發(fā)送到控制器,然后數(shù)據(jù)包就會被交換器丟棄。如果交換機(jī)將數(shù)據(jù)包發(fā)送到控制器,然后控制器處理數(shù)據(jù)包的消息,進(jìn)而決定數(shù)據(jù)包的命運(yùn)。然后控制器確定數(shù)據(jù)包是否應(yīng)被轉(zhuǎn)發(fā)或丟棄。這聽起來像是SDN交換機(jī)執(zhí)行的是類似防火墻的功能,執(zhí)行的是將不包括在流量表中的流量數(shù)據(jù)包丟棄的標(biāo)準(zhǔn)的安全政策。這可以被認(rèn)為是類似于默認(rèn)的“錯誤保護(hù)狀態(tài)”(Fail-Safe Stance) ,其也在由Elizabeth D. Zwicky、Simon Cooper和D. Brent Chapman聯(lián)合編寫的《建立互聯(lián)網(wǎng)防火墻》一書中提到。乍一看,這聽起來像一種非常好的新的安全擔(dān)保形式,使SDN交換機(jī)每個端口看起來就像一個防火墻。
許多SDN交換機(jī)運(yùn)行起來酷似一個標(biāo)準(zhǔn)的以太網(wǎng)交換機(jī),以太網(wǎng)幀的所有端口的洪水般的數(shù)據(jù)流量發(fā)往廣播,多播或未知的MAC地址。大多數(shù)的SDN交換機(jī)ARP流量通常就是像一個典型的基于硬件的以太網(wǎng)交換機(jī)。在大多數(shù)情況下,一個SDN交換機(jī)的默認(rèn)行為就像一個以太網(wǎng)橋,或?qū)W習(xí)型交換機(jī)。然而,讓一個SDN交換機(jī)成為一個明確的轉(zhuǎn)發(fā)模式,只有被允許的流量或由控制器配置/推送的流量將被允許發(fā)送。
如果環(huán)境中的每一個以太網(wǎng)交換機(jī)都能夠像傳統(tǒng)的防火墻,那么,這將改變在網(wǎng)絡(luò)環(huán)境下實(shí)現(xiàn)安全策略的方式。想象一下,如果每個以太網(wǎng)交換機(jī)是多端口的防火墻,則防火墻策略可以在網(wǎng)絡(luò)上通過每次進(jìn)入交換機(jī)端口和交換機(jī)之間的每一條鏈路上實(shí)施。這樣,就對每一臺服務(wù)器,臺式機(jī),每一條鏈路都設(shè)置了防火墻,而防火墻策略會通過一個控制器來實(shí)施,而控制器會對當(dāng)前的應(yīng)用程序流量現(xiàn)狀有一個全局觀并讓獲得允許的流量進(jìn)行有效傳輸。在整個環(huán)境執(zhí)行安全政策意味著安全邊界的完整侵蝕。太多安全政策的實(shí)施及其手動執(zhí)行可能會為您企業(yè)的安全管理帶來噩夢。然而,利用控制器架構(gòu),該安全政策將只需創(chuàng)建一次,然后即可推廣到每臺網(wǎng)絡(luò)設(shè)備執(zhí)行了。
網(wǎng)絡(luò)切分(network slicing)是SDN中非常常見的使用案例之一。一個網(wǎng)絡(luò)在邏輯上可以劃分為分隔的網(wǎng)絡(luò),而這些網(wǎng)絡(luò)是覆蓋在同一物理網(wǎng)絡(luò)硬件上的。網(wǎng)絡(luò)切分在大學(xué)里非常流行一種,因?yàn)榇髮W(xué)里,他們希望將不同的部門分開(包括招生部門、財務(wù)部門、宿舍、計(jì)算機(jī)科學(xué)系等),以便使得各自成為一個自成一體的邏輯網(wǎng)絡(luò)區(qū)域。SDN可以分隔網(wǎng)絡(luò),類似于虛擬路由和轉(zhuǎn)發(fā)(VRF)的情況,可用于分隔第3層轉(zhuǎn)發(fā)。這也可以通過在控制面板和數(shù)據(jù)面板之間添加一個切片層來實(shí)現(xiàn),從而使安全策略得以能夠針對特定的切片。在“流空間(Flowspace)”強(qiáng)制執(zhí)行切片之間的強(qiáng)隔離意味著一個切片的行動不會影響另一片。想要了解更多信息,您可以參考Flowvisor和流空間防火墻(FSFW: Flowspace firewall)。這方面的一個例子就是思科的可擴(kuò)展網(wǎng)絡(luò)控制器(XNC)及網(wǎng)絡(luò)分層應(yīng)用程序。在這些方面,SDN可以提供“多類型防御體系”的概念,而這一概念在《構(gòu)建網(wǎng)絡(luò)防火墻》一書中也被提及。
使用SDN交換機(jī)作為防火墻的可行性的關(guān)鍵概念在于,其將維持應(yīng)用程序流量的狀態(tài)。訪問控制列表(ACL)是無狀態(tài)的,當(dāng)連接開始或結(jié)束時并沒有意識。即使有老式的思科ACL CLI參數(shù),ACL也只是略顯“帶狀態(tài)功能”。訪問控制列表通常并不關(guān)注任何三向TCP握手(SYN、SYN-ACK和 ACK),也不關(guān)注FIN/ACK會話終止。另一方面,狀態(tài)防火墻能夠觀察會話的建立和關(guān)閉過程,定向使用狀態(tài)檢測適用的政策。
那么,現(xiàn)代的SDN產(chǎn)品是否能夠通過安全的實(shí)施部署,使其有可能運(yùn)行起來像傳統(tǒng)的防火墻呢?當(dāng)涉及到思科的以應(yīng)用程序?yàn)橹行牡幕A(chǔ)設(shè)施(ACI)時,Nexus 9000交換機(jī)就能夠以一個無狀態(tài)的方式運(yùn)行。應(yīng)用程序網(wǎng)絡(luò)配置文件(ANP)在應(yīng)用程序策略基礎(chǔ)設(shè)施控制器(APIC)中配置,并以無狀態(tài)的方式被部署到交換機(jī)的ACI架構(gòu)中。因此,一個ACI系統(tǒng)將不能夠作為標(biāo)準(zhǔn)狀態(tài)防火墻在同一安全級別上操作。這就是為什么ACI允許第4層到第7層的服務(wù)圖形進(jìn)行配置,并集成整合到ACI架構(gòu)的原因了。
當(dāng)涉及到Open vSwitch(OVS)時,其僅支持無狀態(tài)匹配的政策。配置OVS政策以匹配TCP標(biāo)簽或使用一種 “學(xué)習(xí)”方法配置規(guī)則,以建立流量回歸方法。然而,這些方法中沒有一種是像一個傳統(tǒng)狀態(tài)檢測防火墻那樣的有狀態(tài)的。Open vSwitch社區(qū)正在試圖在這方面進(jìn)行努力,以便讓連接跟蹤(Conntrack)允許OVS通知Netfilter(如iptables)連接跟蹤,并保持現(xiàn)有會話狀態(tài)表。
然而,Project Floodlight可以配置ACL,這運(yùn)行起來也像一個無狀態(tài)防火墻。Floodlight有一個防火墻應(yīng)用程序模塊,通過檢查數(shù)據(jù)包執(zhí)行ACL規(guī)則。這以一種反應(yīng)方式,讓第一個數(shù)據(jù)包為流量創(chuàng)建實(shí)例,基于優(yōu)先級排序的決策規(guī)則集允許或拒絕。規(guī)則允許有重疊的流空間,但優(yōu)先創(chuàng)建第一個匹配規(guī)則的行動,自上而下的操作政策。
VMware NSX能夠在SDN環(huán)境配置安全策略。NSX的vSphere支持邏輯交換/路由、防火墻、負(fù)載均衡、和VPN功能。防火墻規(guī)則在vNIC強(qiáng)制執(zhí)行,而當(dāng)主機(jī)遷移時,防火墻策略與虛擬機(jī)相關(guān)聯(lián),其策略也隨之移動。NSX分布式防火墻是一種可加載內(nèi)核模塊,提供有狀態(tài)的L2/L3/L4雙協(xié)議的防火墻,可以執(zhí)行反欺騙。VMware NSX的防火墻策略運(yùn)作起來就像一個有自反ACL的思科路由器。當(dāng)涉及到等價多路徑(ECMP)設(shè)計(jì)或高可用性(HA)時, NSX邊緣服務(wù)網(wǎng)關(guān)的防火墻功能以無狀態(tài)方式運(yùn)行。換句話說,有狀態(tài)的防火墻和負(fù)載均衡或NAT不支持邊緣服務(wù)網(wǎng)關(guān)和高可用性或ECMP拓?fù)洹?/p>
還有人正在嘗試創(chuàng)建SDN系統(tǒng)以提供強(qiáng)大的安全策略。這方面的研究項(xiàng)目有諸如FlowGuard和一篇題為《基于OpenFlow原型的面向狀態(tài)的SDN硬件防火墻》的文章,由北達(dá)科他大學(xué)的雅各伯·柯林斯所撰寫,表明了在SDN網(wǎng)絡(luò)設(shè)備建立獲得狀態(tài)功能的潛在可能性。
從上述的分析中,我們可以得出這樣的結(jié)論:從控制器獲取轉(zhuǎn)發(fā)政策的SDN交換機(jī)不一定有狀態(tài)。因此,這些SDN功能的交換機(jī)無法提供作為一個狀態(tài)防火墻同樣水平的保護(hù)。詢問供應(yīng)商關(guān)于他們SDN解決方案的防火墻功能的有狀態(tài)細(xì)節(jié),以及了解他們是如何運(yùn)作的,是非常重要的。因?yàn)樵S多這些SDN系統(tǒng)可以以無狀態(tài)的方式操作,如果您企業(yè)需要有狀態(tài)防火墻的保護(hù),那么您必須使用SDN政策引導(dǎo)流量與服務(wù)鏈的狀態(tài)包,檢測防火墻的網(wǎng)絡(luò)功能虛擬化(NFV)。