王 謙
(安徽新聞出版職業(yè)技術(shù)學(xué)院包裝工程系,安徽合肥 2 30601)
基于OpenVPN技術(shù)的校園VPN系統(tǒng)設(shè)計(jì)
王 謙
(安徽新聞出版職業(yè)技術(shù)學(xué)院包裝工程系,安徽合肥 2 30601)
針對(duì)校園網(wǎng)安全的實(shí)際需要,提出了適合中等規(guī)模校園網(wǎng)的VPN協(xié)議選取和設(shè)計(jì)方案,并完成了與防火墻相結(jié)合的OpenVPN實(shí)現(xiàn)。
OpenVPN;路由
VPN是采用隧道技術(shù)以及加密、身份認(rèn)證等方法,在共用網(wǎng)絡(luò)上建立專用網(wǎng)絡(luò)的技術(shù)。之所以稱為虛擬網(wǎng)主要是因?yàn)檎麄€(gè)VPN網(wǎng)絡(luò)的任意兩個(gè)結(jié)點(diǎn)之間的連接并沒(méi)有傳統(tǒng)專網(wǎng)建設(shè)所需的點(diǎn)到點(diǎn)的物理鏈路,而是架構(gòu)在公用網(wǎng)絡(luò)服務(wù)商ISP所提供的網(wǎng)絡(luò)平臺(tái)之上的邏輯網(wǎng)絡(luò)。用戶的數(shù)據(jù)是通過(guò)ISP在公共網(wǎng)絡(luò)(Internet)中建立的邏輯隧道(Tunnel),即點(diǎn)到點(diǎn)的虛擬專線進(jìn)行傳輸?shù)?。通過(guò)相應(yīng)的加密和認(rèn)證技術(shù)來(lái)保證用戶內(nèi)部網(wǎng)絡(luò)數(shù)據(jù)在公網(wǎng)上安全傳輸,從而真正實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)的專有性[1]。將VPN技術(shù)應(yīng)用于校園網(wǎng),可以突破校園專用網(wǎng)的地域性限制,優(yōu)化校園網(wǎng)的管理和應(yīng)用,滿足師生在校園外訪問(wèn)校園網(wǎng)資源的要求。師生員工可以使用該系統(tǒng)進(jìn)入校園網(wǎng),并以校園網(wǎng)內(nèi)部用戶身份進(jìn)行訪問(wèn)。本文針對(duì)校園網(wǎng)安全的實(shí)際需要,提出了適合中等規(guī)模校園網(wǎng)絡(luò)的VPN協(xié)議選取和設(shè)計(jì)方案,并完成了與防火墻相結(jié)合的OpenVPN實(shí)現(xiàn)。
目前廣泛使用的VPN實(shí)現(xiàn)主要是基于PPTP和IPSec協(xié)議的VPN方案?;赑PTP協(xié)議的VPN的優(yōu)點(diǎn)是簡(jiǎn)單易用、兼容性好,缺點(diǎn)是具有安全隱患,而且當(dāng)網(wǎng)絡(luò)上存在防火墻或地址轉(zhuǎn)換設(shè)備時(shí),PPTP VPN可能不能正常連接;IPSec VPN的優(yōu)越性在于它的安全性、互操作性,但是管理復(fù)雜且不支持多協(xié)議。SSL VPN是采用SSL(Security Socket Layer)協(xié)議來(lái)實(shí)現(xiàn)遠(yuǎn)程接入的一種新型VPN技術(shù)。OpenVPN通過(guò)使用SSL/TLS協(xié)議,實(shí)現(xiàn)OSI 2層及3層安全網(wǎng)絡(luò)擴(kuò)展,但它與常見(jiàn)的SSL VPN只能通過(guò)瀏覽器使用不同,它適用范圍非常廣泛,包括遠(yuǎn)程訪問(wèn),站點(diǎn)到站點(diǎn)的VPN等,幾乎可以實(shí)現(xiàn)IPSec VPN的全部功能,同時(shí)它通過(guò)TLS/SSL加密保證了數(shù)據(jù)傳輸?shù)陌踩?并通過(guò)數(shù)據(jù)壓縮提高數(shù)據(jù)傳輸速度。和PPTP VPN相比,OpenVPN支持從NA T設(shè)備后的連接,并且支持H TTP代理,對(duì)動(dòng)態(tài)地址支持很好,配置簡(jiǎn)單易用,方式多樣。目前,OpenV PN提供了Window s,Solaris,Linux,BSD等多種操作系統(tǒng)的客戶端,具有較好的可移植性,遠(yuǎn)遠(yuǎn)超過(guò)了IPSec V PN實(shí)現(xiàn)對(duì)不同操作系統(tǒng)的支持[2]。因此,在本系統(tǒng)設(shè)計(jì)中,選擇了以O(shè)penVPN技術(shù)為基礎(chǔ)的VPN方案,既保證了數(shù)據(jù)的安全和數(shù)據(jù)傳輸速度,又易于安裝使用。在系統(tǒng)平臺(tái)的選擇上,客戶端和服務(wù)器端均可選用目前流行的Linux或Window s操作系統(tǒng)。
在數(shù)據(jù)傳輸?shù)倪^(guò)程中,OpenVPN使用虛擬網(wǎng)卡進(jìn)行數(shù)據(jù)傳輸,虛擬網(wǎng)卡的使用是OpenVPN實(shí)現(xiàn)其SSL VPN功能的關(guān)鍵,其使用的驅(qū)動(dòng)是Tun/tap驅(qū)動(dòng)程序。
Tun/tap驅(qū)動(dòng)程序中包含兩個(gè)部分,一部分是字符設(shè)備驅(qū)動(dòng),還有一部分是網(wǎng)卡驅(qū)動(dòng)部分。利用網(wǎng)卡驅(qū)動(dòng)部分接收來(lái)自TCP/IP協(xié)議棧的數(shù)據(jù)包并發(fā)送或者反過(guò)來(lái)將接收到的數(shù)據(jù)包傳給協(xié)議棧處理;而字符驅(qū)動(dòng)部分則將數(shù)據(jù)包在內(nèi)核與用戶空間傳送,模擬物理鏈路的數(shù)據(jù)接收和發(fā)送。Tun/tap設(shè)備提供的虛擬網(wǎng)卡驅(qū)動(dòng),從tcp/ip協(xié)議棧的角度而言,它與真實(shí)網(wǎng)卡驅(qū)動(dòng)并沒(méi)有區(qū)別。從驅(qū)動(dòng)程序的角度來(lái)說(shuō),它與真實(shí)網(wǎng)卡的不同表現(xiàn)在tun/tap設(shè)備獲取的數(shù)據(jù)不是來(lái)自物理鏈路,而是來(lái)自用戶空間,Tun/tap設(shè)備驅(qū)動(dòng)通過(guò)字符設(shè)備文件來(lái)實(shí)現(xiàn)數(shù)據(jù)從用戶區(qū)的獲取。發(fā)送數(shù)據(jù)時(shí)tun/tap設(shè)備也不是發(fā)送到物理鏈路,而是通過(guò)字符設(shè)備發(fā)送至用戶區(qū),再由用戶區(qū)程序通過(guò)其他渠道發(fā)送[3]。
Tun設(shè)備使用的模式為路由模式,如同虛擬的點(diǎn)對(duì)點(diǎn)裝置,由于連線后才決定VPN雙方的連線路徑,因此Tun驅(qū)動(dòng)所處理的是OSILayer3的工作。而Tap設(shè)備使用的模式為網(wǎng)橋模式,如同虛擬的Ethernet網(wǎng)卡,所處理的是OSILayer2的工作。
由于Tun/tap所處理的是OSILayer2和Layer3的部分,因此很容易結(jié)合上層安全機(jī)制。同時(shí)也給OpenVPN提供了建立隧道的兩種基本類型:路由IP隧道和橋接以太網(wǎng)隧道。
OpenVPN是一種基于SSL的開(kāi)源VPN技術(shù)。SSL是一個(gè)介于H TTP層及TCP層的安全協(xié)議。傳輸?shù)膬?nèi)容是經(jīng)過(guò)加密的。OpenVPN使用SSL/TLS的握手協(xié)議來(lái)完成身份認(rèn)證,在身份認(rèn)證的同時(shí),雙方也實(shí)現(xiàn)了會(huì)話密鑰的交換。
OpenVPN使用OpenSSL庫(kù)加密及驗(yàn)證,所有加密都由OpenSSL庫(kù)處理。它能夠使用任何OpenSSL支持的算法,提高連接的安全性。同時(shí)OpenSSL的硬件加速也提高了OpenVPN的性能。OpenVPN缺省采用Blow fish算法給隧道數(shù)據(jù)加密,如果想采用其他加密算法,可以在配置文件中加入--cipher選項(xiàng),如--cipher DES-EDE3-CBC將選擇Trip le-DES算法進(jìn)行加密。
OpenVPN中的會(huì)話認(rèn)證采用TLS/SSL協(xié)議中的RSA/DHE來(lái)實(shí)現(xiàn)。會(huì)話認(rèn)證的握手過(guò)程要交換4個(gè)消息(圖1)[4]。會(huì)話認(rèn)證結(jié)束后,OpenVPN就成功建立了VPN隧道。
OpenVPN所有的通信都基于一個(gè)單一的IP端口,指定給OpenVPN的官方端口為1194[2]。如果想修改端口號(hào),可以修改配置文件中port 1194語(yǔ)句,把端口號(hào)修改為所需值。默認(rèn)情況下,OpenVPN使用UDP協(xié)議,UDP效率更高,因?yàn)樗男畔㈩^更小,不包含TCP提供的那種內(nèi)建的確認(rèn)檢查信息包,不會(huì)像TCP那樣增加額外的負(fù)載,性能較好些。但它也支持TCP協(xié)議。如果防火墻阻塞UDP傳輸,就需要使用TCP協(xié)議,在配置文件中使用p roto udp語(yǔ)句。
圖1 OpenVPN會(huì)話認(rèn)證過(guò)程
VPN服務(wù)器的主要作用就是通過(guò)遠(yuǎn)程接入VPN來(lái)為遠(yuǎn)程用戶提供接入服務(wù),這需要考慮VPN服務(wù)器與防火墻的配置問(wèn)題。由于VPN服務(wù)器可以放置在網(wǎng)絡(luò)的不同位置,如可以跟防火墻并行放置,也可以放置在防火墻前端或防火墻后端等。若放在防火墻前端或后端,VPN服務(wù)器處在校園內(nèi)外數(shù)據(jù)交換的主干通道上,校園內(nèi)外網(wǎng)絡(luò)數(shù)據(jù)的交換都需要通過(guò)VPN服務(wù)器來(lái)處理,若校園內(nèi)外數(shù)據(jù)交換比較頻繁的話,則會(huì)給VPN服務(wù)器性能帶來(lái)較大的壓力。而如果將VPN服務(wù)器放置在防火墻前端,還需要更改防火墻配置,這影響了防火墻的安全保護(hù)功能。因此,在具體的設(shè)計(jì)過(guò)程中,將VPN服務(wù)器與防火墻并行,普通的內(nèi)外網(wǎng)數(shù)據(jù)交換從防火墻走,而通過(guò)VPN請(qǐng)求的數(shù)據(jù)則從VPN服務(wù)器走,以降低V PN服務(wù)器的數(shù)據(jù)處理壓力,提高VPN服務(wù)器性能。另外,在VPN服務(wù)器上進(jìn)行的訪問(wèn)規(guī)則的配置,只對(duì)VPN請(qǐng)求有效,不會(huì)影響到其它的網(wǎng)絡(luò)訪問(wèn)。具體的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖2所示。
圖2 網(wǎng)絡(luò)結(jié)構(gòu)圖
遠(yuǎn)程訪問(wèn)用戶建立VPN連接之后,防火墻的安全策略仍然對(duì)遠(yuǎn)程用戶有效,對(duì)原有的網(wǎng)絡(luò)安全沒(méi)有影響。
在VPN服務(wù)器端安裝OpenVPN軟件包,加載TUN/TAP內(nèi)核模塊。VPN Server中安裝雙網(wǎng)卡,eth0對(duì)外,IP:218.22.46.141 eth1對(duì)內(nèi),IP:192.168.0.13,內(nèi)網(wǎng)地址:192.168.0.0/16。VPN Server中安裝lzo,lzo-devel,M ysql,OpenVPN。創(chuàng)建一個(gè)tun設(shè)備,使用OpenVPN包自帶的腳本生成根證書,并生成創(chuàng)建和簽發(fā)服務(wù)器和客戶端使用的證書。
根據(jù)VPN系統(tǒng)方案的設(shè)計(jì),遠(yuǎn)程用戶通過(guò)VPN服務(wù)器,僅在訪問(wèn)校園內(nèi)網(wǎng)以及一些特殊的外部地址如圖書館萬(wàn)方數(shù)據(jù)庫(kù)鏡像資源時(shí)必須走VPN專用隧道,在服務(wù)器端配置文件中添加路由。使用Open-VPN必須修改路由表[5]。
Linux服務(wù)器端路由設(shè)置:
#push“redirect-gateway”;不重定位網(wǎng)關(guān)
push“dhcp-op tion DNS 192.168.0.1”;遠(yuǎn)程連接客戶端的域名服務(wù)由VPN服務(wù)器提供
當(dāng)客戶端連接VPN服務(wù)器時(shí),由VPN服務(wù)器為客戶端添加路由,將校園網(wǎng)IP范圍和特殊公網(wǎng)的IP范圍增加到客戶端VPN路由表中,客戶端按照此路由表進(jìn)行訪問(wèn)。路由添加如下:
push“route 192.168.0.0 255.255.0.0”;增加客戶端VPN路由-校園網(wǎng)IP范圍
push“route 210.45.242.0 255.255.255.0”;增加客戶端VPN路由-特殊的公網(wǎng)IP范圍
push“route 210.45.210.0 255.255.255.0”;增加客戶端VPN路由-特殊的公網(wǎng)IP范圍
由于已在服務(wù)器端增加了客戶端訪問(wèn)的路由,客戶端配置文件中路由可省略
Linux服務(wù)器端Ip tables訪問(wèn)規(guī)則:
-A POSTROU TING-s 10.0.0.0/255.255.255.0-o eth0-j SNA T--to-source 192.168.0.13
來(lái)自客戶端的數(shù)據(jù)路由至校園網(wǎng)
-A POSTROU TING-s 10.0.0.0/255.255.255.0-d!192.168.0.0/255.255.0.0-j MASQUERADE
目標(biāo)IP為非校園網(wǎng)的數(shù)據(jù)路由至公網(wǎng)
在選用OpenVPN技術(shù)作為VPN實(shí)現(xiàn)方面,為簡(jiǎn)化證書的管理,身份認(rèn)證方式采用的是用戶名+密碼,安裝pam_mysql-0.7RC1[2],同時(shí),Linux服務(wù)器端需要添加語(yǔ)句
數(shù)據(jù)庫(kù)采用M ysql,在數(shù)據(jù)庫(kù)服務(wù)器上創(chuàng)建數(shù)據(jù)庫(kù)表vpnuser,表結(jié)構(gòu)如圖3。編程實(shí)現(xiàn)客戶端的密碼修改及新增用戶注冊(cè)程序。
圖3 vpnuser表結(jié)構(gòu)
對(duì)于Linux客戶端,用如下命令啟動(dòng) VPN:openvpn--config client.conf
對(duì)于Window s客戶端,將OpenVPN官方網(wǎng)站中客戶端軟件下載安裝后,其自帶的GUI工具會(huì)裝在系統(tǒng)托盤里。用鼠標(biāo)右鍵單擊圖標(biāo),再點(diǎn)菜單里的connect,輸入用戶名和密碼即可。
在實(shí)驗(yàn)中,使用兩臺(tái)機(jī)器百兆物理網(wǎng)絡(luò)連接,其中一臺(tái)Pentium4 3.0GHz機(jī)器上運(yùn)行CentOS 5.2,作為OpenVPN服務(wù)器,另一臺(tái)作為客戶端。Open-VPN采用TLS協(xié)議用于密鑰交換,Blow fish算法作數(shù)據(jù)加密。實(shí)測(cè)當(dāng)走VPN隧道用FTP傳輸一個(gè)預(yù)先壓縮的大文件時(shí),收/發(fā)傳輸速度最大達(dá)到了8.8MB/s,而不走VPN服務(wù)器的最大傳輸速率為9MB/s。實(shí)驗(yàn)證明,OpenVPN的加密算法對(duì)數(shù)據(jù)傳輸?shù)挠绊懖淮?且在傳輸過(guò)程中并未出現(xiàn)掉線現(xiàn)象,性能較好。
使用OvpnVPN技術(shù)建立的VPN系統(tǒng),在調(diào)試成功并投入運(yùn)行階段后,用戶反映良好。它實(shí)用性強(qiáng),成本低,適用于中等規(guī)模的校園網(wǎng)。
[1]徐家臻,陳莘萌.基于IPSec與基于SSL的vpn的比較與分析[J].計(jì)算機(jī)工程與設(shè)計(jì),2004,25(4):586-588.
[2]OpenVPNTM 2.0 HOW TO[EB/OL].http://openvpn.net/how to.htm l.2005,Sep tember.
[3]肖凌,李之棠,梅松.一種基于虛擬網(wǎng)卡的Window sVPN體系結(jié)構(gòu)研究[J].小型微型計(jì)算機(jī)系統(tǒng),2007,28(9):1586-1590.
[4]郭學(xué)超,翟正軍.OpenVPN體系安全性研究[J].科學(xué)技術(shù)與工程,2007,7(8):1742-1745.
[5]程克勤,于博,周健,等.基于OpenVPN接入系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].廈門大學(xué)學(xué)報(bào)(自然科學(xué)版),2007,46(sup2):199-201.
Design of Campus VPN System Based on Open VPN Technology
WANG Qian
(Department of Packaging Engineering,Anhui News Publishing Vocational College,Hefei230601,China)
According to the needs of campus network security,this paper proposes the selection and design of VPN protocol which is suitable to themedium scale campus network,and discusses the implementation of the combination of the OpenVPN and firewall system.
OpenVPN;Route
TP393
A
1009-9735(2010)05-0036-03
2010-05-20
2008年安徽省教育廳自然科學(xué)基金項(xiàng)目(KJ2008B112)。
王謙(1975-),女,安徽合肥人,安徽新聞出版職業(yè)技術(shù)學(xué)院副教授,碩士,研究方向:網(wǎng)絡(luò)安全、軟件工程。