文/周子豪 瞿慶海
實(shí)現(xiàn)多層次VPN系統(tǒng)的統(tǒng)一認(rèn)證
文/周子豪 瞿慶海
在現(xiàn)代校園網(wǎng)絡(luò)中VPN由于其高安全性和靈活易用被廣泛使用。但多系統(tǒng)的多層次嵌套也成為一個(gè)不可避免的問題。文章采用了LDAP樹來實(shí)現(xiàn)多層次嵌套VPN的單一認(rèn)證和有效管理提出并實(shí)現(xiàn)了一個(gè)切合實(shí)際、方便快捷的一攬子整體解決方案,確保在認(rèn)證過程中對用戶相對透明。
VPN (Virtual Private Network)無論在組網(wǎng),信息系統(tǒng)組件、網(wǎng)絡(luò)服務(wù)跨接、安全接入都有了廣泛的應(yīng)用??梢宰屛锢砦恢煤苓b遠(yuǎn)的用戶,在邏輯上平滑的進(jìn)入到一個(gè)本地域中,完成遠(yuǎn)方的用戶取得本地IP的網(wǎng)絡(luò)設(shè)置的功能,也就是虛擬管道架設(shè)的過程。在這管道建立的過程中,眾多學(xué)者和研究人員都關(guān)注于主機(jī)端和用戶端的設(shè)計(jì)。本文將對主機(jī)端如何適應(yīng)多層次嵌套,實(shí)現(xiàn)一站式登錄做出設(shè)計(jì)和實(shí)施。
VPN最先是從單一協(xié)議發(fā)展。從相對簡單的PPTP (Point to Point Transfer Protocol)建立GRE(General Routing Encapsulation )管道。到現(xiàn)在的Secure VPN和Trusted VPN兩大類。其中Secure VPN主要有IPsec、L2TP、SSl而Trusted VPN有l(wèi)ayer 3 VPNs (MPLS with constrained distribution of routing information through BGP )和 layer 2 VPNs(Transport of layer 2 frames over MPLS)兩大類。這些紛繁的協(xié)議保證了內(nèi)網(wǎng)和外網(wǎng)的安全連接。本文的焦點(diǎn)在于對VPN 域(domain)的策略管理。由于每個(gè)內(nèi)網(wǎng)會因?yàn)槁毮艿膭澐钟卸鄠€(gè)不同的子域如:人事、會計(jì)、學(xué)工、OA等不同職能域。在各個(gè)域中往往有會有不同的權(quán)限層次的劃分。于是VPN域中嵌套域是現(xiàn)在相當(dāng)普遍和常見。某些子域管理員為了實(shí)現(xiàn)一個(gè)新的應(yīng)用部署,經(jīng)常在子域中擅自劃分或建立新域的VPN域,造成了VPN域嵌套的層次加深,如圖1所示。
用戶很難在認(rèn)證的時(shí)候做到一站式身份識別。加之各個(gè)域的邊界VGW(VPN gateway)采用的協(xié)議也不盡相同。一般用戶可能需要面對數(shù)個(gè)不同的VPNclient軟件,還需要記住數(shù)個(gè)不同的用戶名和密碼,不勝其煩,很容易產(chǎn)生逆反情緒。
表1 Ldap樹形數(shù)據(jù)庫特點(diǎn)
為了解決用戶在多重嵌套VPN認(rèn)證時(shí)候的不方便。文章著重解決三大問題:
1.各個(gè)嵌套的VPN域間認(rèn)證的集中化。雖然在實(shí)際使用中可能采取不同的VPN協(xié)議,但必須有一個(gè)集中的授權(quán)發(fā)布中心來幫助認(rèn)證。
2.對于各個(gè)嵌套域,可以做到分步驟認(rèn)證的同時(shí),可以讓用戶就記住一個(gè)密碼:方便、快捷。
3.整個(gè)瀑布式的認(rèn)證過程中,對用戶本身是透明的。用戶不需要知道在每個(gè)域中使用的認(rèn)證協(xié)議、方法和策略。
為此本文采用LDAP(Lightweight Directory Access Protocol)認(rèn)證服務(wù)器(Sun Java System Identity Server 6.1)來實(shí)現(xiàn)多層次VPN域的嵌套認(rèn)證,解決以上的三個(gè)問題。
而從外形上看L D A P服務(wù)器就是一個(gè)由各個(gè)entry組成的樹如圖2所示。
對比圖1和圖2,可以發(fā)現(xiàn)LDAP樹很適合作為嵌套VPN域認(rèn)證的工作。每個(gè)Dc可以被分配各個(gè)虛擬域的認(rèn)證。而無論是嵌套還是并行的域關(guān)系也可以很好在LDAP樹中間得到體現(xiàn)。為了可以把對于登錄用戶在各個(gè)域中間擁有的策略也一并考慮在設(shè)計(jì)方案中。本文對類似于圖1的邏輯結(jié)構(gòu)可以設(shè)計(jì)成為類似圖3的LDAP樹結(jié)構(gòu)。
從中可以看到從左到右的domain1至domain3有滿足圖1的邏輯嵌套關(guān)系。其分別對應(yīng)于層次化的一個(gè)嵌套的O(LDAP Tree中的org)。為了使得用戶在登錄時(shí)系統(tǒng)會自動的給出不同用戶的層次認(rèn)證。設(shè)計(jì)標(biāo)志位:DE、DELE、FOR分別表示deny(拒絕)、delegate(授權(quán))、forward(轉(zhuǎn)向認(rèn)證)、REQ(請求上級的認(rèn)證)。如圖3所示,在用戶登錄domain1后要求登錄domain4,由于domain4沒有包含在總體認(rèn)證系統(tǒng)中,被拒絕。而當(dāng)用戶再要求在domain2中活動,查看標(biāo)志位如果是DELE表示被授權(quán)。用戶認(rèn)證信息就會轉(zhuǎn)交給domain2去尋求授權(quán)。當(dāng)需要用戶的認(rèn)證具體信息如用戶名和密碼時(shí),就需要有froward標(biāo)識跳出O的entry而到用戶的信息庫中完成最后的認(rèn)證。而向更深層次域請求的標(biāo)識,都會存放在REQ的大標(biāo)識位中。為了完成策略分配,需要在每個(gè)登錄的domain上配置專門的gateway,用來識別LDAP Tree的O entry,以實(shí)現(xiàn)各個(gè)域中的表識位傳遞,并承擔(dān)Policy Server。由于工作量一般不會很大,主要的工作是基于Ldap_search的查找,直接用替代下的PC工作站就能很好地完成。其實(shí)際物理拓?fù)鋱D如圖4所示。
圖2 根據(jù)職能的ldap命名
圖3 LDAP樹登錄策略分配示意
圖4 VPN實(shí)際多層次物理建立拓?fù)涫疽?/p>
本文采用Sun Java System Identity Server 6.1作為LDAP Tree應(yīng)用發(fā)布,而不是使用通常的Openldap??紤]到了其在多層次多entry認(rèn)證時(shí)的健壯和穩(wěn)定性。VPN采用在開源軟件Poptop1.3.0的再開發(fā),保證了對pptp、Gre、SSL等協(xié)議的模塊化支持,節(jié)約了開發(fā)時(shí)間。開發(fā)語言采用Perl6.0,尤其是其中的Cpanmodel(Comprehensive Perl Archive Network)開發(fā)包。如對LDAP的綁定直接采用Net::ldap調(diào)用。
而對于所有的Flag可以用Socket::class在Policy Server直接讀取,演示代碼如下:
通過實(shí)驗(yàn)發(fā)現(xiàn),每多過一層認(rèn)證一般需要有60ms的延遲。為此多加載Cache,保證在大量的訪問時(shí)候不需要去詢問上層的LDAP樹。經(jīng)過實(shí)驗(yàn)測試,在100個(gè)請求的情況下,增加Cache平均可以減少75ms的延遲。
本文實(shí)現(xiàn)了多層析的VPN的自動認(rèn)證和策略發(fā)放模型。目前還有很多工作需要完善,如有對LDAP樹的修剪和組元同步。同時(shí)為了更好的適合各種不同的應(yīng)用對LDAP樹的屬性設(shè)置和schema設(shè)置還需要重新規(guī)劃。如何把多層次認(rèn)證時(shí)間以降低是將來的一個(gè)研究方向。
(作者單位為上海交通大學(xué)網(wǎng)絡(luò)信息中心)