技術點詳解---SSL ***

技術點詳解---SSL ***

SSL ***是專欄***系列技術原理的最後一篇,SSL ***作爲遠程接入型的***,已經具備非常廣闊的前景,它的主要適應場景是取代L2TP Over IPSec,但功能要比L2TP Over IPSec更豐富,方案也更加靈活。

一、     SSL ***簡介

何謂SSL ***,首先要從SSL談起,使用網絡不能不提的是各個網站,瀏覽網站使用瀏覽器,網絡上傳送網頁的協議叫HTTP,它是明文傳播的,傳播內容可以被***讀取。而SSL全名叫Secure Session Layer(安全會話層),其最初目的是給HTTP加密使用的安全套件,使用SSLHTTP,也就搖身一變成了HTTPS,端口也從HTTP80變成了443。由於HTTPS具備安全性,也具備傳輸數據的能力,也就被研究***技術的專家盯上了,覺得HTTPS可以用於組建***方案,於是乎SSL ***技術就呼之欲出了。經過多年的發展,SSL版本發展到了3.0,也被標準組織採納爲TLSTransport Layer Security傳輸層安全) 1.0之中,所以SSL ***也叫TLS ***。下面是SSL SSL ***TLS的區別:

1.   SSL:單純的實現對某些TCP應用的保護,如HTTPSSFTP

2.   SSL ***:利用TCP的傳輸作用以及SSLTCP會話的保護,實現***業務,被保護的***業務可以是TCP的、也可以UDP,純IP的應用;

3.   TLS:在SSL上進行擴展,能夠直接實現對UDP應用的保護,這也是傳輸層安全的最佳註釋。

接下來看看SSL ***的使用場景吧:

L2TP實現的是遠程接入***,而IPSecL2TP提供安全保護,這種應用已經非常成熟,但屬於兩個協議的生硬組合,在方案上不是特別靈活。而SSL ***是天然的安全遠程接入,在方案上,特別是權限控制、應用粒度上有獨到之處,成爲目前遠程接入領域的香餑餑,目前已經超越了技術範疇,而成爲一個安全網絡服務框架。

SSL ***最常見的入口還是網頁,所以推廣起來特別方便:

1.   使用者只需要記住***的網站(通常是HTTPS),用瀏覽器打開該網站;

2.   輸入使用者的身份信息,身份信息可以是用戶名、數字證書(如USB-Key)、靜態口令、動態口令的至尊組合,確保身份不泄露、不假冒;

3.   選擇服務種類,其中WEB代理是最爲簡單的應用,也是控制粒度最細的SSL ***應用,可以精確地控制每個鏈接;

4.   端口映射是粒度僅次於WEB代理的應用,它通過TCP端口映射的方式(原理上類似於NAT內部服務器應用),爲使用者提供遠程接入TCP的服務,它需要專門的、與服務器配套的SSL ***客戶端程序幫忙;

5.   IP連接是SSL ***中粒度最粗的服務,但也是使用最廣泛的,它實現了類似於L2TP的特性,所有客戶端都可以從服務器獲得一個***地址,然後直接訪問內部服務器,它也需要專門的SSL ***客戶端程序幫忙;

6.   SSL ***由於處在TCP層,所以可以進行豐富的業務控制,如行爲審計,可以記錄每名用戶的所有操作,爲更好地管理***提供了有效統計數據;

7.   當使用者退出SSL ***登陸頁面時,所有上述安全會話會統統釋放。

以上7個步驟可以劃分爲三個階段:階段一是連接與驗證、階段二是***應用、階段三是審計與退出。由於連接與驗證、審計與退出都是統一流程,也比較簡單,本期針對大家較爲關注的階段二,***應用部分進行展開介紹。

二、     WEB代理

由於SSL是封裝在TCP上的,穿越NAT不是問題,所以在示例中客戶端使用公網地址進行介紹:

1.   假設SSL ***WEB站點的互聯網域名是https://ssl***,該WEB站點對應的主機則是SSL ***服務器;

2.   使用者登陸SSL ***WEB頁面後,WEB代理一欄會有許多鏈接,如內部財務報表、訂單提交等內部網站;

3.   假設訂單提交網站在單位內部私有URLhttp://site1/page,那麼在SSL ***服務器上的訂單提交鏈接URL則會進行相應的修改,變成https://ssl***/httpsite1/pate,相當於SSL ***站點的內部鏈接;

4.   使用者點擊訂單提交鏈接後,會新建一個瀏覽器窗口,打開鏈接https://ssl***/httpsite1/page,也就是說對於使用者而言,訂單提交像是SSL ***站點的一個鏈接,而非另外一個站點,所有的訪問都終結在SSL ***站點;

5.   SSL ***站點的所有者SSL ***服務器在接收到使用者對https://ssl***/httpsite1/page的頁面請求後,SSL ***服務器會做WEB代理的工作,即以內部地址10.1.1.1向真正的訂單提交站點10.6.16.3訪問頁面http://site1/page

6.   可以發現整個頁面訪問是由使用者與服務器之間的HTTPS會話、服務器與訂單提交站點的HTTP會話連接而成的,服務器在這個訪問中起的是WEB代理作用,因爲在訂單提交站點看來,訪問者IP是服務器,而不是最終用戶IP

7.   而使用者訪問另外一個站點財務報表,也是類似過程。

WEB代理因爲原理簡單,實現起來較爲容易,因爲傳統的WEB Proxy代理是兩段HTTP會話的銜接,而SSL ***WEB代理則把用戶與服務器的連接把HTTP換成了HTTPS、並對網站的URL進行了替換而已,從圖中我們可以看到紅色部分即爲URL的替換。

從這張封裝原理圖,我們可以比較清楚地看到HTTPSHTTP會話在這個訪問過程中的銜接。可能有人會問,讓訂單提交站點直接在互聯網提供HTTPS服務,直接用一個HTTPS會話不是更好,原理上當然更好,但是有更多的現實問題:

1.   直接在互聯網提供HTTPS服務,需要一個互聯網地址和公共域名,這兩樣都是要花錢申請的,使用SSL ***統一接入,這麼多內部站點只需要一個公網地址、一個公網域名,多划算;

2.   訂單提交真的需要開放到互聯網嗎?訂單提交都是公司內部業務,訪問量也不大,直接開放到互聯網並不能有更多的提速效果;

3.   開放到互聯網怎麼保證安全,財務報表等信息都是公司機密,老老實實放在內網,前面通過SSL ***服務器擋着,即使有***也只是***SSL ***服務器,內網服務器還是很安全的。

綜上所述對於一些內部站點,使用SSL ***還是相當有好處的,特別是在擁有一款強大的SSL ***服務器的時候。

三、     端口映射

剛纔講的是WEB代理,對於一些內部服務器並不是WEB站點,那WEB代理還能使用嗎?不能使用了,比如內部站點是FTP應用,那麼訪問不可能由HTTPS會話和FTP會話銜接而成,SSL ***必須想其餘辦法。由於SSL只能封裝在TCP之上,所以端口映射服務器只能針對內部的TCP應用,如FTP

在端口映射中,SSL ***的使用者會從SSL ***頁面自動加載一個客戶端程序,我們姑且就叫它SSL ***客戶端程序吧,它是怎麼使端口映射工作的呢,我們假設內部有兩個FTP服務器,一個叫FTP1,內部地址10.6.16.1,另一個是FTP2,內部地址10.6.16.4,都是監聽TCP 21端口:

1.   SSL ***服務器爲這兩個內部服務器做了端口映射,TCP 2021端口映射到FTP1TCP 213021則映射到FTP2

2.   SSL ***服務器會讓使用者PC自動加載SSL ***客戶端程序,並根據這兩個映射生成兩個靜態host映射表項,告訴使用者PC訪問FTP1其實就是訪問127.0.0.2,訪問FTP2就是訪問127.0.0.3127.0.0.0/8稱爲環回地址,及該地址只能在PC內部使用,不可能被髮出到PC之外,那麼SSL ***客戶端程序就監聽這兩個內部地址;

3.   使用者訪問FTP1,其實訪問的是TCP 127.0.0.2:21,所有數據都會被SSL ***客戶端程序監聽,客戶端程序會進行代理,變成訪問服務器TCP 6.16.5.6:2021,該TCP訪問會使用SSL進行加密;

4.   大家可能會問,爲何需要個客戶端程序進行代理呢,使用者的應用程序不能直接和SSL ***服務器建立SSL會話嗎?這個問題很好,使用者的應用程序的確無法直接建立SSL會話,所以使用客戶端程序代勞,這種方式可以讓所有TCP應用都能夠享用SSL ***服務;

5.   服務器接收到SSL加密的請求後,首先會進行解密,然後根據端口映射,會向內部FTP1站點TCP 10.6.16.1:21發起訪問;

6.   反向轉發以及訪問FTP2類似。

我們可以發現這種端口映射使整個訪問過程由三段會話組成:使用者應用程序與SSL ***客戶端程序的普通TCP會話、SSL ***客戶端程序與服務器的SSL會話、服務器與內部站點的普通TCP會話。

從這張圖可以看出更詳細的數據封裝過程以及會話銜接過程,使用SSL ***服務器進行端口映射的好處與WEB代理類似,可以犧牲SSL ***服務器,保護內部服務器。

四、     IP連接

前面介紹的WEB代理是專門針對WEB應用的,端口映射則受制於SSL只支持TCP應用,如果使用者要任意訪問一個內部服務器的任意協議、端口,該如何是好呢?IP連接應運而生,IP連接可以完美地替代L2TP這種傳統意義上的***:虛擬連接、內部地址、路由互聯。

我們從上圖來解釋一下IP連接的原理:

1.   用戶登陸SSL ***頁面後,會建立HTTPS會話,服務器通過這個會話給用戶自動加載SSL ***客戶端程序;

2.   此時的SSL ***客戶端程序的目的是給用戶PC創建一個虛擬網卡,以實現類似於L2TP那種到客戶總部網絡的***連接;

3.   虛擬網卡創建好後,服務器會給該用戶從地址池中取一個地址分配給該用戶,同時下發路由、DNS等信息,服務器針對該地址池也會有一個服務器地址192.168.1.1,作爲所有客戶端程序虛擬網卡的網關;

4.   此時SSL ***客戶端程序與服務器之間會建立一個全新的SSL會話,專門用來傳輸虛擬網卡與服務器之間的流量;

5.   假設用戶要訪問DNS 10.6.16.1,根據路由的關係,PC會通過虛擬網卡將DNS請求(源192.168.1.2目的10.6.16.1)轉發給SSL ***服務器192.168.1.1

6.   PC上的SSL ***客戶端程序會將虛擬網卡發出的IP包封裝至新的SSL會話中,通過互聯網傳送到服務器;

7.   服務器進行解密,解封裝後發現IP目的地址是10.6.16.1,那麼就轉發給DNS

8.   反向過程以及訪問ERP服務器10.6.16.4與此類似。

再來看一下數據封裝過程,會有更加直觀的認識:

SSL ***IP連接中,客戶端訪問內部服務器不再像WEB代理、端口映射那應該多個會話銜接而成,而是一個內部地址端到端會話,穿越互聯網的時候直接會話被封裝至SSL會話中,和L2TP Over IPSec非常類似。

五、     SSL ***總結

爲什麼說SSL ***可以通過多粒度的服務呢?這是一個對比:

1.   WEB代理,可以精確到對HTTP站點某些URL的控制;

2.   端口映射,可以精確到對某個端口的控制;

3.   IP連接,可以精確到對某個IP地址的控制;

L2TP只能實現3,無法實現12,更是很難實現行爲審計功能。因此業界非常看好SSL ***的前景,但使用SSL ***必然也有一些侷限性和代價:

1.   對於站點到站點的應用,效率上不如IPSec,所以通常用來取代L2TP方案,而不是IPSec方案;

2.   SSL ***IP連接服務,在有連接的TCP中封裝無連接的IPUDP上效率不是很高,如果TCP中再封裝TCP,在網絡狀況不穩定情況下,傳輸效率可能會急劇下降,但這個難題在被逐步功課之中,將來的TLS ***可以實現在安全UDP會話,那情況就會好轉很多;

3.   SSL ***客戶端必須配合SSL ***服務器,各個廠家的客戶端都是自行開發的,無法互相兼容,由於客戶端都是動態加載的,也就是說訪問什麼服務器,必然加載與之配套的客戶端,不存在兼容性問題,但客戶端是操作系統相關,甚至是瀏覽器相關的,很多廠家的SSL ***只開發了基於Windows IE的客戶端,使用LinuxBSD操作系統的使用者無疑就杯具了,這裏呼籲各大廠家要多多照顧一下其餘操作系統用戶。

文章出處轉至:ICG技術專欄-阿丘有話說http://www.h3c.com.cn/Service/Channel_Service/Operational_Service/ICG_Technology/201008/686807_30005_0.htm

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章