摘要:根據校園網絡資源使用特點,分析了在高校校園網內構建VPN隧道的必要性;并根據目前各種VPN實現技術的特點,闡述使用SSL VPN技術的可行性,同時使用OpenVPN軟件來構建軟件SSL環境,實現校園VPN隧道的構建。
關鍵詞:VPN隧道;資源共享;SSL;OpenVPN
OpenVPN Application And Implementation in VPN Networking within the Campus
XU Hui
(College of Information Science and Technology, Nanjing University of Aeronautics and Astronautics, Nanjing 210000, China)
Abstract: Analyze the necessity of VPN networking within the campus,and according to the technology of VPN implementation, expand the feasibility of SSL VPN. Implement VPN Networking by using OpenVPN.
Key words: VPN; resource sharing; SSL; OpenVPN
目前高校校園內的網絡資源很豐富,師生們在校園內可以方便快捷的享受校園網絡上的各種服務,例如,高校圖書館購買的維普、萬方等電子圖書數據庫資源,高校行政部門使用的辦公自動化系統,各系科使用的網上考試系統等等,通過這些網絡資源的使用,可以大大提高校園工作、學習及信息交流等方面的效率。
然而,由于這些資源屬于校園網的內部資源,并不對外開放,所以用戶只能在校園局域網內部訪問,而通過外部公用網則無法訪問,這就給身處校外的師生遠程訪問校內資源,以及多校區高校里各校區之間的資源共享帶來了很大的不便,限制了校園網中應用資源的使用范圍。
一般這種情況下,要實現合法用戶遠程訪問內部資源,或者兩個遠程局域網之間的互聯,有效可行的網絡解決方案是在內部網絡中搭建VPN(虛擬專用網絡)環境,通過VPN技術實現在公共網絡上建立虛擬的私有網絡,從而使合法用戶可以穿越公用Internet網絡訪問內部資源,這就像在公共網絡環境中建立了一條安全隧道,用戶可以通過VPN隧道傳輸私有數據,同時保證數據在公用網絡上的安全性和保密性。
1 VPN實現技術的比較
隨著技術的發展,VPN技術現可在網絡協議TCP/IP的多個層次上實現,這些實現技術各有優點及相應的使用領域。常用的VPN實現技術有基于網絡層的IPsec VPN和基于傳輸層與應用層的SSL VPN。
IPsec VPN是構建VPN的一種比較成熟的技術,采用的IPsec協議是網絡層協議,用于在通信兩端之間建立網絡層上的VPN隧道,隧道構建成功后,客戶端用戶可以安全的訪問服務器端內網中的任何資源。其優點是安全級別高,對數據的加密性能強,對用戶的合法性認證要求高,不過缺點也很明顯,由于隧道構建成功后,客戶端可以不受限制的訪問內部資源,這給服務器端的網絡安全帶來了很大的隱患,一旦客戶端有計算機感染病毒,這個病毒就會通過VPN隧道感染內部網絡上的每臺計算機;同時,IPsec VPN對客戶端要求較高,要求安裝客戶端軟件,并與服務器端一樣進行繁瑣的配置。
SSL VPN是目前比較流行的VPN技術,采用的SSL/TLS協議屬于高層安全協議,建立在應用層上,與IPsec VPN比較而言,它實現了更加細粒度化的用戶訪問控制,能夠根據客戶端的安全策略情況來決定該用戶能夠訪問哪些應用程序資源,而不是如IPsec VPN那樣對合法用戶開放所有資源,這樣即使客戶端計算機感染病毒,該病毒也只能通過VPN隧道感染一臺主機上的相應應用程序,不會對整個內部網絡造成安全隱患。同時,SSL VPN的使用也比較方便,客戶端用戶可以通過Web瀏覽器訪問VPN服務器,避免了客戶端軟件的安裝,即采用B/S訪問結構,這樣用戶就可以隨時隨地的接入公用網來訪問VPN服務器。當然,SSL VPN也有不足之處,最主要的是它的安全強度不如IPsec VPN高。
總體來說,IPsec VPN一般用于固定端點之間安全性能要求較高的VPN隧道連接,且對用戶的專業水平要求較高。而SSL VPN對客戶的要求較低,實現了瘦客戶端的模式,同時接入比較靈活。根據校園網的特點,在校園內網上構建VPN隧道實現遠程訪問,采用SSL VPN技術是合理可行的。
2 使用OpenVPN實現校園VPN構建
使用硬件設備或軟件環境都可以實現SSL VPN的構建。硬件設備是指在校園網的網絡中心采用支持VPN的路由器來做VPN網關,通過在VPN路由器上進行相關配置,從而實現VPN隧道的構建。通過VPN路由器配置實現的VPN隧道性能較高,但是需要一定的經費開銷,同時也會改變校園網絡的部分結構,因此,在低成本的前提下,比較可行的做法是通過軟件OpenVPN來實現SSL VPN。
2.1 OpenVPN軟件
OpenVPN是一款功能強大,可跨平臺(支持Win 2000/XP/2003, Linux, Mac OS X, Solaris, FreeBSD, NetBSD, 和 OpenBSD)使用的SSL VPN服務器軟件。該軟件基于開源軟件體系結構,具備SSL VPN解決方案的全部特征,支持靈活的客戶端認證方式、分組權限控制、負載平衡、容錯技術等[4],是目前一種方便、免費的VPN解決方式。通過在校園網VPN隧道的服務器端和客戶端安裝OpenVPN軟件,進行正確的配置后,就可以實現多校區之間資源共享,或者校外用戶訪問校園內部網絡資源。與使用硬件設備來實現SSL VPN不同的是,在使用OpenVPN軟件實現的情況下,客戶端用戶無法采用B/S模式直接通過瀏覽器輸入用戶名和密碼的方式來登陸VPN服務器,而是需要安裝客戶端軟件并設置配置文件,即C/S結構,這給用戶的使用帶來了不便,不過可以通過將客戶端軟件和配置文件一起打包制作成安裝包程序,用戶在客戶機上下載安裝即可使用。
在校園網絡上構建VPN,數據傳輸的安全性以及用戶的身份鑒別和訪問控制是VPN構建過程中的重點。為保證用戶數據在校園VPN隧道上傳輸的安全性與保密性,在數據傳送過程中必須進行數據加密操作,同時要對VPN用戶進行數字簽名、數字證書及密鑰等生成及管理。OpenVPN軟件可以通過使用OpenSSL庫來實現這些要求。
OpenSSL是一款使用C語言編寫的開放源代碼的軟件包,里面提供了豐富的密碼算法庫和SSL協議庫等,可以使用非對稱加密算法(RSA、DSA、ECC等)和對稱加密算法(AES、DES、RC2等)進行數據及證書密鑰加密等操作,同時OpenSSL還提供了證書密鑰管理程序,可以創建一個小型的證書管理中心(CA),來實現證書簽發的整個流程和證書管理的大部分機制。
從校園網絡構建VPN隧道的性能和代價來考慮,使用OpenVPN軟件來構建校園VPN網絡是實際可行的。
2.2 校園VPN網絡的設計與實施
校園VPN網絡的功能主要是實現主校區與分校區校園局域網間的資源共享,以及校外合法用戶可以遠程移動登陸校內資源服務器,系統結構模型如圖1所示。
在校園VPN網絡系統結構中,將主校區網絡內的一臺服務器作為VPN服務器,分校區網絡內的一臺服務器作為VPN客戶端,其他校外遠程移動用戶也作為VPN客戶端。其中處于主校區內的VPN服務器具有一個校園局域網內的IP和一個連接外網的IP;校外遠程移動用戶可以通過撥號、ADSL等方式接入因特網,具有一個靜態或動態的IP;分校區內的VPN客戶端在本校區局域網內是服務器角色,具有一個校內IP和一個外網IP,本校內網絡其他機器通過連接該服務器來使用VPN隧道服務。
系統結構搭建好后,在VPN服務器和客戶端分別安裝OpenVPN軟件,該軟件可以在http://www.openvpn.net網站上免費下載,這里我們使用2.0版本,即openvpn-2.0.9-install.exe,將軟件按默認設置安裝后,系統會增加一個TAP-Win32 Adapter V8的虛擬網卡,在目前無VPN連接時狀態是斷開的。
要使當前VPN網絡可用,需要進行一系列的配置。使用OpenVPN軟件可以配置兩種安全模式下的SSL,分別是靜態密鑰方式、基于使用SSL/TLS協議的RSA證書和密鑰方式。前者配置簡單,無需維護密鑰證書,但限制了用戶數量,只支持一對一的連接方式,而且客戶端必須預先部署靜態密鑰,安全性不夠高;后者則保證了安全性,但需要額外維護密鑰證書,相對前者配置比較復雜。[5]在實際使用環境中,一般使用RSA證書和密鑰的方式進行安全認證。
配置過程主要分為安全認證中心(CA)、服務器端及客戶端配置。安全認證中心的作用主要是驗證客戶端和服務器端的合法身份信息,負責用戶證書和加密密鑰的分發與管理。在系統規模比較大時,可以將安全認證模塊獨立于VPN服務器,放置在可信任的第三方機器上,作為認證服務器。本系統將安全認證中心直接設置在VPN服務器端,因此只需在服務器端和客戶端進行配置。
1) 生成CA的密鑰和證書
首先進行系統初始化。在服務器端,選擇“開始”->“運行”,輸入“cmd”命令,打開命令行界面,進入目錄“c:\\program files\\openvpn\\easy-rsa”,分別運行init-config.bat、vars.bat和clean-all.bat,界面如圖2所示。
其次生成CA的密鑰(ca.key)和證書(ca.crt)。在當前目錄下運行build-ca.bat,輸入認證中心相關信息,界面如圖3所示。
由于系統采用的SSL VPN技術是基于SSL/TLS協議的,所以認證中心除了ca.key和ca.crt外,還需要dh1024.pem文件,這是服務器使用TLS協議必需的一個文件。在當前目錄下運行build-dh.bat,界面如圖4所示。
CA的密鑰和證書制作好后,在目錄“c:\\program files\\openvpn\\easy-rsa\\keys”下會生成三個文件:ca.key、ca.crt和dh1024.pem。下面要分別制作服務器端和客戶端的密鑰證書。
2) 生成服務器端的密鑰和證書
為了配置VPN服務器,這里將服務器稱為VPNSever。在服務器端的指定目錄下運行build-key-server.bat VPNSever,輸入相關信息,界面如圖5所示。
輸入相關信息后,屏幕彈出確認信息,輸入“y”即可,如圖6所示。
圖6
服務器端的密鑰和證書制作好后,在目錄“c:\\program files\\openvpn\\easy-rsa\\keys”下會生成三個文件:VPNSever.key和VPNSever.crt和VPNSever.csr。
3) 生成客戶端的密鑰和證書
為了配置VPN客戶端,這里將某個客戶端稱為VPNClient01。在服務器端指定目錄下運行build-key.bat VPNClient01,參照服務器端配置方法輸入相關信息,并確認后,界面如圖7所示。
客戶端的密鑰和證書制作好后,在目錄“c:\\program files\\openvpn\\easy-rsa\\keys”下會生成三個文件:VPNClient01.key和VPNClient01.crt和VPNClient01.csr。參照該操作,還可以生成其他客戶端密鑰證書,如VPNClient02、VPNClient03等,需要注意的是客戶端命名不能重復。
4) 生成服務器配置文件
OpenVPN的工作方式與性能由配置文件決定,這類文件的編寫很重要。這里將服務器端的配置文件命名為server.ovpn,并存放在服務器端的“c:\\program files\\openvpn\\config\\”目錄下,文件內容參考如下,其中#為注釋內容:
port 443#端口號,可修改
proto tcp #通過tcp協議連接
dev tap #在Windows環境下的配置,在Linux環境下配置為dev tun
ca \"c:\\\\program files\\\\openvpn\\\\easy-rsa\\\\keys\\\\ca.crt\"
#CA證書存放位置,可修改
cert \"c:\\\\program files\\\\openvpn\\\\easy-rsa\\\\keys\\\\VPNSever.crt\"
#服務器證書存放位置
key \"c:\\\\program files\\\\openvpn\\\\easy-rsa\\\\keys\\\\VPNSever.key\"
#服務器密鑰存放位置
dh \"c:\\\\program files\\\\openvpn\\\\easy-rsa\\\\keys\\\\dh1024.pem\"
#dh1024.pem存放位置
local 172.16.5.23#當前VPN服務器的外部IP,根據實際情況修改
server 10.8.0.0 255.255.255.0
# 虛擬局域網網段設置,可修改
push \"route 0.0.0.00.0.0.0\" #表示客戶端通過VPN 服務器上網
ifconfig-pool-persist ipp.txt
keepalive 10 120
mode server
tls-server
status \"c:\\\\program files\\\\openvpn\\\\log\\\\openvpn-status.log\"
#LOG記錄文件存放位置,
comp-lzo
verb 3
5) 生成客戶端配置文件
在客戶端使用VPN隧道,首先需要從服務器端索取密鑰和證書,即將服務器端生成的ca.crt、VPNClient01.key和VPNClient01.crt分別復制放置在客戶端機器的“c:\\program files\\openvpn\\easy-rsa\\keys”目錄下。
將客戶端的配置文件命名為client.ovpn,并存放在客戶端的“c:\\program files\\openvpn\\config\\”目錄下,文件內容參考如下:
client
dev tap
proto tcp-client
remote 172.16.5.23443 #VPN服務器IP及端口
resolv-retry infinite
nobind
mute-replay-warnings
ca \"c:\\\\program files\\\\openvpn\\\\easy-rsa\\\\keys\\\\ca.crt \"
cert \"c:\\\\program files\\\\openvpn\\\\easy-rsa\\\\keys\\\\VPNClient01.crt\"
key \"c:\\\\program files\\\\openvpn\\\\easy-rsa\\\\keys\\\\VPNClient01.key\"
comp-lzo
verb 3
status\"c:\\\\program files\\\\openvpn\\\\log\\\\openvpn-status.log\"\"
2.3 測試VPN環境
以上安裝配置完成后,可以在客戶端和服務器端測試VPN隧道連接情況。分別在服務器端和客戶端運行配置文件,運行方法有多種,比如分別在配置文件server.ovpn和client.ovpn圖標上,點擊鼠標右鍵,在彈出的菜單中選擇“start openvpn on this config file”,運行成功后,會發現先前處于斷開狀態的虛擬網卡 “TAP-Win32 Adapter V8” 變為已連接狀態。
要判斷VPN客戶機和VPN服務器是否連通,最簡單的測試方法是使用ping命令。首先在客戶端命令行中執行命令“ipconfig”,會看到當前機器上虛擬網卡的IP設置,如圖8所示,當前客戶端的虛擬IP是10.8.0.3。
由于當前VPN服務器端網關為10.8.0.1,在客戶端執行命令“ping 10.8.0.1”,連接遠程VPN服務器網關,得到如圖9所示的數據包回應,說明VPN隧道構建成功。
3 總結
通過在校園網絡環境中構建VPN隧道,可以擴展校園資源的使用范圍,使遠程移動用戶或分校區內用戶可以隨時隨地方便的通過公用網絡環境連接校園內部網絡,訪問相關資源,同時保證用戶數據在公用網絡中傳輸的安全性和保密性,并對用戶進行嚴格的訪問控制,確保校園內部網絡的安全。
本文闡述了使用OpenVPN軟件實現SSL VPN技術的方法,在VPN服務器和遠程VPN客戶端構建VPN隧道,通過路由設置,用戶可以通過VPN客戶端根據訪問控制規則來訪問VPN服務器所在局域網內的WEB服務器、文件服務器及應用程序等資源。
參考文獻:
[1] 徐家臻,陳莘萌.基于IPSec與基于SSL的VPN的比較與分析[J].計算機工程與設計,2004(4).
[2] 馬淑文.SSL VPN技術在校園網中的應用與研究[J].計算機工程與設計,2007(21).
[3] 李毅.基于SSL VPN實現遠程快速安全訪問校園網[J].中國教育信息化,2007(3).
[4] 郭學超,翟正軍.OpenVPN體系安全性研究[J].科學技術與工程,2007(7).
[5] Open Source Project[EB/OL].http://www.openvpn.net/index.php/open-source.html.
[6] OpenVPN HOWTO[EB/OL].http://www.openvpn.net/index.php/access-server/howto-openvpn-as.html.