現(xiàn)在,網(wǎng)絡(luò)安全和網(wǎng)絡(luò)地址轉(zhuǎn)換的應(yīng)用已經(jīng)十分廣泛。單就其中任何一種技術(shù)來說,都是很不錯(cuò)的。如何將兩個(gè)好技術(shù)共用但又使它們相安無事,是很多人正在思考的問題。
網(wǎng)絡(luò)安全IPsec(IP Security)和網(wǎng)絡(luò)地址轉(zhuǎn)換NAT(Net Address Translation)應(yīng)用已經(jīng)十分廣泛了,但是要使它們運(yùn)行在一起,卻不是一件容易的事。從IP的角度來看,NAT對IP的低層進(jìn)行了修改,對IP是一種背叛;而從應(yīng)用的角度來看,網(wǎng)絡(luò)管理人員必須要處理網(wǎng)絡(luò)地址的問題,NAT使用戶可以采取多種方式把自己的網(wǎng)絡(luò)和主機(jī)對外部公共網(wǎng)絡(luò)隱藏起來,是一種好的工具,現(xiàn)在,無論是大企業(yè)還是中小企業(yè)都在使用它。與NAT類似,IPsec也是一種好工具,它使用戶可以安全地通過Internet聯(lián)接到遠(yuǎn)程終端。然而,由于IPsec協(xié)議架構(gòu)本身以及缺乏支持IPsec的NAT設(shè)備,當(dāng)IPsec和NAT在一起運(yùn)行時(shí)就會出現(xiàn)很多問題。解決這些問題最簡單的辦法,就是再增加一個(gè)路由器來運(yùn)行NAT和虛擬專用網(wǎng)VPN。可是,對于多數(shù)情況來說并沒有多余的路由器來執(zhí)行這一功能,因此,要解決兩者共存的問題,就必須對IPsec和NAT有一定的了解。
NAT的基本原理和類型
NAT能解決令人頭痛的IP地址緊缺的問題,而且能使得內(nèi)外網(wǎng)絡(luò)隔離,提供一定的網(wǎng)絡(luò)安全保障。它解決問題的辦法是:在內(nèi)部網(wǎng)絡(luò)中使用內(nèi)部地址,通過NAT把內(nèi)部地址翻譯成合法的IP地址在Internet上使用,其具體的做法是把IP包內(nèi)的地址域用合法的IP地址來替換。
NAT功能通常被集成到路由器、防火墻、ISDN路由器或者單獨(dú)的NAT設(shè)備中。NAT設(shè)備維護(hù)一個(gè)狀態(tài)表,用來把非法的IP地址映射到合法的IP地址上去。每個(gè)包在NAT設(shè)備中都被翻譯成正確的IP地址,發(fā)往下一級,這意味著給處理器帶來了一定的負(fù)擔(dān)。但對于一般的網(wǎng)絡(luò)來說,這種負(fù)擔(dān)是微不足道的。
NAT有三種類型:靜態(tài)NAT、動態(tài)地址NAT、網(wǎng)絡(luò)地址端口轉(zhuǎn)換NAPT。其中靜態(tài)NAT設(shè)置起來最為簡單,內(nèi)部網(wǎng)絡(luò)中的每個(gè)主機(jī)都被永久映射成外部網(wǎng)絡(luò)中的某個(gè)合法的地址。而動態(tài)地址NAT則是在外部網(wǎng)絡(luò)中定義了一系列的合法地址,采用動態(tài)分配的方法映射到內(nèi)部網(wǎng)絡(luò)。NAPT則是把內(nèi)部地址映射到外部網(wǎng)絡(luò)的一個(gè)IP地址的不同端口上。根據(jù)不同的需要,三種NAT方案各有利弊。
動態(tài)地址NAT只是轉(zhuǎn)換IP地址,它為每一個(gè)內(nèi)部的IP地址分配一個(gè)臨時(shí)的外部IP地址,主要應(yīng)用于撥號,對于頻繁的遠(yuǎn)程聯(lián)接也可以采用動態(tài)NAT。當(dāng)遠(yuǎn)程用戶聯(lián)接上之后,動態(tài)地址NAT就會分配給他一個(gè)IP地址,用戶斷開時(shí),這個(gè)IP地址就會被釋放而留待以后使用。
網(wǎng)絡(luò)地址端口轉(zhuǎn)換NAPT(Network Address Port Translation)是人們比較熟悉的一種轉(zhuǎn)換方式。NAPT普遍應(yīng)用于接入設(shè)備中,它可以將中小型的網(wǎng)絡(luò)隱藏在一個(gè)合法的IP地址后面。NAPT與動態(tài)地址NAT不同,它將內(nèi)部連接映射到外部網(wǎng)絡(luò)中的一個(gè)單獨(dú)的IP地址上,同時(shí)在該地址上加上一個(gè)由NAT設(shè)備選定的TCP端口號。
在Internet中使用NAPT時(shí),所有不同的TCP和UDP信息流看起來好像來源于同一個(gè)IP地址。這個(gè)優(yōu)點(diǎn)在小型辦公室內(nèi)非常實(shí)用,通過從ISP處申請的一個(gè)IP地址,將多個(gè)連接通過NAPT接入Internet。實(shí)際上,許多SOHO遠(yuǎn)程訪問設(shè)備支持基于PPP的動態(tài)IP地址。這樣,ISP甚至不需要支持NAPT,就可以做到多個(gè)內(nèi)部IP地址共用一個(gè)外部IP地址上Internet,雖然這樣會導(dǎo)致信道的一定擁塞,但考慮到節(jié)省的ISP上網(wǎng)費(fèi)用和易管理的特點(diǎn),用NAPT還是很值得的。
IPsec的工作模式
IPsec是一個(gè)能在Internet上保證通道安全的開放標(biāo)準(zhǔn)。在不同的國度中,跨國企業(yè)面臨不同的密碼長度進(jìn)出口限制。IPSec能使網(wǎng)絡(luò)用戶和開發(fā)商采用各自不同的加密算法和關(guān)鍵字長,從而解決令跨國機(jī)構(gòu)頭痛的安全問題。
IPsec生成一個(gè)標(biāo)準(zhǔn)平臺,來開發(fā)安全網(wǎng)絡(luò)和兩臺機(jī)器之間的電子隧道。通過IPsec的安全隧道,在數(shù)據(jù)包可以傳送的網(wǎng)絡(luò)中生成像電路那樣的連接。IPsec在遠(yuǎn)地用戶之間和在本地網(wǎng)中生成這樣的隧道,它也把每個(gè)數(shù)據(jù)包包封在一個(gè)新的包中,該新包包含了建立、維持和不再需要時(shí)拆掉隧道所必需的信息。
經(jīng)常利用IPsec來確保數(shù)據(jù)網(wǎng)絡(luò)的安全。通過使用數(shù)字證明和自動認(rèn)證設(shè)備,來驗(yàn)證兩個(gè)來回發(fā)送信息的用戶身份。對需要在很多設(shè)備之間安全連接的大型網(wǎng)絡(luò)中確保數(shù)據(jù)安全,IPsec是一個(gè)理想的方法。
部署了IPsec的用戶能確保其網(wǎng)絡(luò)基礎(chǔ)設(shè)施的安全,而不會影響各臺計(jì)算機(jī)上的應(yīng)用程序。此套協(xié)議是用作對網(wǎng)絡(luò)基礎(chǔ)設(shè)施的純軟件升級。這既允許實(shí)現(xiàn)安全性,又沒有花什么錢對每臺計(jì)算機(jī)進(jìn)行改造。最重要的是,IPsec允許不同的網(wǎng)絡(luò)設(shè)備、PC機(jī)和其他計(jì)算系統(tǒng)之間實(shí)現(xiàn)互通。
IPsec有兩種模式—─傳輸模式和隧道模式。傳輸模式只對IP分組應(yīng)用IPsec協(xié)議,對IP報(bào)頭不進(jìn)行任何修改,它只能應(yīng)用于主機(jī)對主機(jī)的IPsec虛擬專用網(wǎng)VPN中。隧道模式中IPsec將原有的IP分組封裝成帶有新的IP報(bào)頭的IPsec分組,這樣原有的IP分組就被有效地隱藏起來了。隧道主要應(yīng)用于主機(jī)到網(wǎng)關(guān)的遠(yuǎn)程接入的情況。
IPsec協(xié)議中有兩點(diǎn)是我們所關(guān)心的:鑒定報(bào)頭AH(Authentication Header)和封裝安全載荷ESP(Encapsulation Security Payload)。
鑒定報(bào)頭AH可與很多各不相同的算法一起工作。AH應(yīng)用得很少,它要校驗(yàn)源地址和目的地址這些標(biāo)明發(fā)送設(shè)備的字段是否在路由過程中被改變過,如果校驗(yàn)沒通過,分組就會被拋棄。通過這種方式AH就為數(shù)據(jù)的完整性和原始性提供了鑒定。
封裝安全載荷(ESP)信頭提供集成功能和IP數(shù)據(jù)的可靠性。集成保證了數(shù)據(jù)沒有被惡意網(wǎng)客破壞,可靠性保證使用密碼技術(shù)的安全。對IPv4和IPv6,ESP信頭都列在其它IP信頭后面。注意兩種可選擇的IP信頭,段到段信頭在每個(gè)段被路由器等立即系統(tǒng)處理,而終端信頭只被接收端處理。ESP編碼只有在不被任何IP信頭擾亂的情況下才能正確發(fā)送包。ESP協(xié)議非常靈活,可以在兩種加密算法下工作。建立IPSec的兩個(gè)或者更多系統(tǒng)之間可以使用其他轉(zhuǎn)換方式。現(xiàn)在,可選擇算法包括Triple-DES、RC5、IDEA、CAST、BLOWFISH和RC4。
NAT和IPsec之間的“矛盾”
NAT和AH IPsec無法一起運(yùn)行,因?yàn)楦鶕?jù)定義,NAT會改變IP分組的IP地址,而IP分組的任何改變都會被AH標(biāo)識所破壞。當(dāng)兩個(gè)IPsec邊界點(diǎn)之間采用了NAPT功能但沒有設(shè)置IPsec流量處理的時(shí)候,IPsec和NAT同樣無法協(xié)同工作;另外,在傳輸模式下,ESP IPsec不能和NAPT一起工作,因?yàn)樵谶@種傳輸模式下,端口號受到ESP的保護(hù),端口號的任何改變都會被認(rèn)為是破壞。在隧道模式的ESP情況下,TCP/UDP報(bào)頭是不可見的,因此不能被用于進(jìn)行內(nèi)外地址的轉(zhuǎn)換,而此時(shí)靜態(tài)NAT和ESP IPsec可以一起工作,因?yàn)橹挥蠭P地址要進(jìn)行轉(zhuǎn)換,對高層協(xié)議沒有影響。
解決爭端 和平共處
為了解決ESP IPsec和NAPT共用的問題,設(shè)備生產(chǎn)商提出了多種解決方法。簡單的辦法是專門用一個(gè)工作站來運(yùn)行IKE,以處理所有的IPsec分組,但這樣只允許一個(gè)IPsec VPN通過NAPT。客戶端可以一開始通過端口號500傳送數(shù)據(jù)進(jìn)行協(xié)商,將所有進(jìn)入到NAPT設(shè)備的IPsec分組傳送到指定的主機(jī),同時(shí)使NAPT設(shè)備將所需的IPsec數(shù)據(jù)送回到客戶端。為了使NAPT正常工作,必須保證內(nèi)部網(wǎng)絡(luò)和外部網(wǎng)絡(luò)之間轉(zhuǎn)換的源端口號是惟一的。因此,我們可以使用IKE來進(jìn)行協(xié)商,IKE采用UDP的500端口,所以不需要任何的特殊處理。為了在兩個(gè)主機(jī)之間傳送IPsec流量,我們需要使用SPI。每個(gè)SA都有SPI,在VPN安裝過程中進(jìn)行IKE協(xié)商時(shí),它們互相交換SPI。NAPT設(shè)備將這一對SPI數(shù)字映射到NAT內(nèi)的相關(guān)的VPN終端。IPsec 客戶端選擇的SPI要映射到一個(gè)內(nèi)部IP地址,因?yàn)镹APT設(shè)備要通過它來確定將流入的流量傳送到哪里。
幾點(diǎn)值得注意:
1.這種解決爭端的方法只適用于位于NAPT設(shè)備之外的IPsec 客戶端來初始化IPsec VPN;
2.必須要設(shè)置IPsec網(wǎng)關(guān),用NAPT網(wǎng)關(guān)給出的某個(gè)IP地址進(jìn)行IKE協(xié)商。ESP用SPI、目的地址和協(xié)議號來查找IPsec分組所屬的SA,因?yàn)镮Psec網(wǎng)關(guān)只是通過NAPT地址來確定IPsec客戶端,它必須使用這個(gè)地址進(jìn)行協(xié)商;
3.許多IKE鑒定是通過IP地址相關(guān)的預(yù)先設(shè)定或者與密碼來進(jìn)行處理的,因此必須設(shè)置IPsec網(wǎng)關(guān)與NAPT IP地址之間的協(xié)商。