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