SSL VPN作為遠程接入型的VPN,已經(jīng)具備非常廣闊的前景,它的主要適應(yīng)場景是取代L2TP Over IPSec,但功能要比L2TP Over IPSec更豐富,方案也更加靈活。
一、SSL VPN簡介
何謂SSL VPN,首先要從SSL談起,使用網(wǎng)絡(luò)不能不提的是各個網(wǎng)站,瀏覽網(wǎng)站使用瀏覽器,網(wǎng)絡(luò)上傳送網(wǎng)頁的協(xié)議叫HTTP,它是明文傳播的,傳播內(nèi)容可以被黑客讀取。
而SSL全名叫Secure Session Layer(安全會話層),其最初目的是給HTTP加密使用的安全套件,使用SSL的HTTP,也就搖身一變成了HTTPS,端口也從HTTP的80變成了443。
由于HTTPS具備安全性,也具備傳輸數(shù)據(jù)的能力,也就被研究VPN技術(shù)的專家盯上了,覺得HTTPS可以用于組建VPN方案,SSL VPN技術(shù)呼之欲出了。
經(jīng)過多年的發(fā)展,SSL版本發(fā)展到了3.0,也被標(biāo)準組織采納為TLS(Transport Layer Security傳輸層安全)1.0之中,所以SSL VPN也叫TLS VPN。下面是SSL 與SSL VPN、TLS的區(qū)別:
1. SSL:單純的實現(xiàn)對某些TCP應(yīng)用的保護,如HTTPS和SFTP;
2. SSL VPN:利用TCP的傳輸作用以及SSL對TCP會話的保護,實現(xiàn)VPN業(yè)務(wù),被保護的VPN業(yè)務(wù)可以是TCP的、也可以UDP,純IP的應(yīng)用;
3. TLS:在SSL上進行擴展,能夠直接實現(xiàn)對UDP應(yīng)用的保護,這也是傳輸層安全的最佳注釋。
接下來看看SSL VPN的使用場景吧:
L2TP實現(xiàn)的是遠程接入VPN,而IPSec為L2TP提供安全保護,這種應(yīng)用已經(jīng)非常成熟,但屬于兩個協(xié)議的生硬組合,在方案上不是特別靈活。
而SSL VPN是天然的安全遠程接入,在方案上,特別是權(quán)限控制、應(yīng)用粒度上有獨到之處,成為目前遠程接入領(lǐng)域的香餑餑,目前已經(jīng)超越了技術(shù)范疇,而成為一個安全網(wǎng)絡(luò)服務(wù)框架。
SSL VPN最常見的入口還是網(wǎng)頁,所以推廣起來特別方便:
1. 使用者只需要記住VPN的網(wǎng)站(通常是HTTPS),用瀏覽器打開該網(wǎng)站;
2. 輸入使用者的身份信息,身份信息可以是用戶名、數(shù)字證書(如USB-Key)、靜態(tài)口令、動態(tài)口令的至尊組合,確保身份不泄露、不假冒;
3. 選擇服務(wù)種類,其中WEB代理是最為簡單的應(yīng)用,也是控制粒度最細的SSL VPN應(yīng)用,可以精確地控制每個鏈接;
4. 端口映射是粒度僅次于WEB代理的應(yīng)用,它通過TCP端口映射的方式(原理上類似于NAT內(nèi)部服務(wù)器應(yīng)用),為使用者提供遠程接入TCP的服務(wù),它需要專門的、與服務(wù)器配套的SSL VPN客戶端程序幫忙;
5. IP連接是SSL VPN中粒度最粗的服務(wù),但也是使用最廣泛的,它實現(xiàn)了類似于L2TP的特性,所有客戶端都可以從服務(wù)器獲得一個VPN地址,然后直接訪問內(nèi)部服務(wù)器,它也需要專門的SSL VPN客戶端程序幫忙;
6. SSL VPN由于處在TCP層,所以可以進行豐富的業(yè)務(wù)控制,如行為審計,可以記錄每名用戶的所有操作,為更好地管理VPN提供了有效統(tǒng)計數(shù)據(jù);
7. 當(dāng)使用者退出SSL VPN登陸頁面時,所有上述安全會話會統(tǒng)統(tǒng)釋放。
以上7個步驟可以劃分為三個階段:階段一是連接與驗證、階段二是VPN應(yīng)用、階段三是審計與退出。
由于連接與驗證、審計與退出都是統(tǒng)一流程,也比較簡單,本期針對大家較為關(guān)注的階段二,VPN應(yīng)用部分進行展開介紹。
二、WEB代理
由于SSL是封裝在TCP上的,穿越NAT不是問題,所以在示例中客戶端使用公網(wǎng)地址進行介紹:
1. 假設(shè)SSL VPN的WEB站點的互聯(lián)網(wǎng)域名是https://sslvpn,該WEB站點對應(yīng)的主機則是SSL VPN服務(wù)器;
2. 使用者登陸SSL VPN的WEB頁面后,WEB代理一欄會有許多鏈接,如內(nèi)部財務(wù)報表、訂單提交等內(nèi)部網(wǎng)站;
3. 假設(shè)“訂單提交”網(wǎng)站在單位內(nèi)部私有URL是http://site1/page,那么在SSL VPN服務(wù)器上的訂單提交鏈接URL則會進行相應(yīng)的修改,變成https://sslvpn/httpsite1/pate,相當(dāng)于SSL VPN站點的內(nèi)部鏈接;
4. 使用者點擊“訂單提交”鏈接后,會新建一個瀏覽器窗口,打開鏈接https://sslvpn/httpsite1/page,也就是說對于使用者而言,訂單提交像是SSL VPN站點的一個鏈接,而非另外一個站點,所有的訪問都終結(jié)在SSL VPN站點;
5. SSL VPN站點的所有者SSL VPN服務(wù)器在接收到使用者對https://sslvpn/httpsite1/page的頁面請求后,SSL VPN服務(wù)器會做WEB代理的工作,即以內(nèi)部地址10.1.1.1向真正的“訂單提交”站點10.6.16.3訪問頁面http://site1/page;
6. 可以發(fā)現(xiàn)整個頁面訪問是由使用者與服務(wù)器之間的HTTPS會話、服務(wù)器與“訂單提交”站點的HTTP會話連接而成的,服務(wù)器在這個訪問中起的是WEB代理作用,因為在“訂單提交”站點看來,訪問者IP是服務(wù)器,而不是最終用戶IP;
7. 而使用者訪問另外一個站點“財務(wù)報表”,也是類似過程。
WEB代理因為原理簡單,實現(xiàn)起來較為容易,因為傳統(tǒng)的WEB Proxy代理是兩段HTTP會話的銜接,而SSL VPN的WEB代理則把用戶與服務(wù)器的連接把HTTP換成了HTTPS、并對網(wǎng)站的URL進行了替換而已,從圖中我們可以看到紅色部分即為URL的替換。
從這張封裝原理圖,我們可以比較清楚地看到HTTPS與HTTP會話在這個訪問過程中的銜接??赡苡腥藭?,讓“訂單提交”站點直接在互聯(lián)網(wǎng)提供HTTPS服務(wù),直接用一個HTTPS會話不是更好,原理上當(dāng)然更好,但是有更多的現(xiàn)實問題:
1. 直接在互聯(lián)網(wǎng)提供HTTPS服務(wù),需要一個互聯(lián)網(wǎng)地址和公共域名,這兩樣都是要花錢申請的,使用SSL VPN統(tǒng)一接入,這么多內(nèi)部站點只需要一個公網(wǎng)地址、一個公網(wǎng)域名,多劃算;
2. 訂單提交真的需要開放到互聯(lián)網(wǎng)嗎?訂單提交都是公司內(nèi)部業(yè)務(wù),訪問量也不大,直接開放到互聯(lián)網(wǎng)并不能有更多的提速效果;
3. 開放到互聯(lián)網(wǎng)怎么保證安全,財務(wù)報表等信息都是公司機密,老老實實放在內(nèi)網(wǎng),前面通過SSL VPN服務(wù)器擋著,即使有攻擊也只是攻擊SSL VPN服務(wù)器,內(nèi)網(wǎng)服務(wù)器還是很安全的。
綜上所述對于一些內(nèi)部站點,使用SSL VPN還是相當(dāng)有好處的,特別是在擁有一款強大的SSL VPN服務(wù)器的時候。
三、端口映射
剛才講的是WEB代理,對于一些內(nèi)部服務(wù)器并不是WEB站點,那WEB代理還能使用嗎?不能使用了,比如內(nèi)部站點是FTP應(yīng)用,那么訪問不可能由HTTPS會話和FTP會話銜接而成,SSL VPN必須想其余辦法。
由于SSL只能封裝在TCP之上,所以端口映射服務(wù)器只能針對內(nèi)部的TCP應(yīng)用,如FTP。
在端口映射中,SSL VPN的使用者會從SSL VPN頁面自動加載一個客戶端程序,我們姑且就叫它SSL VPN客戶端程序吧,它是怎么使端口映射工作的呢,我們假設(shè)內(nèi)部有兩個FTP服務(wù)器,一個叫FTP1,內(nèi)部地址10.6.16.1,另一個是FTP2,內(nèi)部地址10.6.16.4,都是監(jiān)聽TCP 21端口:
1. SSL VPN服務(wù)器為這兩個內(nèi)部服務(wù)器做了端口映射,TCP 2021端口映射到FTP1的TCP 21,3021則映射到FTP2;
2. SSL VPN服務(wù)器會讓使用者PC自動加載SSL VPN客戶端程序,并根據(jù)這兩個映射生成兩個靜態(tài)host映射表項,告訴使用者PC訪問FTP1其實就是訪問127.0.0.2,訪問FTP2就是訪問127.0.0.3,127.0.0.0/8稱為環(huán)回地址,及該地址只能在PC內(nèi)部使用,不可能被發(fā)出到PC之外,那么SSL VPN客戶端程序就監(jiān)聽這兩個內(nèi)部地址;
3. 使用者訪問FTP1,其實訪問的是TCP 127.0.0.2:21,所有數(shù)據(jù)都會被SSL VPN客戶端程序監(jiān)聽,客戶端程序會進行代理,變成訪問服務(wù)器TCP 6.16.5.6:2021,該TCP訪問會使用SSL進行加密;
4. 大家可能會問,為何需要個客戶端程序進行代理呢,使用者的應(yīng)用程序不能直接和SSL VPN服務(wù)器建立SSL會話嗎?這個問題很好,使用者的應(yīng)用程序的確無法直接建立SSL會話,所以使用客戶端程序代勞,這種方式可以讓所有TCP應(yīng)用都能夠享用SSL VPN服務(wù);
5. 服務(wù)器接收到SSL加密的請求后,首先會進行解密,然后根據(jù)端口映射,會向內(nèi)部FTP1站點TCP 10.6.16.1:21發(fā)起訪問;
6. 反向轉(zhuǎn)發(fā)以及訪問FTP2類似。
我們可以發(fā)現(xiàn)這種端口映射使整個訪問過程由三段會話組成:使用者應(yīng)用程序與SSL VPN客戶端程序的普通TCP會話、SSL VPN客戶端程序與服務(wù)器的SSL會話、服務(wù)器與內(nèi)部站點的普通TCP會話。
從這張圖可以看出更詳細的數(shù)據(jù)封裝過程以及會話銜接過程,使用SSL VPN服務(wù)器進行端口映射的好處與WEB代理類似,可以犧牲SSL VPN服務(wù)器,保護內(nèi)部服務(wù)器。
四、IP連接
前面介紹的WEB代理是專門針對WEB應(yīng)用的,端口映射則受制于SSL只支持TCP應(yīng)用,如果使用者要任意訪問一個內(nèi)部服務(wù)器的任意協(xié)議、端口,該如何是好呢?IP連接應(yīng)運而生,IP連接可以完美地替代L2TP這種傳統(tǒng)意義上的VPN:虛擬連接、內(nèi)部地址、路由互聯(lián)。
我們從上圖來解釋一下IP連接的原理:
1. 用戶登陸SSL VPN頁面后,會建立HTTPS會話,服務(wù)器通過這個會話給用戶自動加載SSL VPN客戶端程序;
2. 此時的SSL VPN客戶端程序的目的是給用戶PC創(chuàng)建一個虛擬網(wǎng)卡,以實現(xiàn)類似于L2TP那種到客戶總部網(wǎng)絡(luò)的VPN連接;
3. 虛擬網(wǎng)卡創(chuàng)建好后,服務(wù)器會給該用戶從地址池中取一個地址分配給該用戶,同時下發(fā)路由、DNS等信息,服務(wù)器針對該地址池也會有一個服務(wù)器地址192.168.1.1,作為所有客戶端程序虛擬網(wǎng)卡的網(wǎng)關(guān);
4. 此時SSL VPN客戶端程序與服務(wù)器之間會建立一個全新的SSL會話,專門用來傳輸虛擬網(wǎng)卡與服務(wù)器之間的流量;
5. 假設(shè)用戶要訪問DNS 10.6.16.1,根據(jù)路由的關(guān)系,PC會通過虛擬網(wǎng)卡將DNS請求(源192.168.1.2目的10.6.16.1)轉(zhuǎn)發(fā)給SSL VPN服務(wù)器192.168.1.1;
6. PC上的SSL VPN客戶端程序會將虛擬網(wǎng)卡發(fā)出的IP包封裝至新的SSL會話中,通過互聯(lián)網(wǎng)傳送到服務(wù)器;
7. 服務(wù)器進行解密,解封裝后發(fā)現(xiàn)IP目的地址是10.6.16.1,那么就轉(zhuǎn)發(fā)給DNS;
8. 反向過程以及訪問ERP服務(wù)器10.6.16.4與此類似。
再來看一下數(shù)據(jù)封裝過程,會有更加直觀的認識:
在SSL VPN的IP連接中,客戶端訪問內(nèi)部服務(wù)器不再像WEB代理、端口映射那應(yīng)該多個會話銜接而成,而是一個內(nèi)部地址端到端會話,穿越互聯(lián)網(wǎng)的時候直接會話被封裝至SSL會話中,和L2TP Over IPSec非常類似。
五、SSL VPN總結(jié)
為什么說SSL VPN可以通過多粒度的服務(wù)呢?這是一個對比:
1. WEB代理,可以精確到對HTTP站點某些URL的控制;
2. 端口映射,可以精確到對某個端口的控制;
3. IP連接,可以精確到對某個IP地址的控制;
L2TP只能實現(xiàn)3,無法實現(xiàn)1和2,更是很難實現(xiàn)行為審計功能。因此業(yè)界非??春肧SL VPN的前景,但使用SSL VPN必然也有一些局限性和代價:
1. 對于站點到站點的應(yīng)用,效率上不如IPSec,所以通常用來取代L2TP方案,而不是IPSec方案;
2. SSL VPN的IP連接服務(wù),在有連接的TCP中封裝無連接的IP、UDP上效率不是很高,如果TCP中再封裝TCP,在網(wǎng)絡(luò)狀況不穩(wěn)定情況下,傳輸效率可能會急劇下降,但這個難題在被逐步功課之中,將來的TLS VPN可以實現(xiàn)在安全UDP會話,那情況就會好轉(zhuǎn)很多;
3. SSL VPN客戶端必須配合SSL VPN服務(wù)器,各個廠家的客戶端都是自行開發(fā)的,無法互相兼容。
版權(quán)聲明:本文轉(zhuǎn)載自公眾號“ccie_lab”,版權(quán)歸原作者所有,轉(zhuǎn)載請保留此字段,感謝!






