申玲鈺,朱振乾
(1.中國電子科技集團(tuán)公司第三十研究所,成都 610041; 2.中國電子科技網(wǎng)絡(luò)信息安全有限公司,成都 610041)
隨著網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,網(wǎng)絡(luò)安全問題得到了廣泛關(guān)注。IPsec 與防火墻是網(wǎng)絡(luò)安全保護(hù)中常用的技術(shù)。防火墻主要用于保護(hù)內(nèi)網(wǎng)的安全,是內(nèi)部網(wǎng)絡(luò)與公共網(wǎng)絡(luò)間的第一道屏障,它按照一定的安全策略,對網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)包進(jìn)行檢查,以決定對其進(jìn)行放行或丟棄。IPsec 協(xié)議工作在IP 層上,為IP 數(shù)據(jù)包提供機(jī)密性、完整性、身份鑒別和訪問控制等安全服務(wù)。將IPsec 與防火墻兩種技術(shù)結(jié)合,可更有利于保護(hù)整個網(wǎng)絡(luò)的數(shù)據(jù)安全。L3VPN工作在OSI 網(wǎng)絡(luò)模型中的第三層,將公網(wǎng)模擬為一臺網(wǎng)關(guān),IPsec 是目前L3VPN 技術(shù)開發(fā)中使用最廣泛的一種安全協(xié)議標(biāo)準(zhǔn)。L2VPN 工作在OSI 網(wǎng)絡(luò)模型中的第二層,可以隱藏地域限制,能夠真正地做到即插即用、高度透明。本文基于Linux 操作系統(tǒng),提出了一種使用防火墻與IPsec 協(xié)同實(shí)現(xiàn)L3/L2 一體化VPN 的方法,該方法可做到在網(wǎng)關(guān)與網(wǎng)橋模式下自由切換。
Netfilter 是Linux 下的一個防火墻框架,它具有很好的可擴(kuò)展性和安全性。NetFilter 雖結(jié)構(gòu)相對獨(dú)立,但它是嵌入內(nèi)核IP 協(xié)議棧的一系列調(diào)用入口,將其設(shè)置在報文處理的路徑上,和IP 報文的處理是完全結(jié)合在一起的。NetFilter 定義了一套鉤子函數(shù),在網(wǎng)絡(luò)報文流過協(xié)議棧的幾個關(guān)鍵點(diǎn)插入處理過程,五個HOOK 點(diǎn)如下:
NF_IP_PRE_ROUTING,在數(shù)據(jù)包經(jīng)過簡單處理后,路由選擇前執(zhí)行;
NF_IP_FORWARD,在數(shù)據(jù)包經(jīng)過路由選擇后如需轉(zhuǎn)發(fā)時執(zhí)行;
NF_IP_LOCAL_IN,在數(shù)據(jù)包經(jīng)過路由選擇后如目的地址是本機(jī)時執(zhí)行;
NF_IP_LOCAL_OUT,在本機(jī)進(jìn)程發(fā)出數(shù)據(jù)包做路由選擇前執(zhí)行;
NF_IP_POST_ROUTING,在數(shù)據(jù)包傳輸?shù)骄W(wǎng)絡(luò)之前執(zhí)行。
防火墻系統(tǒng)另一重要組成是IPTables 的包選擇系統(tǒng),它包含四個表,優(yōu)先級從高到底依次為Raw表、Mangle 表、Nat 表、Filter 表。
Raw表,決定數(shù)據(jù)包是否被狀態(tài)跟蹤機(jī)制(Conntrack)處理;
Mangle 表,可修改數(shù)據(jù)包的MARK、TTL、QOS 等;
Nat 表,用于網(wǎng)絡(luò)地址轉(zhuǎn)換;
Filter 表,用于過濾報文,不作任何修改,接受或拒絕。
網(wǎng)絡(luò)報文在基于NetFilter 的防火墻中的處理流程如下圖所示:
圖1 網(wǎng)絡(luò)報文在基于NetFilter 的防火墻中處理流程
IPsec VPN 是一種在公共網(wǎng)絡(luò)中建立安全可靠虛擬專用網(wǎng)的技術(shù),使用IPsec 協(xié)議保障IP 數(shù)據(jù)包的安全傳輸。IPsec 提供了認(rèn)證和加密兩種安全機(jī)制,認(rèn)證機(jī)制可用于身份鑒別及驗(yàn)證數(shù)據(jù)在傳輸過程中是否存在篡改攻擊,加密機(jī)制用于保證數(shù)據(jù)傳輸過程的機(jī)密性。IPsec VPN 工作在網(wǎng)絡(luò)層,與網(wǎng)絡(luò)協(xié)議棧聯(lián)系緊密,適用性廣泛。
IPsec VPN 與防火墻協(xié)同工作的典型應(yīng)用場景如圖2 所示,某企業(yè)總部需與其支部及移動用戶間,在公用互聯(lián)網(wǎng)中建立其虛擬專業(yè)網(wǎng)絡(luò),該虛擬專業(yè)網(wǎng)絡(luò)包含加密、認(rèn)證、權(quán)限分配、訪問記錄、安全監(jiān)測等一系列安全手段。
圖2 網(wǎng)關(guān)模式下防火墻與IPsec 協(xié)同工作應(yīng)用場景圖
在Linux 內(nèi)核系統(tǒng)中,IPsec 的數(shù)據(jù)封裝安全載荷協(xié)議(Encapsulating Security Payload,ESP)及認(rèn)證頭協(xié)議(Authentication Header,AH)是注冊為傳輸層協(xié)議,在傳輸層進(jìn)行封裝和解封裝處理,在ESP 和AH 協(xié)議過程中調(diào)用加解密算法實(shí)現(xiàn)對報文的處理?,F(xiàn)將防火墻及IPsec 技術(shù)相結(jié)合實(shí)現(xiàn)防火墻L3VPN,網(wǎng)絡(luò)層數(shù)據(jù)報文的包過濾及加解密處理流程如圖3 所示:
內(nèi)網(wǎng)數(shù)據(jù)外出處理流程:內(nèi)網(wǎng)數(shù)據(jù)包首先進(jìn)入防火墻的NF_IP_PRE_ROUTING 鏈,在該鏈處進(jìn)行跟綜連接,然后進(jìn)入NF_IP_FORWARD 鏈進(jìn)行轉(zhuǎn)發(fā)及基于狀態(tài)的包過濾等安全處理,符合規(guī)則的數(shù)據(jù)包最后進(jìn)入NF_IP_POST_ROUTING 鏈,在此鏈中用定義的HOOK 函數(shù)進(jìn)行VPN 處理。VPN 處理首先查找SPD 數(shù)據(jù)庫獲取處理策略,若為密通策略則得到相應(yīng)的SA 進(jìn)行IPsec 封裝加密和認(rèn)證處理,若為明通策略直接通過,若為丟棄策略直接拒絕。最后將包進(jìn)行分片處理(封裝后包長將增加),發(fā)送至外網(wǎng)中。
外網(wǎng)數(shù)據(jù)進(jìn)入處理流程:外網(wǎng)數(shù)據(jù)進(jìn)入防火墻的NF_IP_PRE_ROUTING 鏈后,由定義的HOOK函數(shù)判斷其是否為IPsec 包,若是則進(jìn)行IPsec 解封裝解密及認(rèn)證處理,解封裝成功后由路由模塊判定是本地處理還是轉(zhuǎn)發(fā)。若為本地處理則進(jìn)入NF_IP_LOCAL_IN 鏈對數(shù)據(jù)包進(jìn)行包過濾、規(guī)則檢測等安全處理,以決定接收還是丟棄。若為轉(zhuǎn)發(fā)則進(jìn)入NF_IP_FORWARD 鏈進(jìn)行轉(zhuǎn)發(fā)及基于狀態(tài)的包過濾等安全處理,符合規(guī)則的數(shù)據(jù)包最后進(jìn)入NF_IP_POST_ROUTING 鏈,在此鏈中用定義的HOOK 函數(shù)查找該數(shù)據(jù)包的策略。若策略顯示數(shù)據(jù)包還需進(jìn)行VPN 處理,則再進(jìn)行相應(yīng)的IPsec 處理,最后將數(shù)據(jù)包轉(zhuǎn)發(fā)至正確網(wǎng)絡(luò)接口。
圖3 網(wǎng)關(guān)模式下網(wǎng)絡(luò)報文在L3VPN 中的處理流程
實(shí)際應(yīng)用中,防火墻有時工作在網(wǎng)橋模式下,需要設(shè)計L2VPN 以保護(hù)局域網(wǎng)間數(shù)據(jù)傳輸?shù)陌踩?。如圖4 所示,同一個局域網(wǎng)內(nèi)用戶1 與服務(wù)器A 之前交互的數(shù)據(jù)除了要經(jīng)過防火墻的規(guī)則篩選以外,還需進(jìn)行機(jī)密性保護(hù),用戶2 與服務(wù)器B 之間交互的數(shù)據(jù)只需要通過防火墻的規(guī)則篩選直接明通。針對以上的應(yīng)用場景,現(xiàn)介紹一種網(wǎng)橋模式下防火墻與IPsec 協(xié)同實(shí)現(xiàn)L2VPN 的方案。
圖4 網(wǎng)橋模式下防火墻與IPsec 協(xié)同工作應(yīng)用場景圖
在Linux 內(nèi)核中,基于NetFilter 的網(wǎng)橋?qū)崿F(xiàn)機(jī)制中增加了BROUTING 鏈,對應(yīng)的網(wǎng)橋模式下防火墻的配置工具為Ebtables,Ebtables 中的Broute 表用于控制數(shù)據(jù)包是進(jìn)行二層轉(zhuǎn)發(fā)還是三層轉(zhuǎn)發(fā)。當(dāng)網(wǎng)絡(luò)報文進(jìn)入網(wǎng)橋中的BROUTING 鏈后,通過擴(kuò)展其Broute 表及自定義HOOK 函數(shù),將需要機(jī)密性保護(hù)的網(wǎng)絡(luò)報文上傳至三層NF_IP_PRE_ROUTING 鏈中,進(jìn)而經(jīng)過圖3 所示的IPsec 處理及包過濾等安全處理,其他網(wǎng)絡(luò)報文直接在二層進(jìn)行包過濾及規(guī)則匹配。
綜上所述,基于防火墻與IPsec 的L3/L2 一體化VPN 的實(shí)現(xiàn)方案如圖5 所示。該方案主要運(yùn)用了Linux 內(nèi)核中的NetFilter 框架,通過一定的規(guī)則配置可實(shí)現(xiàn)網(wǎng)關(guān)與網(wǎng)橋自由切換,且只需一臺一體化設(shè)備就能完成L2VPN 和L3VPN 的連接,實(shí)際應(yīng)用中可降低網(wǎng)絡(luò)復(fù)雜度及運(yùn)營成本。
圖5 防火墻與IPsec 協(xié)同實(shí)現(xiàn)L3/L2 一體化VPN
本文介紹了Linux 中的防火墻框架NetFilter 及其包選擇系統(tǒng)IPTables 及Ebtables,描述了網(wǎng)關(guān)網(wǎng)橋兩種模式下網(wǎng)絡(luò)報文在防火墻中的處理流程。提出了一種防火墻與IPsec 協(xié)同實(shí)現(xiàn)L3/L2 一體化VPN 的設(shè)計方案,該方案具有在網(wǎng)關(guān)與網(wǎng)橋模式下自由切換、配置簡單、功能靈活等特點(diǎn),是一種有效且適用范圍廣泛的網(wǎng)絡(luò)防御機(jī)制,而且在網(wǎng)橋上實(shí)現(xiàn)可以隱藏地域限制,能夠真正做到即插即用、高度透明。