VPN 基本概念

一、VPN概述

虛擬專用網絡(Virtual Private Network,VPN)在VPN客戶機與VPN網關之間創建一個加密的、虛擬的點對點連接,保障數據在經過互聯網時的安全。

例如,公司人員出差到外地或在家中,需要訪問公司企業網資源。如果直接撥入的話,未加密的數據包很容易被人監聽或攔截。

因此,企業內部信息資源也開始廣泛使用互聯網絡協議時,VPN也就越來越重要了。

對於構建VPN來說,網絡隧道(Tunnelling)技術是個關鍵技術。網絡隧道技術指的是利用一種網絡協議來傳輸另一種網絡協議,它主要利用網絡隧道協議來實現這種功能。

目前,常用的有三種網絡隧道協議,一種是二層隧道協議,用於傳輸二層網絡協議,它主要應用於構建遠程訪問虛擬專網(Access VPN);

三層隧道協議則用於傳輸三層網絡協議,它主要應用於構建企業內部虛擬專網(Intranet VPN)和擴展的企業內部虛擬專網(Extranet VPN)。

第2層隧道協議對應數據鏈路層,使用幀作為數據交換單位。PPTP、L2TP和L2F(第2層轉發)都屬於第2層隧道協議,都是將數據封裝在點對點協議(PPP)幀中通過互聯網絡發送。

第3層隧道協議對應於網絡層,使用包作為數據交換單位。IP over IP以及IPSEC隧道模式都屬於第3層隧道協議,都是將IP包封裝在附加的IP包頭中通過IP網絡傳送。

為創建隧道,隧道的客戶機和服務器雙方必須使用相同的隧道協議。此外,建立在 TCP/UDP 之上的網絡隧道技術近幾年來也有了較快的發展,通過採用 TCP/UDP 協議,避免了網絡運營商的過濾,使得真正能夠通過公網來建立加密隧道。

這方面比較常見的如OpenVPN隧道以及最近出現的構建於https之上的Softether隧道技術等。

點對點隧道協議(PPTP)允許對IP、IPX或NetBEUI數據流進行加密,然後封裝在IP包頭中通過企業IP網絡或公共互聯網絡發送。

第2層隧道協議(L2TP)協議允許對IP、IPX或NetBEUI數據流進行加密,然後通過支持點對點數據報傳遞的任意網絡發送,如IP、X.25、幀中繼或ATM。

對於像PPTP和L2TP這樣的第2層隧道協議,創建隧道的過程類似於在雙方之間建立會話;隧道的兩個端點必須同意創建隧道並協商隧道各種配置變量,如地址分配、加密或壓縮等參數。

絕大多數情況下,通過隧道傳輸的數據都使用基於數據報的協議發送。隧道維護協議被用來作為管理隧道的機制。

安全IP(IPSEC)隧道模式即IPSEC隧道模式允許對IP負載數據進行加密,然後封裝在IP包頭中通過企業IP網絡或公共IP互聯網絡如Internet發送。

第3層隧道技術通常假定所有配置問題已經通過手工過程完成,這些協議不對隧道進行維護。

這與第2層隧道協議不同,第2層隧道協議(PPTP和L2TP)必須包括對隧道的創建,維護和終止。為實現在專用或公共IP網絡上的安全傳輸,IPSEC隧道模式使用的安全方式封裝和加密整個IP包。

然後對加密的負載再次封裝在明文 IP包頭內通過網絡發送到隧道服務器端。隧道服務器對收到的數據報進行處理,在去除明文IP包頭,對內容進行解密之後,獲得最初的負載IP包。

負載IP包在經過正常處理之後被路由到位於目標網絡的目的地。

IPSEC隧道模式具有以下功能和侷限:(1)只能支持 IP 數據流;(2)工作在 IP 棧(IPstack)的底層,因此,應用程序和高層協議可以繼承IPSEC的行為;

(3)由一個安全策略(一整套過濾機制)進行控制。

安全策略按照優先級的先後順序創建可供使用的加密和隧道機制以及驗證方式。當需要建立通信時,雙方機器執行相互驗證,然後協商使用何種加密方式。

此後的所有數據流都將使用雙方協商的加密機制進行加密,然後封裝在隧道包頭內。

隧道一旦建立,數據就可以通過隧道發送。隧道客戶端和服務器使用隧道數據傳輸協議準備傳輸數據。

例如,當隧道客戶端向服務器端發送數據時,客戶端首先給負載數據加上一個隧道數據傳送協議包頭,然後把封裝的數據通過互聯網絡發送,並由互聯網絡將數據路由到隧道的服務器端。

隧道服務器端收到數據包之後,去除隧道數據傳輸協議包頭,然後將負載數據轉發到目標網絡。

(1)自願隧道(Voluntary Tunnel)。用戶或客戶端計算機可以通過發送VPN請求配置和創建一條自願隧道。此時,用戶端計算機作為隧道客戶方成為隧道的一個端點。

當一臺工作站或路由器使用隧道客戶軟件創建到目標隧道服務器的虛擬連接時建立自願隧道。為實現這一目的,客戶端計算機必須安裝適當的隧道協議。自願隧道需要有一條IP連接(通過局域網或撥號線路)。

使用撥號方式時,客戶端必須在建立隧道之前創建與公共互聯網絡的撥號連接。一個最典型的例子是Internet撥號用戶必須在創建Internet隧道之前撥通本地ISP取得與Internet的連接。

對企業內部網絡來說,客戶機已經具有同企業網絡的連接,由企業網絡為封裝負載數據提供到目標隧道服務器路由。

自願隧道技術為每個客戶創建獨立的隧道。FEP和隧道服務器之間建立的隧道可以被多個撥號客戶共享,而不必為每個客戶建立一條新的隧道。

因此,一條隧道中可能會傳遞多個客戶的數據信息,只有在最後一個隧道用戶斷開連接之後才終止整條隧道。

(2)強制隧道(Compulsory Tunnel)。由支持VPN的撥號接入服務器配置和創建一條強制隧道。

此時,用戶端的計算機不作為隧道端點,而是由位於客戶計算機和隧道服務器之間的遠程接入服務器作為隧道客戶端,成為隧道的一個端點。

目前,一些商家提供能夠代替撥號客戶創建隧道的撥號接入服務器。

這些能夠為客戶端計算機提供隧道的計算機或網絡設備包括支持PPTP協議的前端處理器(FEP)、支持L2TP協議的L2TP接入集線器(LAC)或支持IPSEC的安全IP網關。

本文將主要以FEP為例進行說明。為正常地發揮功能,FEP必須安裝適當的隧道協議,同時必須能夠當客戶計算機建立起連接時創建隧道。以 Internet 為例,客戶機向位於本地ISP的能夠提供隧道技術的NAS發出撥號呼叫。

例如,企業可以與某個ISP簽定協議,由ISP為企業在全國範圍內設置一套FEP。這些FEP可以通過Internet創建一條到隧道服務器的隧道,隧道服務器與企業的專用網絡相連。

這樣,就可以將不同地方合併成企業網絡端的一條單一的Internet連接。因為客戶只能使用由FEP創建的隧道,所以稱為強制隧道。一旦最初的連接成功,所有客戶端的數據流將自動地通過隧道發送。

使用強制隧道,客戶端計算機建立單一的 PPP連接,當客戶撥入 NAS時,一條隧道將被創建,所有的數據流自動通過該隧道路由。

可以配置FEP為所有的撥號客戶創建到指定隧道服務器的隧道,也可以配置FEP基於不同的用戶名或目的地創建不同的隧道。

二、點對點協議(PPP)

因為第2層隧道協議在很大程度上依靠PPP協議的各種特性,因此有必要對PPP協議進行深入的探討。

PPP協議主要是設計用來通過撥號或專線方式建立點對點連接發送數據。PPP協議將IP、IPX和NETBEUI包封裝在PPP幀內通過點對點的鏈路發送。

PPP協議主要應用於連接撥號用戶和NAS。PPP撥號會話過程可以分成4個不同的階段。分別如下:

階段1:創建PPP鏈路。PPP使用鏈路控制協議(LCP)創建,維護或終止一次物理連接。在LCP階段的初期,將對基本的通信方式進行選擇。

應當注意在鏈路創建階段,只是對驗證協議進行選擇,用戶驗證將在第2階段實現。同樣,在LCP階段還將確定鏈路對等雙方是否要對使用數據壓縮或加密進行協商。實際對數據壓縮/加密算法和其他細節的選擇將在第4階段實現。

階段2:用戶驗證。在第2階段,客戶端PC將用戶的身份證明發給遠端的接入服務器。該階段使用一種安全驗證方式避免第三方竊取數據或冒充遠程客戶接管與客戶端的連接。

大多數的 PPP 方案只提供了有限的驗證方式,包括口令驗證協議(PAP)、挑戰握手驗證協議(CHAP)和微軟挑戰握手驗證協議(MSCHAP)。

(1)口令驗證協議(PAP)。PAP是一種簡單的明文驗證方式。NAS要求用戶提供用戶名和口令,PAP以明文方式返回用戶信息。

很明顯,這種驗證方式的安全性較差,第三方可以很容易地獲取被傳送的用戶名和口令,並利用這些信息與NAS建立連接獲取NAS提供的所有資源。

所以,一旦用戶密碼被第三方竊取,PAP無法提供避免受到第三方攻擊的保障措施。

(2)挑戰—握手驗證協議(CHAP)。CHAP是一種加密的驗證方式,能夠避免建立連接時傳送用戶的真實密碼。

NAS向遠程用戶發送一個挑戰口令,其中包括會話ID和一個任意生成的挑戰字串。

遠程客戶必須使用 MD5 單向哈西算法返回用戶名和加密的挑戰口令,會話ID以及用戶口令,其中用戶名以非哈西方式發送。

CHAP對PAP進行了改進,不再直接通過鏈路發送明文口令,而是使用挑戰口令以哈西算法對口令進行加密。

因為服務器端存有客戶的明文口令,所以服務器可以重複客戶端進行的操作,並將結果與用戶返回的口令進行對照。

CHAP為每一次驗證任意生成一個挑戰字串來防止受到重放攻擊。在整個連接過程中,CHAP將不定時地向客戶端重複發送挑戰口令,從而避免第3方冒充遠程客戶進行攻擊。

(3)微軟挑戰—握手驗證協議(MS-CHAP)。與CHAP相類似,MS-CHAP也是一種加密驗證機制。

同 CHAP一樣,使用MS-CHAP時,NAS會向遠程客戶發送一個含有會話ID和任意生成的挑戰字串的挑戰口令。

遠程客戶必須返回用戶名以及經過 MD4 哈西算法加密的挑戰字串,會話ID和用戶口令的MD4哈西值。

採用這種方式服務器端將只存儲經過哈西算法加密的用戶口令而不是明文口令,這樣就能夠提供進一步的安全保障。

此外,MS-CHAP同樣支持附加的錯誤編碼,包括口令過期編碼以及允許用戶自己修改口令的加密的客戶-服務器附加信息。

使用MS-CHAP,客戶端和NAS雙方各自生成一個用於隨後數據加密的起始密鑰。

MS-CHAP使用基於MPPE 的數據加密,這一點非常重要,可以解釋為什麼啟用基於MPPE的數據加密時必須進行MS-CHAP驗證。

EAP是由IETF提出的PPP協議的擴展,允許連接使用任意方式對一條PPP連接的有效性進行驗證。EAP支持在一條連接的客戶和服務器兩端動態加入驗證插件模塊。

交易層安全協議(EAP-TLS)已經作為提議草案提交給IETF,用於建立基於公用密鑰證書的強大的驗證方式。

使用EAP-TLS,客戶向撥入服務器發送一份用戶方證書,同時,服務器把服務器證書發送給客戶。用戶證書向服務器提供了強大的用戶識別信息;服務器證書保證用戶已經連接到預期的服務器。

用戶方證書可以被存放在撥號客戶 PC 中,或存放在外部智能卡中。無論哪種方式,如果用戶不能提供沒有一定形式的用戶識別信息(PIN 號或用戶名和口令),就無法訪問證書。

在第2階段PPP鏈路配置階段,NAS收集驗證數據然後對照自己的數據庫或中央驗證數據庫服務器(位於NT主域控制器或遠程驗證用戶撥入服務器)驗證數據的有效性。

階段3:PPP回叫控制。微軟設計的PPP包括一個可選的回叫控制階段。該階段在完成驗證之後使用回叫控制協議(CBCP)如果配置使用回叫,那麼在驗證之後遠程客戶和 NAS之間的連接將會被斷開。

然後由NAS使用特定的電話號碼回叫遠程客戶。這樣可以進一步保證撥號網絡的安全性。NAS只支持對位於特定電話號碼處的遠程客戶進行回叫。

階段4:調用網絡層協議。在以上各階段完成之後,PPP將調用在鏈路創建階段(階段1)選定的各種網絡控制協議(NCP)。

例如,在該階段IP控制協議(IPCP)可以向撥入用戶分配動態地址。在微軟的PPP方案中,考慮到數據壓縮和數據加密實現過程相同,所以共同使用壓縮控制協議協商數據壓縮(使用MPPC)和數據加密(使用MPPE)。

一旦完成上述4階段的協商,PPP就開始在連接對等雙方之間轉發數據。每個被傳送的數據報都被封裝在PPP包頭內,該包頭將會在到達接收方之後被去除。

如果在階段1選擇使用數據壓縮並且在階段4完成了協商,數據將會在被傳送之前進行壓縮。

類似的,如果如果已經選擇使用數據加密並完成了協商,數據(或被壓縮數據)將會在傳送之前進行加密。

三、常見的隧道協議

1、點對點隧道協議(PPTP)

PPTP是一個第2層的協議,將PPP數據幀封裝在IP數據報內通過IP網絡,如Internet傳送。PPTP還可用於專用局域網絡之間的連接。

RFC草案“點對點隧道協議”對PPTP協議進行了說明和介紹。該草案由 PPTP論壇的成員公司,包括微軟、Ascend、3Com和ECI 等公司在1996年6月提交至IETF。

PPTP使用一個TCP連接對隧道進行維護,使用通用路由封裝(GRE)技術把數據封裝成PPP數據幀通過隧道傳送。可以對封裝PPP幀中的負載數據進行加密或壓縮。

2、第2層轉發(L2F)

L2F是Cisco公司提出隧道技術,作為一種傳輸協議L2F支持撥號接入服務器,將撥號數據流封裝在PPP幀內通過廣域網鏈路傳送到 L2F服務器(路由器)。

L2F服務器把數據包解包之重新注入(Inject)網絡。與PPTP和L2TP不同,L2F沒有確定的客戶方。應當注意L2F只在強制隧道中有效。

3、第2層隧道協議(L2TP)

L2TP結合了PPTP和L2F協議。設計者希望L2TP能夠綜合PPTP和L2F的優勢。L2TP是一種網絡層協議,支持封裝的PPP幀在IP、X.25、幀中繼或ATM等的網絡上進行傳送。

當使用IP作為L2TP的數據報傳輸協議時,可以使用 L2TP作為Internet上的隧道協議。L2TP還可以直接在各種 WAN媒介上使用而不需要使用IP傳輸層。

RFC“第2層隧道協議”對 L2TP 進行了說明和介紹。該文檔於 1998年1月被提交至 IETF。

IP網上的L2TP使用UDP和一系列的L2TP消息對隧道進行維護。L2TP同樣使用UDP將L2TP協議封裝的PPP幀通過隧道發送。

可以對封裝在PPP幀中的負載數據進行加密或壓縮。

PPTP 和 L2TP 都使用 PPP 協議對數據進行封裝,然後添加附加包頭用於數據在互聯網絡上的傳輸。儘管兩個協議非常相似,但是仍存在以下幾方面的不同:

PPTP要求互聯網絡為IP網絡。L2TP只要求隧道媒介提供面向數據包的點對點的連接。L2TP可以在IP(使用UDP)、幀中繼永久虛擬電路(PVC)、X.25虛擬電路(VC)或ATM VC網絡上使用。

PPTP只能在兩端點間建立單一隧道。L2TP支持在兩端點間使用多隧道。使用L2TP,用戶可以針對不同的服務質量創建不同的隧道。

L2TP可以提供包頭壓縮。當壓縮包頭時,系統開銷(overhead)佔用4字節,而PPTP協議下要佔用6字節。

L2TP可以提供隧道驗證,而PPTP則不支持隧道驗證。但是當L2TP或PPTP與IPSEC共同使用時,可以由IPSEC提供隧道驗證,不需要在第2層協議上驗證隧道。

因為第2層隧道協議(PPTP和L2TP)以完善的PPP協議為基礎,因此繼承了一整套的特性。

用戶驗證。

令牌卡(Token Card)支持。通過使用擴展驗證協議(EAP),第2層隧道協議能夠支持多種驗證方法,包括一次性口令(One-Time Password)、加密計算器(Cryptographic Calculator)和智能卡等。

動態地址分配。第2層隧道協議支持在網絡控制協議(NCP)協商機制的基礎上動態分配客戶地址。

第 3 層隧道協議通常假定隧道建立之前已經進行了地址分配。目前IPSEC隧道模式下的地址分配方案仍在開發之中。

數據壓縮。第 2層隧道協議支持基於 PPP的數據壓縮方式。例如,微軟的 PPTP和L2TP方案使用微軟點對點加密協議(MPPE)。

IETP正在開發應用於第3層隧道協議的類似數據壓縮機制。

數據加密。第2層隧道協議支持基於PPP的數據加密機制。微軟的PPTP方案支持在RSA/RC4算法的基礎上選擇使用MPPE。

密鑰管理。作為第2層協議的MPPE依靠驗證用戶時生成的密鑰,定期對其更新。

多協議支持。第2層隧道協議支持多種負載數據協議,從而使隧道客戶能夠訪問使用IP、IPX,或NetBEUI等多種協議企業網絡。


分享到:


相關文章: