一款代理認(rèn)證服務(wù)器的設(shè)計
把SOCKSv5代理服務(wù)與可擴(kuò)展認(rèn)證協(xié)議(EAP)聯(lián)合起來,形成了基于SOCKSv5與EAP聯(lián)合的代理認(rèn)證服務(wù)器,從而彌補(bǔ)了防火墻代理服務(wù)在支持多種認(rèn)證機(jī)制中的不足,提高了用戶身份認(rèn)證的靈活性、訪問控制的可靠性。該方法解決了防火墻協(xié)議對不斷擴(kuò)展的認(rèn)證機(jī)制的支持問題。該技術(shù)可與其他網(wǎng)絡(luò)安全技術(shù)諸如授權(quán)管理等相結(jié)合,形成比較完善的并可以不斷擴(kuò)展的安全體系。
本文引用地址:http://www.ex-cimer.com/article/150440.htm1 SOCKSv5的結(jié)構(gòu)和原理
1.1 SOCKSv5的結(jié)構(gòu)
SOCKS5 是一個代理協(xié)議,它在使用 TCP/IP協(xié)議通訊的前端機(jī)器和服務(wù)器機(jī)器之間扮演一個中介角色,使得內(nèi)部網(wǎng)中的前端機(jī)器變得能夠訪問Internet網(wǎng)中的服務(wù)器,或者使通訊更加安全。SOCKS5 服務(wù)器通過將前端發(fā)來的請求轉(zhuǎn)發(fā)給真正的目標(biāo)服務(wù)器, 模擬了一個前端的行為。在這里,前端和SOCKS5之間也是通過TCP/IP協(xié)議進(jìn)行通訊,前端將原本要發(fā)送給真正服務(wù)器的請求發(fā)送給SOCKS5服務(wù)器,然后SOCKS5服務(wù)器將請求轉(zhuǎn)發(fā)給真正的服務(wù)器。
隨著網(wǎng)絡(luò)安全技術(shù)的不斷發(fā)展,防火墻怎樣適應(yīng)于不斷出現(xiàn)的應(yīng)用服務(wù)和安全服務(wù)成了迫切需要解決的問題。SOCKS代理服務(wù)技術(shù)成為解決該問題的有效途徑。SOCKS主要由運(yùn)行在防火墻系統(tǒng)上的代理服務(wù)器軟件包和鏈接到各種網(wǎng)絡(luò)應(yīng)用程序的庫函數(shù)包組成。這樣的結(jié)構(gòu)可以使用戶根據(jù)自己的需要制定代理軟件,有利于增添新的應(yīng)用,從而不斷地擴(kuò)展SOCKS的功能。
1.2 協(xié)議原理
SOCKSv5在OSI模型的會話層控制數(shù)據(jù)流,它定義了非常詳細(xì)的訪問控制。SOCKSv5在客戶機(jī)和應(yīng)用服務(wù)器主機(jī)之間建立了一條虛電路,可根據(jù)認(rèn)證對用戶進(jìn)行監(jiān)視和訪問控制。用SOCKSv5的代理服務(wù)器可隱藏內(nèi)部網(wǎng)的網(wǎng)絡(luò)地址結(jié)構(gòu)。同防火墻結(jié)合起來使用時,數(shù)據(jù)包通過惟一的防火墻端口到SOCKSv5代理服務(wù)器,然后代理服務(wù)器過濾發(fā)往目標(biāo)主機(jī)的數(shù)據(jù)。其協(xié)議過程如下:
?。?)當(dāng)TCP的應(yīng)用客戶希望建立一個只有經(jīng)過防火墻才能到達(dá)目標(biāo)應(yīng)用服務(wù)器的連接時,它打開一個到SOCKSv5服務(wù)器系統(tǒng)上適當(dāng)端口的連接。SOCKSv5服務(wù)在TCP上的端口通常為1080。
?。?)如果連接請求成功,即客戶連接上了SOCKSv5服務(wù)器,則客戶端發(fā)送一個消息,其中包含SOCKSv5的版本號以及一種或多種認(rèn)證方案。SOCKSv5服務(wù)器選擇客戶提供的諸多方法中的一種返回給客戶端。
?。?)客戶端接收到該消息后,針對將要使用的具體認(rèn)證方法與SOCKSv5服務(wù)器協(xié)商,并用協(xié)商好的方法進(jìn)行認(rèn)證,然后發(fā)送代理請求。
?。?)SOCKSv5服務(wù)器檢查該請求,據(jù)檢查結(jié)果決定是建立適當(dāng)?shù)拇砘芈愤€是拒絕該請求。同時給客戶發(fā)送代理回路狀態(tài)??蛻魴z查代理狀態(tài)。
(5)代理服務(wù)器開始中繼應(yīng)用協(xié)議的數(shù)據(jù)。
2 可擴(kuò)展認(rèn)證協(xié)議的內(nèi)容及應(yīng)用
2.1 協(xié)議內(nèi)容
可擴(kuò)展認(rèn)證協(xié)議是PPP認(rèn)證的一般協(xié)議,它支持多種認(rèn)證機(jī)制。EAP在連接控制階段不會選擇某種特定的認(rèn)證機(jī)制,而是在認(rèn)證階段選擇。同時也允許使用后端服務(wù)器來執(zhí)行各種認(rèn)證,而PPP認(rèn)證者只用來傳遞認(rèn)證的信息。協(xié)議過程如下。
?。?)認(rèn)證者和對方建立連接控制。
?。?)連接建立階段完成之后,認(rèn)證者發(fā)送一個或更多的認(rèn)證請求。請求的類型包含身份、MD5-挑戰(zhàn)、一次性口令、一般的標(biāo)識卡等。MD5-挑戰(zhàn)類型緊密地對應(yīng)于CHAP認(rèn)證協(xié)議。在典型的模式中,認(rèn)證者在發(fā)送一個或多個對認(rèn)證信息的請求之后,將發(fā)送一個初始的身份請求。但初始的身份請求并不是協(xié)議要求的,在身份可以推測的情況下它有可能被取消。
(3)對方發(fā)送應(yīng)答包來答復(fù)每個請求。應(yīng)答包的類型域與請求包相同。
?。?)認(rèn)證者發(fā)送認(rèn)證成功或失敗包來結(jié)束認(rèn)證階段。
在默認(rèn)的情況下,EAP以代理模式運(yùn)行,即EAP允許網(wǎng)絡(luò)訪問服務(wù)器和后端服務(wù)器協(xié)商整個認(rèn)證過程??蛻艉途W(wǎng)絡(luò)接入服務(wù)器(NAS)在連接控制協(xié)議交流期間進(jìn)行EAP協(xié)議的協(xié)商,更進(jìn)一步的認(rèn)證消息均在客戶和后端服務(wù)器之間被傳輸。網(wǎng)絡(luò)接入服務(wù)器不再直接參與認(rèn)證過程,而是作為代理者在二個遠(yuǎn)端之間中繼信息。
2.2 應(yīng) 用
任意一個認(rèn)證機(jī)制都可使用EAP驗證遠(yuǎn)程訪問連接。在遠(yuǎn)程客戶和認(rèn)證者(遠(yuǎn)程訪問服務(wù)器或者因特網(wǎng)認(rèn)證服務(wù)器)之間需要協(xié)商好將要使用的認(rèn)證機(jī)制。EAP可支持多種認(rèn)證機(jī)制,諸如通用標(biāo)識卡、MD5-挑戰(zhàn)、S/Key以及未來的任何認(rèn)證技術(shù)。
EAP允許遠(yuǎn)程客戶和認(rèn)證者之間自由會話。會話包含認(rèn)證者對認(rèn)證信息的請求和遠(yuǎn)程客戶的應(yīng)答。例如,當(dāng)EAP通過安全標(biāo)示卡來實現(xiàn)時,認(rèn)證者可獨(dú)立地詢問遠(yuǎn)程客戶的名字、PIN以及卡的標(biāo)識值,直到遠(yuǎn)程客戶回答完所有問題,認(rèn)證才成功地結(jié)束。
EAP-RADIUS不是一種EAP類型,而是任何EAP類型的信息通過認(rèn)證者(遠(yuǎn)程訪問服務(wù)器或IAS)到達(dá)RADIUS的傳輸過程。例如,對用于支持RADIUS認(rèn)證的遠(yuǎn)程訪問服務(wù)器來說,在遠(yuǎn)程訪問客戶和遠(yuǎn)程訪問服務(wù)器之間的EAP消息將被封裝和格式化為遠(yuǎn)程訪問服務(wù)器和RADIUS服務(wù)器之間的RADIUS消息。
EAP-RADIUS適用于RADIUS作為認(rèn)證提供者的環(huán)境。使用EAP-RADIUS的優(yōu)點在于EAP類型不必嵌入在每個遠(yuǎn)程訪問服務(wù)器上,而只需嵌入到RADIUS服務(wù)器上。
在EAP-RADIUS的典型使用情況中,Windows 2000遠(yuǎn)程訪問服務(wù)器配置為可與EAP和IAS服務(wù)器結(jié)合來用于認(rèn)證。一個連接成功創(chuàng)建后,遠(yuǎn)程訪問客戶與遠(yuǎn)程訪問服務(wù)器協(xié)商EAP的使用。當(dāng)客戶發(fā)送一個EAP消息給遠(yuǎn)程訪問服務(wù)器時,遠(yuǎn)程訪問服務(wù)器把EAP消息包裝成一個RADIUS消息,并把它發(fā)送給配置好的IAS服務(wù)器。IAS服務(wù)器處理EAP消息,同時返回一個封裝了RADIUS的EAP消息給遠(yuǎn)程訪問服務(wù)器。遠(yuǎn)程訪問服務(wù)器把EAP消息提交給遠(yuǎn)程訪問客戶。在這種配置中,遠(yuǎn)程訪問服務(wù)只是一個中繼設(shè)備。遠(yuǎn)程訪問客戶和IAS服務(wù)器負(fù)責(zé)所有EAP消息的處理。
3 SOCKSv5-EAP代理認(rèn)證服務(wù)器的設(shè)計
3.1 代理認(rèn)證模塊的結(jié)構(gòu)
EAP協(xié)議允許防火墻在SOCKSv5認(rèn)證方法階段不必預(yù)先商定具體的認(rèn)證機(jī)制。它支持所有的EAP認(rèn)證的擴(kuò)展機(jī)制,認(rèn)證服務(wù)器可根據(jù)用戶的身份來決定認(rèn)證機(jī)制的類型。這就允許SOCKS服務(wù)器在決定之前認(rèn)證機(jī)制可以向用戶請求更多的信息。并且可以使用一個后端服務(wù)器來專門執(zhí)行各種不同的認(rèn)證,這使得支持EAP功能的RADIUS服務(wù)器可以用作后端服務(wù)器進(jìn)行各種不同的認(rèn)證。代理認(rèn)證模塊結(jié)構(gòu)如圖1所示。
3.2 SOCKSv5-EAP的協(xié)商過程
(1)SOCKSv5認(rèn)證方法協(xié)商階段,EAP并不進(jìn)行明確的認(rèn)證機(jī)制的選擇,而是在SOCKS基于認(rèn)證方法的子協(xié)商階段才選定認(rèn)證機(jī)制。SOCKS服務(wù)器除了用于傳遞認(rèn)證信息之外,還能進(jìn)行簡單的訪問控制、過濾和認(rèn)證。
?。?)一旦TCP連接在客戶和SOCKS服務(wù)器間建立,客戶發(fā)送一個包含版本標(biāo)識符和方法選擇集的消息。
(3)在SOCKSv5認(rèn)證方法被協(xié)商確定后,RADIUS服務(wù)器發(fā)送一個或多個請求信息來認(rèn)證SOCKSv5客戶。請求中的類型域用于指明被請求的內(nèi)容,包括身份、MD5-挑戰(zhàn)、一次性口令和一般的認(rèn)證卡等。MD5-挑戰(zhàn)類型與挑戰(zhàn)握手協(xié)議相對應(yīng)。
(4)應(yīng)答包包含的類型域與請求的類型域相同。SOCKS或RADIUS服務(wù)器將用一個認(rèn)證成功或失敗包來結(jié)束認(rèn)證階段。
?。?)SOCKSv5服務(wù)器在客戶和認(rèn)證服務(wù)器RADIUS之間不停地中繼雙方發(fā)出的EAP包。
3.3 協(xié)商過程中各種包的格式
?。?)SOCKS/RADIUS服務(wù)器請求包以及對方應(yīng)答包的摘要如圖2所示。
VER標(biāo)識子協(xié)商的當(dāng)前版本;CODE標(biāo)識EAP請求或EAP應(yīng)答;ID域負(fù)責(zé)輔助匹配請求和應(yīng)答;TYPE域標(biāo)識請求或應(yīng)答類型,一般來說請求類型和應(yīng)答類型應(yīng)相同。
?。?)EAP包的格式如圖3所示。
其中CODE域標(biāo)識EAP請求或EAP應(yīng)答;LENGTH域標(biāo)識EAP包的長度;DATA域的格式由CODE域決定。
評論