王森
(國家信息中心 信息與網(wǎng)絡(luò)安全部 北京市 100045)
近來進(jìn)行數(shù)據(jù)破壞、篡改的網(wǎng)絡(luò)攻擊頻發(fā),例如勒索病毒進(jìn)行惡意加密,破壞了數(shù)據(jù)的可用性。因此,數(shù)據(jù)備份是重要的安全手段,尤其在重要信息系統(tǒng)中,應(yīng)建立異地備份防范火災(zāi)、水災(zāi)、地震等災(zāi)難性安全事件。
為防止數(shù)據(jù)異地備份過程中被黑客截獲,需要采用專用線路或虛擬專線。但是租用專線費(fèi)用較高,為此常采用VPN虛擬專網(wǎng),建立IPSec隧道[1],實(shí)現(xiàn)不安全網(wǎng)絡(luò)區(qū)域的通信保護(hù),為重要數(shù)據(jù)傳輸提供安全保護(hù)[2]。本文結(jié)合網(wǎng)絡(luò)管理、IKE和IPSec配置、出口路由配置、密碼算法和數(shù)字證書認(rèn)證等多方面技術(shù),研究縱深體系下數(shù)據(jù)備份場(chǎng)景中IPSec相關(guān)技術(shù),對(duì)災(zāi)備系統(tǒng)方案設(shè)計(jì)和開展數(shù)據(jù)安全管理工作具有較高參考價(jià)值,滿足等級(jí)保護(hù)三級(jí)以上系統(tǒng)密碼應(yīng)用安全評(píng)估的相關(guān)要求[3][4]。
生產(chǎn)系統(tǒng)數(shù)據(jù)庫和災(zāi)備中心數(shù)據(jù)庫建立網(wǎng)絡(luò)連接,按策略進(jìn)行同步,將數(shù)據(jù)從生產(chǎn)系統(tǒng)傳遞到災(zāi)備中心[5]。
與一般的點(diǎn)對(duì)點(diǎn)、站點(diǎn)對(duì)站點(diǎn)模式不一樣,數(shù)據(jù)庫通常位于生產(chǎn)系統(tǒng)網(wǎng)絡(luò)的內(nèi)部,應(yīng)考慮從內(nèi)部到外打通隧道,并應(yīng)滿足三方面需求。
(1)網(wǎng)絡(luò)拓?fù)湔{(diào)整影響。通常生產(chǎn)系統(tǒng)網(wǎng)絡(luò)采用了縱深防御的體系,包括出口路由器、防火墻、核心交換機(jī)、接入交換機(jī)、訪問控制防火墻等,這些網(wǎng)絡(luò)設(shè)備重新規(guī)劃和調(diào)整的難度非常大。建立災(zāi)備通道方案時(shí),應(yīng)充分考慮對(duì)現(xiàn)有拓?fù)涓淖兩?、?duì)業(yè)務(wù)系統(tǒng)影響小、回撤方案簡(jiǎn)單易行等需求。
(2)數(shù)據(jù)傳輸過程中“非加密傳輸距離”。在大型網(wǎng)絡(luò)中,通常設(shè)置了數(shù)據(jù)服務(wù)安全區(qū),在安全區(qū)邊界采用防火墻進(jìn)行訪問控制,在網(wǎng)絡(luò)設(shè)備上設(shè)置VLAN進(jìn)行通信隔離。傳輸備份數(shù)據(jù)時(shí)應(yīng)保證原始明文數(shù)據(jù)在交換路由中,不會(huì)被其他節(jié)點(diǎn)截獲,為此安全傳輸?shù)亩它c(diǎn)應(yīng)距離數(shù)據(jù)庫越近越好。
(3)VPN密碼設(shè)備的選用。為了不讓傳輸加密給數(shù)據(jù)庫服務(wù)器帶來額外的運(yùn)算負(fù)擔(dān),通常采用“外掛式”設(shè)備,部署VPN硬件實(shí)現(xiàn)通道、加密數(shù)據(jù)、校驗(yàn)完整性等操作。按照等級(jí)保護(hù)要求和密碼應(yīng)用要求等,密碼算法、密碼協(xié)議和密鑰管理應(yīng)符合相關(guān)國家標(biāo)準(zhǔn)或密碼行業(yè)標(biāo)準(zhǔn)的要求,為此應(yīng)采用經(jīng)密碼產(chǎn)品認(rèn)證檢測(cè)機(jī)構(gòu)認(rèn)證的商密設(shè)備。
將IPSec VPN設(shè)備部署在接入交換機(jī)后、數(shù)據(jù)庫服務(wù)器前,采用透明工作模式的方案能夠滿足以上要求。
IPSec VPN的兩種工作場(chǎng)景:
(1)兩個(gè)或多個(gè)子網(wǎng)通過隧道打通。
(2)點(diǎn)對(duì)點(diǎn)方式建立安全連接[6]。
2.1.1 多網(wǎng)打通場(chǎng)景
通過IPSec VPN通道,將多個(gè)遠(yuǎn)程隔離子網(wǎng)聯(lián)成一個(gè)網(wǎng)絡(luò),并且子網(wǎng)之間的數(shù)據(jù)通信采用認(rèn)證、加密等安全防護(hù)。
部署方式。IPSec設(shè)備部署在網(wǎng)絡(luò)邊界處,具有內(nèi)、外網(wǎng)兩個(gè)網(wǎng)口,分別于內(nèi)、外網(wǎng)相聯(lián)。IPSec設(shè)備之間進(jìn)行相互認(rèn)證,并對(duì)傳遞的數(shù)據(jù)進(jìn)行加密保護(hù)。
地址分配。通常每個(gè)子網(wǎng)分配不同的網(wǎng)段,例如子網(wǎng)A的網(wǎng)段為192.168.1.0/24,子網(wǎng)B的網(wǎng)段為192.168.2.0/24。
建立隧道。網(wǎng)關(guān)內(nèi)網(wǎng)口IP地址設(shè)為內(nèi)網(wǎng)的網(wǎng)關(guān)地址,將IPSecA的內(nèi)網(wǎng)口設(shè)192.168.1.254。子網(wǎng)A節(jié)點(diǎn)訪問子網(wǎng)B時(shí),原始數(shù)據(jù)報(bào)經(jīng)IPSecA判斷,如果目的地址屬于子網(wǎng)192.168.2.0/24,則滿足“進(jìn)入隧道”條件,數(shù)據(jù)報(bào)進(jìn)入IPSecA和IPSecB之間隧道,到達(dá)IPSecB后,由IPSecB內(nèi)網(wǎng)口將原始數(shù)據(jù)發(fā)送到子網(wǎng)B中。
多網(wǎng)路由。當(dāng)有多個(gè)子網(wǎng)時(shí),IPSec節(jié)點(diǎn)需要建立路由表。路由表記錄對(duì)端子網(wǎng)和對(duì)端IPSec節(jié)點(diǎn)地址,根據(jù)目的網(wǎng)絡(luò)地址選擇對(duì)端IPSec節(jié)點(diǎn)建立的隧道,通過隧道傳遞至對(duì)端子網(wǎng)。
2.1.2 點(diǎn)對(duì)點(diǎn)場(chǎng)景
“點(diǎn)對(duì)點(diǎn)”可以看作是兩臺(tái)主機(jī)之間建立安全通道。例如,互聯(lián)網(wǎng)上的Alice想使用類似“飛鴿傳書”的軟件給Bob發(fā)送一些照片,同時(shí)不希望照片在網(wǎng)絡(luò)上以明文方式傳輸,為此Alice和Bob都使用IPSec客戶端,約定認(rèn)證方式建立了連接,那么Alice和Bob之間的通信將被保護(hù)。
以上場(chǎng)景都是基于IPSec的兩種安全協(xié)議ESP和AH提供支持,ESP實(shí)現(xiàn)了加密、防篡改功能,AH協(xié)議僅實(shí)現(xiàn)了防篡改功能。采用隧道模式在原始數(shù)據(jù)報(bào)前會(huì)加上一個(gè)新IP報(bào)頭,源地址和目的地址分別為起點(diǎn)和終點(diǎn)的IPSec設(shè)備的IP地址。傳輸模式在原有數(shù)據(jù)報(bào)原始IP頭后添加了AH或ESP報(bào)頭。
透?jìng)髂J絒8]的特點(diǎn)是設(shè)備采用串聯(lián)方式接入到網(wǎng)絡(luò)中。以防火墻透?jìng)髂J綖槔?,該方案?yōu)點(diǎn)是不需要網(wǎng)絡(luò)路由的配置,每一個(gè)數(shù)據(jù)報(bào)都必然經(jīng)過防火墻。相較于邊界防火墻,采用透?jìng)鞣绞降姆阑饓ε渲酶?jiǎn)單,僅需要包過濾功能,對(duì)網(wǎng)絡(luò)拓?fù)涓膭?dòng)較小。透?jìng)髂J絀PSec部署方式相似,都是采用串行方式,當(dāng)通過IPSec節(jié)點(diǎn)的數(shù)據(jù)流不符合隧道保護(hù)條件時(shí),不做任何操作,像普通二層網(wǎng)絡(luò)設(shè)備進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā),因此對(duì)網(wǎng)絡(luò)改動(dòng)也較小。
如圖1所示,出口路由器實(shí)現(xiàn)了網(wǎng)絡(luò)接入,路由器的外網(wǎng)口是公網(wǎng),內(nèi)網(wǎng)口是私網(wǎng)。透明模式IPSec VPN,保護(hù)生產(chǎn)數(shù)據(jù)庫與備份數(shù)據(jù)庫之間通信[7]。
圖1:跨NAT穿透的透明模式示意圖
NAT將內(nèi)部地址映射成公網(wǎng)地址,包括靜態(tài)、動(dòng)態(tài)和端口復(fù)用等類型。
(1)靜態(tài)NAT實(shí)現(xiàn)了私網(wǎng)地址與公網(wǎng)地址固定的一對(duì)一映射。
(2)動(dòng)態(tài)NAT采用非固定的一對(duì)一映射,適用于發(fā)起NAT轉(zhuǎn)換的主機(jī)不確定,例如撥號(hào)。
(3)為解決公網(wǎng)地址數(shù)量有限難題,產(chǎn)生了端口復(fù)用的NAT,采用內(nèi)網(wǎng)地址+端口映射成外網(wǎng)地址+端口的方式。
端口復(fù)用技術(shù)又包括源NAT、目的NAT。源NAT用于內(nèi)網(wǎng)地址訪問外網(wǎng),數(shù)據(jù)包經(jīng)過路由器時(shí),將內(nèi)網(wǎng)地址+傳輸端口用外網(wǎng)地址(固定)+外網(wǎng)端口映射替換。目的NAT用于將內(nèi)網(wǎng)地址作為服務(wù)地址發(fā)布,將內(nèi)網(wǎng)地址(固定)和端口(固定)映射成外網(wǎng)地址(固定)和端口(固定)。圖2舉例說明,R1配置了源NAT,R2配置了目的NAT。發(fā)起方內(nèi)網(wǎng)地址通過路由器源地址轉(zhuǎn)換成公網(wǎng)地址,到達(dá)對(duì)端目的路由器后目的地址轉(zhuǎn)成內(nèi)網(wǎng)地址。通過轉(zhuǎn)化操作,實(shí)現(xiàn)兩個(gè)私網(wǎng)地址的數(shù)據(jù)通信。
圖2:NAT模式示意圖
當(dāng)IPSec部署在路由器內(nèi)部,如圖3所示,并且進(jìn)行了端口復(fù)用NAT轉(zhuǎn)化時(shí),會(huì)遇到相關(guān)問題。
圖3:跨NAT的IPSec
當(dāng)采用IPSec進(jìn)行隧道保護(hù)時(shí),數(shù)據(jù)報(bào)TCP、UDP協(xié)議已經(jīng)被IPSec進(jìn)行了封裝,此時(shí)已沒有傳輸層協(xié)議端口,路由器無法根據(jù)NAT進(jìn)行端口映射。
如果選用AH協(xié)議,NAT地址轉(zhuǎn)換后,數(shù)據(jù)報(bào)中IP字段會(huì)被修改,此時(shí)數(shù)據(jù)報(bào)中的認(rèn)證校驗(yàn)不通過。
AH協(xié)議需要認(rèn)證IP頭信息,因此只能選用ESP協(xié)議,此時(shí)對(duì)IP頭中的地址信息不進(jìn)行認(rèn)證。NAT-T在ESP數(shù)據(jù)報(bào)IP頭和ESP頭之間插入一個(gè)UDP頭,實(shí)現(xiàn)NAT穿越,如圖4所示。
圖4:NAT-T數(shù)據(jù)格式
修改IP頭協(xié)議信息,將ESP修改為UDP,添加UDP頭,包含源端口、目的端口等信息。源端口在源NAT轉(zhuǎn)換時(shí)會(huì)替換成外端口,當(dāng)對(duì)端IPSec節(jié)點(diǎn)收到NAT-T的數(shù)據(jù)報(bào),將去掉UDP頭,重新組裝成ESP數(shù)據(jù)報(bào)。RFC3948中規(guī)定NAT-T中UDP 端口使用IKE協(xié)商時(shí)的端口號(hào)4500。
2.4.1 安全聯(lián)盟SA
安全聯(lián)盟SA是IPSec VPN的基礎(chǔ),包括了兩方(多方),聯(lián)盟之間享受聯(lián)盟外不具備的優(yōu)厚待遇。IPSec中發(fā)起方和響應(yīng)方,通過認(rèn)證協(xié)議建立聯(lián)盟,并采用加密、認(rèn)證等安全技術(shù),實(shí)現(xiàn)聯(lián)盟對(duì)象間的安全通信。通常說的AH協(xié)議和ESP協(xié)議屬于安全聯(lián)盟執(zhí)行協(xié)議。
SA的建立有兩種方式:手工方式和IKE協(xié)議方式。手工方式在IPSec設(shè)備上配置所需全部的參數(shù),包括封裝模式、安全協(xié)議、認(rèn)證方法、加密和哈希算法,以及認(rèn)證密鑰、加密密鑰和SPI(Security Parameter)。建立SA之后,由一個(gè)三元組(SPI、目的IP地址、安全協(xié)議)來作為唯一標(biāo)識(shí)。一個(gè)SA信息只描述從發(fā)起者與響應(yīng)者建立的連接,IPSec在2個(gè)節(jié)點(diǎn)之間搭建數(shù)據(jù)通道時(shí),需要雙向建立,即兩個(gè)SA。
2.4.2 IKE協(xié)議
IKE協(xié)議采用動(dòng)態(tài)協(xié)商產(chǎn)生建立SA的必要參數(shù),包括相關(guān)的隨機(jī)數(shù),IPSec通信時(shí)需要的認(rèn)證密鑰、加密密鑰都是在IKE協(xié)商過程中計(jì)算生成的。因此,又可以將IKE協(xié)商過程看成是“信令通道”建立,之后數(shù)據(jù)信道正式建立即IPSec隧道建立,并通過隧道傳遞信息。
IKE協(xié)商過程分成2個(gè)階段,第一階段主模式和第二階段快速模式。
第一階段主模式。進(jìn)行身份驗(yàn)證、交換隨機(jī)數(shù)。按照GB/T 36968-2018《信息安全技術(shù) IPSec VPN技術(shù)規(guī)范》要求,雙方應(yīng)采用國產(chǎn)密碼SM2的字證書進(jìn)行身份驗(yàn)證[7]。發(fā)起方i向響應(yīng)方交換的數(shù)據(jù)內(nèi)容如下:
XCHi=Asymmetric_Encrypt(SKi,pub_r) | Symmetric_Encrypt(Ni,SKi) | Symmetric_Encrypt(IDi,SKi) | CERT_sig_i | CERT_enc_i
發(fā)送方i發(fā)送了Ni、IDi和證書信息。其中Ni代表i產(chǎn)生隨機(jī)數(shù);SKi為對(duì)稱加密密鑰;IDi為數(shù)字證書中的DN字段的值,類型為ID_DER_ASN1_DN;CERT_sig_i和CERT_enc_i為發(fā)送方的簽名證書和加密證書[10]。
根據(jù)雙方發(fā)送的信息,計(jì)算工作密鑰。下面公式中的PRF(key,msg)代表使用密鑰key對(duì)消息msg進(jìn)行數(shù)據(jù)摘要運(yùn)算,CYK-I為ISAKMP頭中的cookie。
SKEYID = PRF(HASH(Ni|Nr),CYK-I|CYK-R)
SKEYID_d=PRF(SKEYID ,CYK-I | CYK-R | 0)
SKEYID_a=PRF(SKEYID ,SKEYID_d|CYK-I | CYK-R | 1)
SKEYID_e=PRF(SKEYID ,SKEYID_a|CYK-I | CYK-R | 2)
SKEYID_e是保護(hù)機(jī)密性使用的工作密鑰,SKEYID_a是驗(yàn)證消息完整性的工作密鑰,SKEYID_d用于后續(xù)會(huì)話密鑰的產(chǎn)生。
經(jīng)過6個(gè)數(shù)據(jù)報(bào)文的交換,第一階段所需的信息已交換完畢,在第二階段,交換建立IPSec所需要的配置信息,包括模式(隧道、傳輸)、協(xié)議(AH、ESP)、SPI等信息,并生成相應(yīng)工作密鑰。該階段信息采用SKEYID_d進(jìn)行加密。該階段安全提議除安全協(xié)議、密碼算法、工作模式,還包括SPI信息,生產(chǎn)IPSec會(huì)話密鑰生成公式如下,其中Ni、Nr為1、2兩階段傳遞的隨機(jī)數(shù)。
KEYMAT=PRF(SKEYID_d,protocol | SPI | Ni | Nr)
在IKE協(xié)議鑒別過程中,發(fā)起方可將響應(yīng)方NAT出口IP作為目的IP地址,只根據(jù)IDr信息進(jìn)行判斷,不涉及目的IP,因此建立IKE過程不受NAT影響。
本方案的網(wǎng)絡(luò)地址分配策略需要考慮安全域劃分、數(shù)據(jù)服務(wù)和應(yīng)用服務(wù)分離、IPSec隧道模式及跨NAT轉(zhuǎn)化相關(guān)網(wǎng)絡(luò)地址配置。數(shù)據(jù)備份場(chǎng)景如圖5所示。
圖5:數(shù)據(jù)備份網(wǎng)絡(luò)規(guī)劃
安全域劃分。在網(wǎng)絡(luò)中應(yīng)進(jìn)行安全域劃分,并采用防火墻、交換機(jī)等進(jìn)行訪問控制。因此劃分成數(shù)據(jù)安全域、應(yīng)用安全域、安全管理域等安全域,不同的安全域分配不同的子網(wǎng)地址。
IPSec隧道模式的網(wǎng)絡(luò)地址配置。IPSec兩個(gè)節(jié)點(diǎn)分別位于應(yīng)用中心和數(shù)據(jù)備份中心,根據(jù)隧道模式VPN的設(shè)置要求,應(yīng)用中心和數(shù)據(jù)備份中心的網(wǎng)段應(yīng)不同網(wǎng)段。即不能采用“鏡像”方式,否則無法實(shí)現(xiàn)多點(diǎn)打通隧道模式,詳細(xì)分析見3.1部分。
跨NAT轉(zhuǎn)化網(wǎng)絡(luò)地址配置。IPSec位于串行鏈路上,對(duì)經(jīng)過的流量進(jìn)行控制,此時(shí)可采用手工方式建立SA,即配置具體的安全參數(shù),包括對(duì)等體地址、封裝模式、安全協(xié)議、認(rèn)證算法和加密算法,出入方向的認(rèn)證密鑰和加密密鑰,出入方向的SPI等。采用手工方式不需要協(xié)商生成參數(shù),實(shí)現(xiàn)了固定的點(diǎn)對(duì)點(diǎn)加密鏈路。但手工方式建立SA的安全性較低,存在密鑰固定、不支持在線數(shù)字證書認(rèn)證、長(zhǎng)期有效無法自動(dòng)失效等問題。因此需要采用IKE模式,此時(shí)兩個(gè)節(jié)點(diǎn)必須經(jīng)源NAT和目的NAT后才能夠通信。并且SA具有出/入雙向性,兩個(gè)端點(diǎn)都必須能夠作為目的地址,即兩個(gè)端點(diǎn)都需要NAT映射到外網(wǎng)。邊界路由器需要將IPSec UDP 4500端口映射到出口地址UDP 4500端口。
根據(jù)我國商用密碼相關(guān)技術(shù)標(biāo)準(zhǔn),IPSec節(jié)點(diǎn)的數(shù)字證書認(rèn)證功能應(yīng)支持符合GB/T 20518-2018證書格式,應(yīng)支持LDAP、OCSP等在線認(rèn)證方式,支持自動(dòng)下載CRL,能夠?qū)崿F(xiàn)在線或離線驗(yàn)證證書有效性。
透明模式的VPN難點(diǎn)在于IPSec協(xié)議實(shí)現(xiàn)了網(wǎng)絡(luò)層數(shù)據(jù)加密保護(hù),保護(hù)信息被加密封裝在IP報(bào)頭后載荷,載荷的解封裝依賴安全協(xié)議及相關(guān)密鑰,但經(jīng)NAT轉(zhuǎn)換后,IP地址被替換、傳輸層協(xié)議被封裝,使普通IPSec無法跨越NAT。本文介紹了VPN工作場(chǎng)景、IKE、NAT穿越等相關(guān)技術(shù),進(jìn)行整合統(tǒng)一形成了解決方案,滿足數(shù)據(jù)備份通信加密保護(hù)和穿透NAT兩方面要求,對(duì)開展數(shù)據(jù)備份實(shí)踐工作具有參考價(jià)值。