常見的VPN技術
- IPsec VPN: 多機房互聯(即一般在GW與GW之間建立隧道)
- L2TP/IPsec VPN: 支持多隧道,配置IPsec使用
- PPTP VPN: 只能兩端點間建立單一隧道,可選配合IPsec使用
- SSL VPN: 數據私密性、端點驗證、信息完整性,自協議:握手協議、記錄協議
SSL VPN
SSL VPN是無需安裝客戶端軟件,通過遠程建立的SSL隧道訪問內部服務器的代理技術,并對服務器內容提供基于用戶認證、遠程站點檢查的資源訪問控制。
SSL VPN現已成為遠程訪問VPN的新寵。除了具備與IPsec VPN相當的安全性外,認證功能更強,還增加了基于內容的訪問控制機制。客戶端只需要擁有支持SSL的瀏覽器即可
SSL VPN由于處在TCP層,所以可以進行豐富的業務控制,如行為審計,可以記錄每名用戶的所有操作,為更好地管理VPN提供了有效統計數據。
當使用者退出SSL VPN登陸頁面時,所有會話會全部釋放。
SSLVPN的技術分為以下四種
- Web代理(proxying)
- 應用轉換(Application translation)
- 端口轉發(port forwarding)
- 網絡擴展(network extension)
每種技術支持的應用與控制粒度會有所不同。
Web代理(proxying)
來自客戶端的發往SSL VPN Server得頁面請求在VPN Server內部替換,發往VPN后面的真正Web服務器,然后再將Web服務器的響應回傳給終端用戶.
WEB代理是最為簡單的應用,也是控制粒度最細的SSL VPN應用,可以精確地控制每個鏈接。
應用轉換(application translation)
有些通過html、JAVA程序,有些通過HTTPS頁面中的客戶端下載實現
- 對于非Web頁面的文件訪問,要借助于應用轉換。
- 在瀏覽器中用HTML或JAVA來實現模擬客戶端程序。通過SSL VPN的協議連接器,訪問指定資源。
- 應用:文件共享、telnet、ssh、遠程桌面、ftp。
端口轉發(port forwarding)
端口映射是粒度僅次于WEB代理的應用,它通過TCP端口映射的方式(原理上類似于NAT內部服務器應用),為使用者提供遠程接入TCP的服務,它需要專門的、與服務器配套的SSL VPN客戶端程序幫忙(在頁面中一般提供下載方式)或是通過HTML代碼實現。
- 端口轉發用于端口定義明確的應用(如FTP,SSH等)。
- 終端系統上運行一個非常小的Java或ActiveX程序作為端口轉發器,監聽某個端口上的連接。當數據包進入 這個端口時,它們通過SSL連接中的隧道被傳送到SSL VPN網關,SSL VPN網關解開封裝的數據包,將它們轉發給目的應用服務器。
- 使用端口轉發器,需要終端用戶指向他希望運行的本地應用程序(127.0.0.1),而不必指向真正的應用服務器。
網絡擴展(network extension)
網絡擴展是SSL VPN中粒度最粗的服務,但也是使用最廣泛的,它實現了類似于L2TP的特性,所有客戶端都可以從服務器獲得一個VPN地址,然后直接訪問內部服務器,它也需要專門的SSL VPN客戶端程序幫忙.
- 遠程端點可以具有完全的網絡連接,并動態獲取內部地址。
- 在用法上和IPsec等同。
- 需要插件和網絡驅動的支持。
- 優點:適應性好,所有的IP應用都可以。
- 缺點:控制的粒度太粗,跟IPsec非常相似。
L2TP/IPsec VPN
實際上是,終端與接入服務器之間先建立IPsec隧道,然后再進行L2TP協商(UDP端口1701)。依靠Internet協議安全性(IPsec)技術提供加密服務,在建立的IPsec加密通道上承載L2TP的控制和數據協商并傳輸通過L2TP封裝的用戶報文。 L2TP與IPsec的結合產物稱為L2TP/IPsec。VPN客戶端與VPN服務器都必須支持L2TP和IPsec。L2TP將隨同路由與遠程訪問服務一道自動進行安裝。
在IPsec數據包基礎上所進行的L2TP封裝由兩個層次組成:
- L2TP封裝:PPP幀(IP或IPX數據包)將通過L2TP報頭和UDP報頭進行封裝。
- IPsec封裝:上述封裝后所得到的L2TP報文將通過IPsec封裝安全性有效載荷(ESP)報頭、用以提供消息完整性與身份驗證的IPsec身份驗證報尾以及IP報頭再次進行封裝。IP報頭中將提供與VPN客戶端和VPN服務器相對應的源IP地址和目標IP地址。IPsec加密機制將通過由IPsec身份驗證過程所生成的加密密鑰對L2TP報文進行加密。
L2TP控制報文封裝格式:(UDP 1701)
# L2TP Control Message
若經過IPsec NAT穿越,則在外層IP與ESP Header之間再增加一個UDP頭(端口為4500)
L2TP數據報文封裝(UDP 1701):
# L2TP Data encapsulation
若經過IPsec NAT穿越,則在外層IP與ESP Header之間再增加一個UDP頭(端口為4500)
L2TP/IPsec Tunnel的不足之處:
- 使用windows終端(Win10/Win8等),進行L2TP/IPsec第一次撥號時,必須先添加如下注冊表項,否則無法順利接入
Windows Registry Editor Version 5.00
[HKEY_LOCAL_macHINESYSTEMCurrentControlSetServicesPolicyAgent]
"AssumeUDPEncapsulationContextOnSendRule"=dword:00000002
2. L2TP/IPsec接入時,無法自動下發路由信息,終端用戶必須手動添加路由才能訪問Server提供的子網訪問路勁
3. L2TP/IPsec配置復雜,且性能很低下,大多不會采用這個隧道方式
PPTP VPN
PPTP(Point to Point Tunneling Protocol),即點對點隧道協議。該協議是在PPP協議的基礎上開發的一種新的增強型安全協議,支持多協議虛擬專用網,可以通過密碼驗證協議,可擴展認證協議等方法增強安全性。遠程用戶可以通過ISP、直接連接Internet或者其他網絡安全地訪問企業網;
PPTP實現需要完成2個動作:協商PPTP/GRE隧道和協商建立PPTP虛擬鏈路,PPTP和FTP類似,是一種多通道協議,具體而言,即PPTP存在控制通道和數據通道。控制通道建立在PPTP客戶端和服務器之間,PPTP客戶機使用動態分配的TCP端口號,而PPTP則使用保留TCP端口號1723。控制通道用于PPTP隧道的協商和維護。PPTP控制通道協商數據包包括一個IP包頭,一個TCP報頭和PPTP控制消息:
PPTP控制報文格式:
# PPTP Control message
PPTP數據報文封裝:
# PPTP data encapsulation
由MS-CHAP、MS-CHAP v2或EAP-TLS身份驗證過程所生成的加密密鑰對PPP幀進行加密
PPTP控制連接的建立流程分析
PPTP控制連接建立過程可以分為以下幾步:
- 建立TCP連接
- PPTP控制連接和GRE隧道建立
3. PPP協議的LCP協商
4. PPP協議的身份驗證
5. PPP協議的NCP協商
NCP協議是PPP協議的網絡控制協議,主要用來協商雙方網絡層接口參數,配置虛擬端口,分配IP,DNS等信息。圖中的IPCP是NCP基于TCP/IP的接口協商協議。Server和Client都要把自己的Miniport信息發送給對方
6. PPP協議的CCP協商
CCP協議協商PPP通訊中數據加密的協議
L2TP和PPTP區別:
- L2TP:公有協議、UDP1701、支持隧道驗證,支持多個協議,多個隧道,壓縮字節
- PPTP:私有協議、TCP1723、不支持隧道驗證,只支持IP、只支持點到點
PPTP只能在兩端間建立單一隧道,L2TP支持在兩端點間使用多隧道,這樣可以針對不同的用戶創建不同的服務質量
L2TP可以提供隧道驗證機制,而PPTP不能提供這樣的機制,但當L2TP或PPTP與IPsec共同使用時,可以由IPsec提供隧道驗證,不需要在第二層協議上提供隧道驗證機制
PPTP要求互聯網絡為IP網絡,而L2TP只要求隧道媒介提供面向數據包的點對點連接,L2TP可以在IP(使用UDP),FR,ATM,x.25網絡上使用
L2TP可以提供包頭壓縮。當壓縮包頭時,系統開銷(overhead)占用4個字節,而PPTP協議下要占用6個字節
IPsec VPN
IPsec協議的設計目標:是在IPV4和IPV6環境中為網絡層流量提供靈活的安全服務。
IPsec VPN:是基于IPsec協議族構建的在IP層實現的安全虛擬專用網。通過在數據包中插入一個預定義頭部的方式,來保障OSI上層協議數據的安全,主要用于保護TCP、UDP、ICMP和隧道的IP數據包。