蘇翔宇(深圳技師學院,深圳 518116)
基于Linux的L2TP VPN over IPSec研究與實現(xiàn)
蘇翔宇
(深圳技師學院,深圳 518116)
隨著互聯(lián)網技術的迅猛發(fā)展,網絡安全問題也日益突顯,如何讓企業(yè)網絡的通信變得更安全呢?傳統(tǒng)的方法無非是通過使用調制解調器撥號或是幀中繼等,雖然都可以從不同程度上提高網絡上數據傳輸的安全,但從方便經濟和安全性角度綜合考慮,這些方法和使用VPN的效果比起來都相去甚遠??墒呛靡稽c的商業(yè)版VPN設備動輒十幾萬甚至幾十萬,如果使用VPN的人數很多,這些VPN的授權費用更是一般中小企業(yè)無法負擔的。其實通過開源組織志愿者的努力,用戶已經可以免費的使用到這種VPN服務了,這就是由開源操作系統(tǒng)翹楚Linux提供的,其安全性、穩(wěn)定性及運行效率更是大多數商用VPN系統(tǒng)所望塵莫及的。
1.1VPN的由來
在當今社會,公司在不同地區(qū)設置總部和分支機構的情況非常普遍,為了實現(xiàn)公司的部門之間通過公用網絡進行遠程訪問,傳統(tǒng)的做法是租用DDN專線或是幀中繼,這樣雖然可以保證通信帶寬,但必然會產生高額的費用。
VPN(Virtual Private Network)即“虛擬專用網絡”,可以在公用網絡上架設專用網絡,在發(fā)送方對數據進行加密,通過公用的網絡線路傳輸數據,再將數據在接收方解密。VPN可以幫助外網客戶端、公司分支機構、供應商等與公司內部網絡建立方便快捷的專用網絡連接,在大幅度降低通信成本的同時,還有效地保證了數據在傳輸環(huán)節(jié)上的安全性。
1.2VPN的應用領域
VPN的架構大體可分為Client to Site(點到站點)和Site to Site(站點到站點)兩種。Client to Site的VPN主要是解決位于互聯(lián)網上的客戶端(如公司出差員工)通過公共網絡訪問公司內部網絡資源的問題;Site to Site的VPN主要是解決位于不同地理位置的公司總部和分支機構之間的網絡資源互訪問題。
除了以上兩種功能之外,VPN還提供了更為安全的通信環(huán)境,與一般的應用層加密機制相比,VPN是工作于網絡層偏下的應用,IP上的協(xié)議都可以使用VPN加密保護,不像應用層加密只能針對特定的應用層協(xié)議。
目前普遍使用的VPN協(xié)議主要有SSL VPN、PPTP VPN、IPSec VPN、L2TP VPN等,其中又以IPSec VPN 和L2TP VPN最為流行。與IPSec VPN等其他幾種協(xié)議相比,L2TP(Layer 2 Tunneling Protocol)最大的優(yōu)勢就在于其簡便性。當前市場上的各大操作系統(tǒng)中,如Windows、Linux及Mac OS等,都已經內置了L2TP連接功能,移動終端操作系統(tǒng)iOS、Android等也能很好地支持L2TP協(xié)議,用戶只需要將撥號網絡設置好,并在需要訪問企業(yè)內部數據時啟用L2TP撥號功能,就可以輕松通過L2TP對企業(yè)建立VPN連接。但美中不足的是L2TP協(xié)議自身沒有考慮安全問題,因此通常會在客戶端主機與L2TP服務器之間建立傳輸模式的IPSec來保護數據傳輸安全,集簡便性、通用性、安全性于一身,這就是所謂的“L2TP VPN over IPSec”,其主要應用領域是解決Client to Site架構VPN的搭建。
下面就以圖1為例基于Linux來構建L2TP VPN over IPSec實施方案。L2TP服務器公網接口eth0上的IP是10.0.1.100,內網接口eth1上的IP是192.168.0.100,另外企業(yè)內部的文件服務器 IP是192.168.0.10??蛻舳瞬捎脛討B(tài)IP通過公共網絡可與L2TP服務器公網IP10.0.1.100正常通信。
(1)L2TP服務器配置
XL2TPD是Linux下一款功能強大的開源L2TP服務器軟件,本例對其配置文件/etc/xl2tpd/xl2tpd.conf設置如下:
其中ip range參數定義了L2TP服務器分配的客戶端IP地址范圍,name參數為服務設置了一個名稱,該名稱會在賬戶數據庫中使用,pppoptfile參數指定XL2TPD調用的PPP配置文件的路徑。
(2)PPP服務器配置
本例PPP服務器按照XL2TPD指定的配置文件/ etc/ppp/options.xl2tpd設置如下:
其中proxyarp表示啟用ProxyARP機制,參數mswins和參數ms-dns表示分別將企業(yè)內部的Windows服務器IP和DNS服務器IP配置到VPN客戶端的網絡參數中。
(3)建立VPN撥號賬戶
在L2TP VPN架構中,使用者的身份驗證由PPP協(xié)議來完成,其驗證方法主要有PAP、CHAP、MSCHAP 及MSCHAP-V2等。因為PAP使用明文方式驗證,在網絡上直接傳輸密碼,并無任何保護措施,所以這里采用其余的三種方法之一來完成驗證,賬戶數據庫文件均是/etc/ppp/chap-secrets,本例將其設置如下:
圖1 L2TP VPN over IPSec部署實例
(3)證書的生成及保存
本例使用OpenSSL配置企業(yè)CA(證書管理中心),由L2TP服務器和客戶端主機分別向CA提交證書申請單newreq.pem,CA進行證書的審核和簽發(fā),如表1所示將各自的證書、私鑰、CA的證書和證書作廢清單分別發(fā)送給L2TP服務器和客戶端。接著,L2TP服務器和客戶端主機將這些文件復制到/etc/racoon/certs目錄下,然后為cacert.pem和crl.pem兩個文件生成hash link(硬鏈接),以便racoon查找之用。
表1 所需的證書文件列表
(4)配置安全策略
本例中L2TP服務器的安全策略配置文件/etc/rac鄄coon/setkey.conf設置如下:
其中設定凡是從L2TP服務器端口1701發(fā)出的數據包,無論目標地址和端口,全部經由IPSec。
因為L2TP客戶端的IP通常不是固定的,所以這里無法預先設置雙向安全策略,只能設置單向安全策略,但安全策略一定要定義雙向的,才能使L2TP VPN over IPSec正常工作。解決這個問題的辦法是在IKE配置文件中將generate_policy參數設為“on”,IKE就會自動生成另一個方向的安全策略。
(6)IKE配置文件
本例中使用 ipsec-tools將 IKE配置文件/etc/ racoon/racoon.conf設置如下:
其中指定了X.509 Certificates驗證模式中證書的保存位置,設置exchange_mode參數為main是選擇了更安全的數據交換模式。
(7)Netfilter/iptables防火墻配置
通常情況下,企業(yè)內部網絡與外網之間會設置防火墻,本例中為了保證合法的VPN通信的數據包可以順利地進出防火墻,使用iptables工具在Linux的防火墻Netfilter中添加如下規(guī)則:
其中在filter表INPUT鏈中,添加規(guī)則允許訪問與VPN服務相關的udp端口1701、500、4500。
(2)L2TP客戶端配置
L2TP客戶端主機向CA提交證書申請單,由CA審核頒發(fā)證書,將CA發(fā)送來的證書和私鑰文件復制到/etc/racoon/certs目錄下,然后為cacert.pem和crl.pem兩個文件生成hash link即可。
3.1Windows 平臺L2TP客戶端不支持Linux 證書及私鑰文件格式
本例中如果L2TP客戶端使用的是Windows操作系統(tǒng),其收到由Linux CA頒發(fā)的證書(如client.pem和client.key)的文件格式必須轉換成PKCS12才能被支持,所以需要進行如下操作。
3.2IPSen連接穿透NAT的問題
IPSec數據包在穿越防火墻NAT時,由于NAT機制會修改數據包的IP及TCP或UDP包頭內容,而IPSec在逐一檢查數據包時,一旦數據包內容有變動,就會丟棄數據包以保證安全性,這就使得IPSec數據包無法穿越NAT。解決這一問題的方法是使用 “NATTraversal”功能,簡稱NAT-T,NAT-T可以在ESP和IP包頭之間增加一個UDP包頭,當IPSec數據包穿越NAT時,NAT可以修改IP包頭及UDP包頭內容,但IPSec數據包接收端并不會檢查IP包頭及UDP包頭內容,從而得以穿越。
Linux提供的功能強大的VPN組件使得用戶不再需要購買價格昂貴的商用VPN設備和系統(tǒng),僅需利用一整套開源工具就可以部署安全易用的VPN服務和應用,且穩(wěn)定性和效率也毫不遜色。本文的研究就是致力于為中小企業(yè)和學校、社會團體等非營利組織提供高效快捷的較為通用的VPN實施方案。
[1]陳勇勛.Linux網絡安全技術與實現(xiàn)(第2版).北京:清華大學出版社,2012.
[2]潘理,楊宇航,顧尚杰.一個基于IP的VPN安全機制[J].計算機工程,2005:34-52.
[3]孟掛娥,熊云鳳,楊宇航.基于PKI的IPSec-VPN網關的設計與實現(xiàn)[J].計算機工程,2001:102-104. [4]陳濤.2005.基于工作組的IPSec安全策略系統(tǒng)設計與實現(xiàn)[碩士論文].西安:西北工業(yè)大學.
VPN(Virtual Private Network);IKE(Internet Key Exchange);Certificate
Research and Implementation of L2TP VPN over IPSec Based on Linux
SU Xiang-yu
(Shenzhen Institute of Technology,Shenzhen 518116)
1007-1423(2016)06-0093-04
10.3969/j.issn.1007-1423.2016.06.022
蘇翔宇(1981-),男,天津人,碩士,講師,研究方向為計算機網絡應用
2015-12-15
2016-01-10
分析VPN的應用領域及其相對于傳統(tǒng)網絡的優(yōu)勢,接著提出一個切實可行的在Linux下構建L2TP VPN over IPSec的實施方案,總結實施方案中可能會遇到的問題并給出具體的解決辦法。此研究可以為企業(yè)在Linux下構建安全可靠的VPN提供借鑒和依據。
虛擬專用網;因特網密鑰交換協(xié)議;證書
Analyzes the application fields of VPN,and its advantages comparing to traditional network,puts forward a feasible solution of building L2TP VPN over IPSec in Linux through specific case analysis,and discusses the problems during the implement and also the solution. This research can provide reference and basis for the enterprise in construction of VPN in Linux.