張海濤 曾若星 黃岳田 張晨
【摘 要】外網(wǎng)合法用戶如何安全高效地訪問內(nèi)網(wǎng)資源是VPN技術(shù)研究的核心。用戶使用VPN訪問內(nèi)部網(wǎng)絡(luò)時,客戶端與服務(wù)器之間的交互數(shù)據(jù)通過加密通道傳輸,保證了內(nèi)部數(shù)據(jù)的安全。本文提出了用戶權(quán)限分級、個性化網(wǎng)絡(luò)資源分配、服務(wù)器安全防范等設(shè)想,為用戶提供一個安全易用的WebVPN系統(tǒng)。
【關(guān)鍵詞】WebVPN;網(wǎng)站安全;加密
0 引言
VPN在為用戶提供便捷優(yōu)質(zhì)服務(wù)的同時也存在著一些問題。一方面,有的VPN安裝及配置過程復(fù)雜,且可能受到防火墻或網(wǎng)絡(luò)地址轉(zhuǎn)換而影響使用效果;另一方面,VPN對于用戶和目標服務(wù)器而言僅僅是一個加密通信的橋梁,只負責(zé)保證信息傳輸過程中的安全性,不能對用戶進入內(nèi)網(wǎng)后的行為進行控制。
針對這些問題,本文描述了一種基于Socks5的WebVPN系統(tǒng),對系統(tǒng)中的關(guān)鍵技術(shù)進行分析,并提出了無需傳輸用戶口令的身份認證模式、使用網(wǎng)站管理用戶行為等新設(shè)想。實現(xiàn)了一個可跨平臺、用戶個性化定制、安全高效、方便管理的輕量級WebVPN系統(tǒng)。
1 系統(tǒng)功能模塊
WebVPN系統(tǒng)基于Socks5協(xié)議,所以支持多平臺下使用。該系統(tǒng)主要分為三大模塊:客戶端模塊、服務(wù)器模塊及傳輸模塊。
客戶端負責(zé)與用戶交互,經(jīng)本地代理將內(nèi)網(wǎng)中的內(nèi)容轉(zhuǎn)發(fā)到用戶的瀏覽器上。其基于Web服務(wù)器的運行機制,使用戶在瀏覽器中設(shè)置相應(yīng)的全局代理即可連接到對應(yīng)的服務(wù)器,訪問內(nèi)網(wǎng)資源。
服務(wù)器模塊是系統(tǒng)較為核心的模塊,其不僅作為內(nèi)外網(wǎng)之間信息交流的橋梁,還具備用戶合法性檢查、用戶權(quán)限區(qū)分、網(wǎng)站安全加固等功能。WebVPN服務(wù)器將通過提供的Web服務(wù)代替合法用戶執(zhí)行對內(nèi)網(wǎng)應(yīng)用的訪問,并將結(jié)果返回給用戶瀏覽器。而服務(wù)器管理人員也可進入管理網(wǎng)站后臺進行相關(guān)操作及文件檢查,預(yù)防可能發(fā)生的問題。
傳輸模塊將經(jīng)過通信隧道中的各類信息封裝加密,確保客戶端與服務(wù)器之間的數(shù)據(jù)交流安全?;贖TTP協(xié)議使得數(shù)據(jù)能夠方便地通過防火墻,處于防火墻兩端的程序可以使用一種或多種方式組合來實現(xiàn)它們之間通信的需求,另一方面,Socks5是一種工作在傳輸層與應(yīng)用層之間的上層協(xié)議,這樣也為本系統(tǒng)的通用性奠定了基礎(chǔ)。
2 實現(xiàn)技術(shù)
2.1 數(shù)據(jù)的加密與解密
客戶端和服務(wù)器在完成生成密鑰的通信協(xié)議后會同時產(chǎn)生加密器與解密器。加密器接收到明文數(shù)據(jù)后首先檢查明文長度是否為16字節(jié)的倍數(shù),當(dāng)長度不足16字節(jié)的倍數(shù)時將自動在該字段末尾加上其他字符補位。得到長度處理工作完成的明文后,加密器將生成一個長度為12字符的隨機字符串作為本次加密的初始化向量IV(initialization vector)。得到了明文、密鑰、IV之后加密器根據(jù)AES算法生成密文,同時將加密時的IV連接在密文數(shù)據(jù)字段之前一并返回給通信模塊。解密過程即為加密的逆過程。加密器得到密文后將其拆分成加密數(shù)據(jù)段和IV,用密鑰與IV即可對密文進行解密得到明文數(shù)據(jù)段(可能包含補位字符),再檢測該數(shù)據(jù)段是否存在補位,若存在則將補位刪除,得到最原始的明文數(shù)據(jù)段。
2.2 通信密鑰生成
服務(wù)器與客戶端會根據(jù)預(yù)共享秘密,即用戶離線注冊的初始口令,各自在本地使用相同的算法生成AES算法的密鑰,無需借助額外的安全信道傳輸密鑰。當(dāng)客戶端發(fā)出請求接入內(nèi)網(wǎng)請求時,數(shù)據(jù)庫將會生成12字節(jié)長度的隨機字符串發(fā)送至客戶端,雙方使用這個隨機數(shù)同時生成一個32字節(jié)的哈希值作為本次通信的密鑰KEY??梢钥闯鲈诮⑼ㄐ潘淼罆r只是在公網(wǎng)中明文傳輸了用戶名和隨機數(shù),保證了密鑰的安全性。同時,不需要使用證書驗證接入用戶的身份,相較于SSL加密模式減少了額外的開支。
2.3 數(shù)據(jù)的封裝及解封
數(shù)據(jù)封裝過程在數(shù)據(jù)加密過程之后進行。獲取加密后的字段DATA和初始化向量IV后,計算出IV+DATA的長度,得到4字節(jié)的LENGTH標識放置在數(shù)據(jù)包前;最后對新數(shù)據(jù)包前后分別加上開始標識符“DTSTART”和結(jié)束標識符“DTEND”。此時,數(shù)據(jù)包的封裝工作完成,與原始加密數(shù)據(jù)DATA相比增加了32字節(jié)數(shù)據(jù)。
解封即為封裝的逆過程??蛻舳擞删彺鎱^(qū)獲取數(shù)據(jù)包,從開始符“DTSTART”處讀取數(shù)據(jù),遇到結(jié)束符“DTEND”完成;隨后比較數(shù)據(jù)包IV+DATA的長度和收到的LENGTH值是否相等,確認無誤后將完整的IV+DATA轉(zhuǎn)給解密模塊,數(shù)據(jù)包解封過程結(jié)束。
2.4 用戶登錄驗證
在WebVPN中,用戶登錄驗證采用挑戰(zhàn)響應(yīng)機制完成。當(dāng)用戶申請訪問內(nèi)網(wǎng)時,本機與服務(wù)器兩端同時利用相同的公式對隨機數(shù)進行計算。結(jié)果吻合即證明用戶合法,即可采用生成的密鑰加密通信數(shù)據(jù)。系統(tǒng)完成通道加密工作之后會將使用者的用戶名及其所使用主機的MAC地址發(fā)送給WebVPN服務(wù)器,由WebVPN服務(wù)器記錄這兩項信息,為之后的訪問控制模塊做準備。
2.5 訪問控制技術(shù)
系統(tǒng)采用了基于角色的訪問控制策略(RBAC),于服務(wù)器處實施較細粒度的訪問控制。用戶身份認證采用了口令認證與地址(MAC地址)認證結(jié)合的方式,在用戶與WebVPN服務(wù)器建立了可信的隧道之后將其登錄名與主機MAC地址發(fā)給服務(wù)器,服務(wù)器記錄這兩項信息后首先對該MAC地址進行檢索,判斷用戶是否處于登錄狀態(tài)。當(dāng)用戶請求訪問內(nèi)網(wǎng)資源后,WebVPN服務(wù)器會對用戶身份進行認證,并將用戶權(quán)限及訪問請求轉(zhuǎn)發(fā)至RBAC數(shù)據(jù)庫匹配,經(jīng)數(shù)據(jù)庫確認后服務(wù)器才會將請求結(jié)果返回至用戶機瀏覽器。
當(dāng)用戶發(fā)送內(nèi)網(wǎng)請求時,WebVPN服務(wù)器都會驗證發(fā)送請求的用戶登錄名與MAC地址是否與表單中的數(shù)據(jù)相匹配。這也確保了在同一時段中某臺主機只允許一名用戶訪問內(nèi)網(wǎng),且同一用戶不能在多臺主機上登錄,避免了非法用戶通過偽造MAC地址等手段進行越權(quán)訪問,一定程度上保證了內(nèi)網(wǎng)的安全。
2.6 客戶端Socks通道
用戶瀏覽器與本機客戶端之間建立Socks5通道,本機作為Socks5服務(wù)器成為瀏覽器和WebVPN服務(wù)器的中繼,當(dāng)外網(wǎng)用戶需要訪問某個內(nèi)網(wǎng)頁面時,客戶端將請求發(fā)送至WebVPN服務(wù)器,WebVPN服務(wù)器將得到的數(shù)據(jù)返回至客戶端(Socks5服務(wù)器),客戶端通過之前建立的Socks通道將數(shù)據(jù)返回到用戶瀏覽器上。
3 總結(jié)
本文提出了這個基于Socks5的WebVPN系統(tǒng),對數(shù)據(jù)加密傳輸和系統(tǒng)網(wǎng)站管理等新設(shè)想進行了闡述,使用了安全獨特的用戶驗證方式,也對用戶進入內(nèi)網(wǎng)后的行為進行了一定管理。從性能分析及測試結(jié)果來看,在保證了VPN安全性和方便性的基礎(chǔ)上,還有實現(xiàn)了一些拓展功能,使之成為一個立體的系統(tǒng),在方便用戶訪問內(nèi)網(wǎng)資源的同時也能對系統(tǒng)自身進行安全加固。
【參考文獻】
[1]王松江.VPN技術(shù)在計算機網(wǎng)絡(luò)中的應(yīng)用[J].計算機光盤軟件與應(yīng)用,2013,10.
[2]劉松.SOCKS VPN的研究及其實現(xiàn)[J].信息安全與通信保(下轉(zhuǎn)第26頁)(上接第68頁)密,2006,5.
[3]粟棣.零配置VPN客戶端的設(shè)計與實現(xiàn)[J].北京交通大學(xué).2009,6.
[4]齊俊峰.基于Django的校園管理系統(tǒng)的分析與開發(fā)[J].蘭州大學(xué).2013,10.
[5]袁巍.AES算法的設(shè)計原則與其密鑰擴展算法的改進[J].吉林大學(xué).2010,4.
[責(zé)任編輯:田吉捷]