張 璐
(國家電網(wǎng)有限公司信息通信分公司,北京 100761)
Internet的迅速發(fā)展在給人們的生產(chǎn)和生活帶來前所未有的便捷的同時(shí),也給人們帶來了日益嚴(yán)峻的網(wǎng)絡(luò)安全問題。這種會(huì)導(dǎo)致危害的可能性使得用來保護(hù)Internet資源的安全措施和設(shè)備變得不可或缺[1],其中不可不提的就是防火墻,它幾乎是維護(hù)網(wǎng)絡(luò)安全必不可少的一個(gè)組成部分[2]。
防火墻通常部署在一個(gè)網(wǎng)絡(luò)的出入口處,它是不同網(wǎng)絡(luò)或網(wǎng)絡(luò)安全域之間信息的唯一出入口,通過執(zhí)行一定的規(guī)則來控制內(nèi)外網(wǎng)絡(luò)的數(shù)據(jù)流,從而控制用戶對(duì)網(wǎng)絡(luò)資源的訪問。在邏輯上,防火墻是一個(gè)分離器、一個(gè)限制器,同時(shí)也是一個(gè)分析器,能有效地監(jiān)控內(nèi)部網(wǎng)和Internet之間的任何活動(dòng),保證內(nèi)部網(wǎng)絡(luò)的安全[3]。
防火墻具有如下特性:所有的通信都經(jīng)過防火墻,防火墻只放行經(jīng)過授權(quán)的網(wǎng)絡(luò)流量,防火墻能經(jīng)受得起對(duì)其本身的攻擊[4]。
狀態(tài)檢測防火墻(Stateful Inspection Firewall)也叫自適應(yīng)防火墻或動(dòng)態(tài)包過濾防火墻(Dynamic Packet Filter Firewall),是最新一代的防火墻,稱為第三代防火墻。每個(gè)網(wǎng)絡(luò)連接通常包括以下信息:源IP地址、目的IP地址、源端口號(hào)和目的端口號(hào)、協(xié)議類型、連接狀態(tài)(適用于TCP)、協(xié)議相關(guān)信息(如TCP/UDP端口號(hào)) 和超時(shí)時(shí)間等。防火墻把這些信息叫做狀態(tài)[5]。
狀態(tài)檢測防火墻使用最典型的是通過TCP連接建立會(huì)話,以會(huì)話為單位進(jìn)行檢測,將屬于同一連接的所有包作為一個(gè)整體的數(shù)據(jù)流來看待,構(gòu)成狀態(tài)表,通過安全規(guī)則表與狀態(tài)表的共同配合,對(duì)表中的各個(gè)連接狀態(tài)進(jìn)行快速識(shí)別,以此提高數(shù)據(jù)傳輸?shù)男省?/p>
圖1是狀態(tài)檢測防火墻的工作原理圖。由圖1可知,數(shù)據(jù)包到達(dá)狀態(tài)檢測防火墻的接口時(shí),會(huì)執(zhí)行以下步驟:檢查數(shù)據(jù)包是否是一個(gè)已經(jīng)建立并且正在使用的數(shù)據(jù)流的一部分,若是,通過匹配防火墻狀態(tài)表中的信息,快速傳送數(shù)據(jù)包;若不是,通過三次握手建立TCP連接,防火墻通過安全策略進(jìn)行判斷,并將該連接的源IP地址、目的IP地址、源端口號(hào)和目的端口號(hào)等信息記入狀態(tài)表。持續(xù)有屬于該連接的數(shù)據(jù)請求時(shí),直接與防火墻狀態(tài)表中的信息進(jìn)行匹配,方便數(shù)據(jù)快速通過。
需要注意的是:狀態(tài)檢測防火墻中的狀態(tài)表存在失效時(shí)間問題,若在一段時(shí)間內(nèi)無會(huì)話通過,該狀態(tài)表的會(huì)話便會(huì)失效,數(shù)據(jù)再次請求通過時(shí)需要重新建立TCP連接。
圖1 狀態(tài)檢測防火墻工作原理
1.2.1 系統(tǒng)跨網(wǎng)絡(luò)區(qū)域多防火墻的運(yùn)行隱患
圖2為電子郵件系統(tǒng)的網(wǎng)絡(luò)架構(gòu)圖。圖2顯示,架構(gòu)中存在2個(gè)不同的網(wǎng)絡(luò)二級(jí)區(qū)域,多一道防火墻無形中就為系統(tǒng)增加了一道隱患,在系統(tǒng)業(yè)務(wù)請求數(shù)據(jù)量過大的情況下,如果出現(xiàn)防火墻中斷,就無法獲取到業(yè)務(wù)數(shù)據(jù),會(huì)導(dǎo)致業(yè)務(wù)不可用的情況發(fā)生。正是由于電子郵件系統(tǒng)的特殊性和業(yè)務(wù)量大,此項(xiàng)優(yōu)化顯得尤為重要。
2017年就出現(xiàn)過由于防火墻導(dǎo)致系統(tǒng)業(yè)務(wù)不可用的情況。應(yīng)用服務(wù)連接存儲(chǔ)進(jìn)行收取信件時(shí),出現(xiàn)無法正常建立會(huì)話連接的情況:系統(tǒng)獲取存儲(chǔ)數(shù)據(jù)是通過操作系統(tǒng)NFS(network file sysytem)與存儲(chǔ)之間通信的,NFS是通過網(wǎng)絡(luò)讓不同的機(jī)器之間可以彼此共享文件和目錄;在數(shù)據(jù)傳輸過程中,NFS不會(huì)主動(dòng)探測防火墻現(xiàn)在是否能夠正常允許數(shù)據(jù)通過,只有請求到來的時(shí)候才會(huì)觸發(fā)NFS請求,建立連接。
當(dāng)出現(xiàn)數(shù)據(jù)被丟棄的情況,防火墻不會(huì)反饋給請求方,因此NFS會(huì)不斷請求嘗試重連,直到數(shù)據(jù)允許通過。如果NFS持續(xù)無法連接到存儲(chǔ),用戶獲取信件的請求無法響應(yīng),長時(shí)間無法連接,就會(huì)觸發(fā)系統(tǒng)后端取信模塊(MS)發(fā)生高可用切換。在實(shí)際情況下,MS取信模塊服務(wù)與存儲(chǔ)連接異常,程序主動(dòng)退出(試圖重啟)的時(shí)候,發(fā)生了死鎖故障,程序一直退出失敗,資源釋放不成功,程序處于僵死狀態(tài),無法完成高可用切換;在業(yè)務(wù)高峰期,進(jìn)一步導(dǎo)致電子郵件系統(tǒng)前端模塊癱瘓,進(jìn)而無法正常收發(fā)郵件。因此,為了將防火墻的潛在隱患降到最低,需將網(wǎng)絡(luò)區(qū)合并,盡可能減少多余的防火墻,減少不必要的外部影響。
圖2 電子郵件系統(tǒng)網(wǎng)絡(luò)架構(gòu)圖
1.2.2 電子郵件系統(tǒng)應(yīng)用程序運(yùn)行情況及分析
若防火墻存在的隱患被觸發(fā),系統(tǒng)后端模塊由于無法請求到后端存儲(chǔ)導(dǎo)致業(yè)務(wù)不可用,前面所述問題顯示出來系統(tǒng)后端模塊應(yīng)用程序脆弱。因此,仍需從系統(tǒng)應(yīng)用層面對(duì)系統(tǒng)架構(gòu)進(jìn)行優(yōu)化。
電子郵件系統(tǒng)后端模塊是通過部署REDHAT CLUSTER集群,實(shí)現(xiàn)HA高可用切換的,后端模塊出現(xiàn)瓶頸時(shí),高可用無法進(jìn)行切換而僵死堵塞,對(duì)后續(xù)業(yè)務(wù)產(chǎn)生巨大影響。電子郵件系統(tǒng)的服務(wù)需求是大批量的用戶請求能夠無延遲地獲取信件,而后端模塊(MS)主要負(fù)責(zé)郵件提取。當(dāng)出現(xiàn)異常時(shí),業(yè)務(wù)請求量逐漸增大會(huì)導(dǎo)致后端模塊堵塞,無法正常獲取郵件;防火墻恢復(fù)后,后端堵塞現(xiàn)象無法立刻恢復(fù)。因此,在合并優(yōu)化網(wǎng)絡(luò)區(qū)的同時(shí)還需要將應(yīng)用集群形式進(jìn)行優(yōu)化,防止外部情況發(fā)生時(shí),后端應(yīng)用堵塞并僵死無法正常收取信件的隱患發(fā)生。
如圖3所示,將兩個(gè)網(wǎng)絡(luò)二級(jí)區(qū)合并之后,現(xiàn)在存在2個(gè)基本的網(wǎng)絡(luò)區(qū)域,減少了防火墻,很大程度上減少了跨網(wǎng)絡(luò)區(qū)域多防火墻帶來的隱患,為其他信息系統(tǒng)運(yùn)行提供了有效的幫助和指導(dǎo)。
圖3 電子郵件系統(tǒng)網(wǎng)絡(luò)架構(gòu)圖
為了緩解由于后端模塊在業(yè)務(wù)高峰期出現(xiàn)故障時(shí)無法進(jìn)行高可用切換的問題,在進(jìn)行后端應(yīng)用優(yōu)化過程中,將取信模塊(MS模塊)從高可用切換模式中脫離出來,變?yōu)樨?fù)載均衡模式,即如果MS出現(xiàn)故障,讀取郵件的請求也會(huì)發(fā)送到備節(jié)點(diǎn)(備節(jié)點(diǎn)存儲(chǔ)與主節(jié)點(diǎn)存儲(chǔ)相同的信件內(nèi)容),不影響信件正常收發(fā)。每個(gè)MS節(jié)點(diǎn)掛接一定數(shù)量的存儲(chǔ)卷,一個(gè)存儲(chǔ)卷只掛接在一個(gè)MS節(jié)點(diǎn)下面。當(dāng)前的分區(qū)規(guī)則是:前端服務(wù)模塊訪問MS節(jié)點(diǎn)時(shí),向與MS節(jié)點(diǎn)號(hào)對(duì)應(yīng)的服務(wù)節(jié)點(diǎn)發(fā)送請求。每1到2個(gè)MS節(jié)點(diǎn)劃分為一組,同一分組的MS節(jié)點(diǎn)掛接完全一樣的存儲(chǔ)卷,同一分組內(nèi)部的所有MS節(jié)點(diǎn)同時(shí)提供服務(wù)。
前端模塊訪問MS時(shí),根據(jù)MS分組號(hào),通過選舉算法得到MS分組內(nèi)部可用MS節(jié)點(diǎn)列表,對(duì)照郵件關(guān)鍵字,按照MS節(jié)點(diǎn)數(shù)量進(jìn)行哈希,得到對(duì)應(yīng)的MS節(jié)點(diǎn)。
圖4為后端應(yīng)用優(yōu)化示例圖。圖4中,MS節(jié)點(diǎn)組1內(nèi)部有2個(gè)節(jié)點(diǎn)1_A和1_B,2個(gè)節(jié)點(diǎn)同時(shí)提供服務(wù)。在節(jié)點(diǎn)1_B恢復(fù)后,請求切換到節(jié)點(diǎn)1_B;節(jié)點(diǎn)組2內(nèi),節(jié)點(diǎn)通過分布式選舉算法,新增加MS節(jié)點(diǎn)后,節(jié)點(diǎn)可自行加入分組內(nèi)可用MS節(jié)點(diǎn)列表中,在節(jié)點(diǎn)故障后,前端請求會(huì)無縫切換到分組內(nèi)其他MS節(jié)點(diǎn)。
圖4 后端應(yīng)用優(yōu)化示例
本文通過對(duì)電子郵件系統(tǒng)跨網(wǎng)絡(luò)區(qū)域多防火墻情況的優(yōu)化,降低了防火墻對(duì)系統(tǒng)運(yùn)行的影響,同時(shí)對(duì)系統(tǒng)應(yīng)用架構(gòu)進(jìn)行了改進(jìn),大大減少了故障頻次,強(qiáng)化了信息系統(tǒng)健壯性。這兩方面優(yōu)化為其他信息系統(tǒng)穩(wěn)定運(yùn)行提供了有效的技術(shù)參考,為信息系統(tǒng)運(yùn)行減少了外部影響因素,為保證系統(tǒng)可靠運(yùn)行奠定了堅(jiān)實(shí)的基礎(chǔ)。