劉坤燦
(金航數(shù)碼科技有限責(zé)任公司,北京 100028)
現(xiàn)如今互聯(lián)網(wǎng)技術(shù)快速發(fā)展,TCP/IP應(yīng)用協(xié)議類型正在飛速增長。應(yīng)用層載荷中可能充斥著各種攻擊程序。為了防范基于應(yīng)用層的攻擊,越來越多的企業(yè)使用應(yīng)用防火墻對內(nèi)部網(wǎng)絡(luò)進(jìn)行安全防護(hù)。傳統(tǒng)防火墻只解析數(shù)據(jù)包包頭,而應(yīng)用防火墻需要解析數(shù)據(jù)包的全部內(nèi)容,并進(jìn)行鏈路流量整形和異常流量檢測,因此,應(yīng)用防火墻的處理負(fù)載相比傳統(tǒng)防火墻成倍的增加,致使防火墻故障率升高。防火墻往往部署在網(wǎng)絡(luò)的邊界處,一旦防火墻出現(xiàn)故障,將直接導(dǎo)致內(nèi)外部網(wǎng)絡(luò)中斷,嚴(yán)重影響企業(yè)用戶的網(wǎng)絡(luò)訪問和數(shù)據(jù)傳輸。
針對上述問題,市場上主流的防火墻廠商通過雙機熱備的部署模式解決了這一問題。該模式部署了2臺防火墻,互為備份,正常情況下由工作機進(jìn)行數(shù)據(jù)流量的分析和過濾工作,當(dāng)工作機故障時,自動切換至備份機,不影響網(wǎng)絡(luò)的正常使用。雖然雙機熱備的解決方案可以降低防火墻系統(tǒng)的整體故障率,但是部署難度較高,且同一時間只有1臺防火墻設(shè)備在工作,資源利用率較低。隨著虛擬化和云計算技術(shù)的發(fā)展和運用,企業(yè)內(nèi)部的網(wǎng)絡(luò)結(jié)構(gòu)越來越復(fù)雜,且調(diào)整越來越頻繁[1]。部署于網(wǎng)絡(luò)出口的硬件防火墻既不能防護(hù)來自內(nèi)部的攻擊,又不能滿足虛擬化、云計算環(huán)境下網(wǎng)絡(luò)結(jié)構(gòu)快速調(diào)整帶來的安全防護(hù)快速跟進(jìn)需求。
為了提升防火墻系統(tǒng)的可用性,降低部署難度,適應(yīng)虛擬化、云計算環(huán)境下的安全防護(hù)需求,該文分析了應(yīng)用防火墻和SDN(Software Defined Network)技術(shù),并設(shè)計了一種基于SDN技術(shù)的采用分布式部署的應(yīng)用防火墻系統(tǒng)。該防火墻系統(tǒng)首先利用SDN技術(shù)的控制器對網(wǎng)絡(luò)流量進(jìn)行負(fù)載分配,然后將數(shù)據(jù)包重定向至多個分布式部署的應(yīng)用防火墻組件進(jìn)行深度包檢測和過濾,符合防火墻訪問控制規(guī)則的數(shù)據(jù)包將由應(yīng)用防火墻轉(zhuǎn)發(fā)出去,不符合規(guī)則的數(shù)據(jù)包則被阻斷。
應(yīng)用防火墻就是主要對應(yīng)用層的安全威脅進(jìn)行防護(hù)的防火墻,用于彌補傳統(tǒng)防火墻基于端口和IP地址進(jìn)行數(shù)據(jù)包過濾而無法防護(hù)應(yīng)用層安全威脅的缺陷。應(yīng)用防火墻主要運用深度包檢測技術(shù)(Deep Packet Inspection)對網(wǎng)絡(luò)流量進(jìn)行深度分析和檢測。深度包檢測技術(shù)是一種網(wǎng)絡(luò)流量檢測分析技術(shù),它通過檢測數(shù)據(jù)包的包頭和載荷(payload)部分,分析數(shù)據(jù)流量可能存在的攻擊行為、病毒、惡意代碼、垃圾郵件等違規(guī)內(nèi)容。深度包檢測技術(shù)的“深度”是指其與普通報文檢測技術(shù)相比,分析層次更加深入?!捌胀▓笪臋z測”僅分析IP報文中傳輸層以下的數(shù)據(jù),包括傳輸層包頭(含源端口和目的端口)、網(wǎng)絡(luò)層包頭(含源地址和目的地址)和數(shù)據(jù)鏈路層幀頭(含源MAC地址和目的MAC地址),而深度包檢測技術(shù)除了對這部分?jǐn)?shù)據(jù)進(jìn)行分析,還會對應(yīng)用層數(shù)據(jù)進(jìn)行分析,識別數(shù)據(jù)流量的應(yīng)用類型,檢測其承載的信息內(nèi)容[2]。
傳統(tǒng)網(wǎng)絡(luò)為了提升數(shù)據(jù)的傳輸速度,將路由器和交換機的處理邏輯燒錄在硬件設(shè)備中,導(dǎo)致其無法輕易修改和升級,增加了網(wǎng)絡(luò)創(chuàng)新難度,不能滿足互聯(lián)網(wǎng)日益增長的動態(tài)管理和擴展需求。SDN技術(shù)[3]將傳統(tǒng)網(wǎng)絡(luò)的數(shù)據(jù)轉(zhuǎn)發(fā)(data plane)與路由控制(control plane)2個功能分離,實現(xiàn)了利用軟件系統(tǒng)集中控制網(wǎng)絡(luò)設(shè)備的目標(biāo),解決了網(wǎng)絡(luò)結(jié)構(gòu)快速調(diào)整和擴展的難題。
2006年,斯坦福大學(xué)的Nick McKeown提出了OpenFlow[4]的概念。OpenFlow協(xié)議是SDN轉(zhuǎn)發(fā)層和控制層之間通信所使用的協(xié)議,它的出現(xiàn)使得軟件系統(tǒng)控制網(wǎng)絡(luò)設(shè)備的轉(zhuǎn)發(fā)規(guī)則成為現(xiàn)實,軟件定義網(wǎng)絡(luò)也在OpenFlow的基礎(chǔ)上逐步落地。OpenFlow網(wǎng)絡(luò)中,軟件系統(tǒng)通過控制器向上提供的編程接口,可以對網(wǎng)絡(luò)設(shè)備進(jìn)行集中管理和配置,從而使網(wǎng)絡(luò)結(jié)構(gòu)的動態(tài)調(diào)整和快速變化成為可能。目前虛擬化和云計算技術(shù)也采用了OpenFlow相關(guān)組件進(jìn)行虛擬化系統(tǒng)的網(wǎng)絡(luò)管理。
該文決定采用SDN技術(shù)與深度包檢測技術(shù)結(jié)合的方式來設(shè)計分布式應(yīng)用防火墻系統(tǒng)。為了實現(xiàn)2種技術(shù)的有效結(jié)合,分布式應(yīng)用防火墻系統(tǒng)的設(shè)計遵循以下技術(shù)路線。
2.1.1 運用SDN技術(shù)實現(xiàn)多臺防火墻負(fù)載均衡和內(nèi)部流量過濾
采用軟件進(jìn)行數(shù)據(jù)分析和處理的應(yīng)用防火墻,處理速度和吞吐量較硬件防火墻有所下降,如果使用負(fù)載均衡技術(shù)進(jìn)行分布式部署,將提高整個防火墻系統(tǒng)的吞吐量和性能,而且即使一兩臺防火墻發(fā)生故障,通過實時監(jiān)控和流量重定向,整個系統(tǒng)依然可以較好地完成防火墻功能。SDN中所有的網(wǎng)絡(luò)設(shè)備都可以通過OpenFlow控制器進(jìn)行集中式的控制和管理,那么OpenFlow也可以用來做防火墻的負(fù)載均衡工作。OpenFlow控制器中可以集成負(fù)載均衡模塊和流量重定向模塊,實現(xiàn)將數(shù)據(jù)包動態(tài)分配到不同IP地址的防火墻。此外,流量重定向模塊還可以根據(jù)需求,將內(nèi)部數(shù)據(jù)包重定向至防火墻,實現(xiàn)內(nèi)部流量的檢測和過濾。
2.1.2 采用傳統(tǒng)包過濾防火墻技術(shù)
應(yīng)用防火墻系統(tǒng)也應(yīng)當(dāng)具備傳統(tǒng)防火墻的包過濾功能,從而實現(xiàn)應(yīng)用層之下數(shù)據(jù)流量的快速檢測和過濾。將傳統(tǒng)包過濾防火墻與應(yīng)用防火墻技術(shù)結(jié)合,可以在應(yīng)用層之下過濾一部分流量,降低應(yīng)用防火墻組件的處理負(fù)載。
Linux系統(tǒng)的netfilter/iptables防火墻是一種有狀態(tài)的防火墻,它可以持續(xù)追蹤穿過防火墻的各種網(wǎng)絡(luò)連接(例如TCP與UDP連接)的狀態(tài),這一功能是其他主機防火墻工具無法提供的。該系統(tǒng)使用netfilter/iptables作為傳統(tǒng)包過濾防火墻[5]。
2.1.3 運用深度包檢測技術(shù)
采用深度包檢測技術(shù)來實現(xiàn)應(yīng)用防火墻功能。深度包檢測技術(shù)不同于內(nèi)容包檢測技術(shù),內(nèi)容包檢測技術(shù)把應(yīng)用層數(shù)據(jù)包當(dāng)成一個個孤立的數(shù)據(jù)包,沒有考慮到應(yīng)用層數(shù)據(jù)的上下聯(lián)系,無法檢測那些把攻擊特征分散到多個數(shù)據(jù)包的黑客攻擊,它的檢測能力非常有限。而深度包檢測技術(shù)則把分散的應(yīng)用層數(shù)據(jù)恢復(fù)成連貫的信息,然后進(jìn)行檢測,能夠防御各種分散特征的網(wǎng)絡(luò)攻擊[1]。
該分布式應(yīng)用防火墻系統(tǒng)整體上分為Web界面、負(fù)載均衡模塊、流量重定向模塊、主程序模塊、流量統(tǒng)計模塊、應(yīng)用檢測模塊、防火墻配置模塊、事件記錄模塊以及傳統(tǒng)防火墻模塊9個部分。其中,負(fù)載均衡模塊和流量重定向模塊是OpenFlow控制器的功能模塊。該防火墻系統(tǒng)的總體結(jié)構(gòu)設(shè)計如圖1所示。
圖1 分布式應(yīng)用防火墻的系統(tǒng)架構(gòu)
2.3.1 Web界面
該系統(tǒng)的Web界面由系統(tǒng)的Web前臺服務(wù)提供,Web前臺服務(wù)采用的是Apache Tomcat應(yīng)用,為訪問和配置防火墻提供可視化接口。用戶使用網(wǎng)頁瀏覽器登錄Web前臺服務(wù)地址,利用Web界面實現(xiàn)控制器和軟件防火墻組件的設(shè)置。
2.3.2 負(fù)載均衡模塊
該系統(tǒng)的負(fù)載均衡模塊由NOX控制器中的開源負(fù)載均衡組件改寫后實現(xiàn),該模塊維護(hù)一個循環(huán)鏈表,該鏈表記錄了分布式應(yīng)用防火墻系統(tǒng)中的每一個可對外提供服務(wù)的防火墻IP地址。當(dāng)有新的任務(wù)或數(shù)據(jù)流到來時,負(fù)載均衡器會將任務(wù)輪流分配給各個防火墻,如此循環(huán)往復(fù)。
2.3.3 流量重定向模塊
流量重定向模塊接收負(fù)載均衡模塊的分配信息,生成通往指定防火墻的流條目,然后下發(fā)給OpenFlow交換機。此外,流量重定向模塊也可接收控制器的配置信息,生成將內(nèi)部流量轉(zhuǎn)發(fā)至防火墻的流條目,并下發(fā)給OpenFlow交換機。
2.3.4 主程序模塊
主程序模塊是軟件防火墻層面的主要模塊,負(fù)責(zé)加載防火墻配置信息,將軟件防火墻各模塊實例化,并完成各模塊實例的初始化。主程序模塊使用網(wǎng)絡(luò)接口與Web前臺通信,根據(jù)Web界面的配置信息,調(diào)用各模塊的處理函數(shù),使防火墻配置生效。
2.3.5 防火墻配置模塊
防火墻配置模塊用于實現(xiàn)對傳統(tǒng)防火墻模塊的配置。該模塊通過將iptables防火墻的配置命令分解,定義地址對象、服務(wù)對象和時間對象,使防火墻實現(xiàn)可視化的過濾規(guī)則設(shè)置。
2.3.6 傳統(tǒng)防火墻模塊
傳統(tǒng)防火墻模塊由Linux內(nèi)核的netfilter組件實現(xiàn),netfilter組件是成熟的Linux組件,運行穩(wěn)定且高效,保證了傳統(tǒng)包過濾防火墻對數(shù)據(jù)包的快速分析和過濾[6]。
2.3.7 應(yīng)用檢測模塊
應(yīng)用檢測模塊運用深度包檢測技術(shù),改進(jìn)了開源項目OpenDPI的部分功能,實現(xiàn)了應(yīng)用層協(xié)議識別、應(yīng)用數(shù)據(jù)檢測和過濾、URL地址過濾等功能。
2.3.8 流量統(tǒng)計模塊
流量統(tǒng)計模塊用于對經(jīng)過防火墻系統(tǒng)的網(wǎng)絡(luò)流量進(jìn)行統(tǒng)計和匯總,可以從多個維度進(jìn)行統(tǒng)計,比如針對各種應(yīng)用協(xié)議流量的統(tǒng)計、流入流量的統(tǒng)計、流出流量的統(tǒng)計等。
2.3.9 事件記錄模塊
事件記錄模塊的主要功能是用于安全審計規(guī)則和日志記錄規(guī)則的配置,以及報警和日志事件的存儲、檢索。
該文采用軟件定義網(wǎng)絡(luò)設(shè)備搭建一個實驗環(huán)境來驗證防火墻系統(tǒng)的有效性。實驗環(huán)境部署和配置如圖2所示。
該實驗中,使用2臺物理服務(wù)器分別安裝1個Open vSwitch軟交換機和2臺KVM虛擬機,在軟交換機上分別創(chuàng)建虛擬橋網(wǎng)橋0和網(wǎng)橋1,將服務(wù)器的物理網(wǎng)卡0、網(wǎng)卡1和網(wǎng)卡2、網(wǎng)卡3端口分別加入軟交換機,同時分別連接2臺虛擬機,虛擬機端口分別為端口0、端口1和端口2、端口3。在虛擬機1和虛擬機2上分別安裝了應(yīng)用防火墻,并設(shè)置同樣的訪問控制策略。在另一臺物理機上安裝控制器,并將其連接物理服務(wù)器2的網(wǎng)卡3端口。
設(shè)置控制器IP地址為192.168.10.200,網(wǎng)橋0的IP地址為192.168.10.1,網(wǎng)橋1的IP地址為192.168.10.2,測試計算機的IP地址為192.168.10.3,虛擬機3的IP地址為192.168.10.4,虛擬機4的IP地址為192.168.10.5,虛擬機1(應(yīng)用防火墻)的IP地址為192.168.10.100,虛擬機2(應(yīng)用防火墻)的IP地址為192.168.10.101。
實驗采用ping命令和流量發(fā)生器發(fā)送網(wǎng)絡(luò)流量,并使用抓包工具查看每個端口的流量情況。
場景一:控制層中預(yù)先不開啟負(fù)載均衡和流量重定向功能。在測試計算機上向虛擬機3和虛擬機4發(fā)送ICMP報文,操作指令為ping 192.168.10.4和ping 192.168.10.5。
圖2 分布式應(yīng)用防火墻實驗環(huán)境
實驗結(jié)果:測試計算機可以ping通虛擬機3和虛擬機4。
場景二:控制層中預(yù)先開啟負(fù)載均衡和流量重定向功能,將測試計算機訪問虛擬機3和虛擬機4的流量重定向到虛擬機1和虛擬機2,同時在應(yīng)用防火墻上設(shè)置訪問控制規(guī)則,不允許測試計算機對虛擬機1和虛擬機2進(jìn)行ICMP通信。在測試計算機上向虛擬機3和虛擬機4發(fā)送ICMP報文,操作指令為ping 192.168.10.4和ping 192.168.10.5。
實驗結(jié)果:測試計算機不可以ping通虛擬機3和虛擬機4。通過抓包工具查看端口2和端口3端口,發(fā)現(xiàn)端口2和端口3端口并未接收到來自測試計算機的ICMP請求報文,但是在查看端口0時,發(fā)現(xiàn)有來自測試計算機訪問虛擬機3的ICMP請求報文,查看端口1時,有來自測試計算機訪問虛擬機4的ICMP請求報文。
場景三:在測試計算機使用流量發(fā)生器向虛擬機3發(fā)送HTTP、FTP、POP3應(yīng)用流量,防火墻開啟所有應(yīng)用協(xié)議的解析,同時開啟對上述3種協(xié)議的阻斷。
實驗結(jié)果:虛擬機3未接收到上述3種應(yīng)用協(xié)議的數(shù)據(jù)包,但是查看應(yīng)用防火墻的流量統(tǒng)計模塊,發(fā)現(xiàn)這3種應(yīng)用協(xié)議的流量數(shù)目都增加了。測試數(shù)據(jù)證明該防火墻能成功檢測并過濾以上3種應(yīng)用協(xié)議。
通過以上實驗證明,分布式應(yīng)用防火墻系統(tǒng)實現(xiàn)了網(wǎng)絡(luò)流量的重定向和負(fù)載分?jǐn)偅约皩?yīng)用層協(xié)議的檢測和過濾功能。
隨著計算機和網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)安全問題日益嚴(yán)重。作為網(wǎng)絡(luò)安全防護(hù)措施中不可或缺的一環(huán),防火墻的作用越來越關(guān)鍵。目前主流應(yīng)用防火墻大多采用軟件方式實現(xiàn)深度包檢測,當(dāng)檢測規(guī)則較多時處理速度會變慢,容易成為網(wǎng)絡(luò)瓶頸。此外,隨著虛擬化和云計算技術(shù)的運用,傳統(tǒng)的硬件防火墻不能適用新的應(yīng)用場景。針對該現(xiàn)狀,該文設(shè)計了一種基于SDN技術(shù)的分布式應(yīng)用防火墻系統(tǒng),并通過實驗證明該防火墻系統(tǒng)的可行性和有效性。然而,也存在一些需要改進(jìn)和優(yōu)化的地方,比如控制器存在單點故障,如何實現(xiàn)防火墻系統(tǒng)對各應(yīng)用防火墻組件的存活狀態(tài)檢測和故障自動切換,也是下一步的研究內(nèi)容。