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