一、Linux下的主要VPN技術(shù)
1、 IPSec(Internet Protocol Security)
IPSec是IETF(Internet Engineer Task Force)正在完善的安全標準,它把幾種安全技術(shù)結(jié)合在一起形成一個較為完整的體系,受到了眾多廠商的關(guān)注和支持。通過對數(shù)據(jù)加密、認證、完整性檢查來保證數(shù)據(jù)傳輸?shù)目煽啃浴⑺接行院捅C苄浴?/p>
優(yōu)點:它定義了一套用于認證、保護私有性和完整性的標準協(xié)議。 IPSec支持一系列加密算法如DES、三重DES、IDEA。它檢查傳輸?shù)臄?shù)據(jù)包的完整性,以確保數(shù)據(jù)沒有被修改。IPSec用來在多個防火墻和服務器之間提供安全性。IPSec可確保運行在TCP/IP協(xié)議上的VPNs之間的互操作性。
缺點:IPSec在客戶機/服務器模式下實現(xiàn)有一些問題,在實際應用中,需要公鑰來完成。IPSec需要已知范圍的IP地址或固定范圍的IP地址,因此在動態(tài)分配IP地址時不太適合于IPSec。除了TCP/IP協(xié)議外,IPSec不支持其他協(xié)議。另外配置比較復雜。
Linux實現(xiàn)使用IPSec的軟件是:Free S/WAN
http://www.freeswan.org/。FreeS/WAN不支持NAT(Network Address Translation,網(wǎng)絡地址翻譯)和IP地址偽裝用于加密通道通信。
2、 PPP OVER SSH
SSH一種基于安全會話目的的應用程序。SSH支持身份認證和數(shù)據(jù)加密,對所有傳輸?shù)臄?shù)據(jù)進行加密處理。同時,可以對傳輸數(shù)據(jù)進行壓縮處理,以加快數(shù)據(jù)傳輸速度。SSH既可以代替Telnet作為安全的遠程登錄方式,又可以為FTP、POP等提供一個安全的“隧道”。OpenSSH是SSH的替代軟件包,是免費的。用PPP端口在SSH上運行技術(shù)實現(xiàn)VPN的方法。優(yōu)點:安裝配置簡單。缺點:運行時系統(tǒng)開銷比較大。PPP OVER SSH具體應用軟件有SSHVNC(http://3sp.com/products/sshtools/sshvnc/sshvnc.php)
3、 CIPE : Crypto IP Encapsulation
CIPE (加密 IP 封裝)是主要為 Linux 而開發(fā)的 VPN
實現(xiàn)。CIPE 使用加密的 IP 分組,這些分組被封裝或“包圍”在數(shù)據(jù)報(UDP)分組中。CIPE 分組被給以目標頭信息,并使用默認的CIPE 加密機制來加密。CIPE 使用標準的 Blowfish 或 IDEA加密算法來支持加密。根據(jù)你所在國家的加密出口法規(guī)而定,你可以使用默認方法(Blowfish)來加密你的專用網(wǎng)上的所有 CIPE 交通。CIPE配置可以通過文本文件、圖形化的網(wǎng)絡管理工具來完成。用CIPE技術(shù)實現(xiàn)VPN的方法,優(yōu)點:安裝配置簡單,運行時系統(tǒng)開銷比較小。缺點:CIPE不是一種標準VPN協(xié)議,不能支持所有平臺。CIPE網(wǎng)址:http://sites.inka.de/
~
4.SSL VPN
IPSec VPN和SSL VPN是兩種不同的VPN架構(gòu),IPSec VPN是工作在網(wǎng)絡層的,提供所有在網(wǎng)絡層上的數(shù)據(jù)保護和透明的安全通信,而SSL VPN是工作在應用層(基于HTTP協(xié)議)和TCP層之間的,從整體的安全等級來看,兩者都能夠提供安全的遠程接入。但是,IPSecVPN技術(shù)是被設計用于連接和保護在信任網(wǎng)絡中的數(shù)據(jù)流,因此更適合為不同的網(wǎng)絡提供通信安全保障,而SSLVPN因為以下的技術(shù)特點則更適合應用于遠程分散移動用戶的安全接入。OpenVPN 是一個基于 OpenSSL 庫的應用層 VPN實現(xiàn)。詳細信息可以參考http://www.openvpn.net。
OpenVPN優(yōu)點: 支持多種常用應用系統(tǒng)。目前版本支持Linux, Windows
2000/XP and higher, OpenBSD, FreeBSD, NetBSD, Mac OS X, and Solaris 。
支持多種客戶端連接模式。可以通過GUI 便捷的操作OpenVPN 工作在OSI layer 2 或 3 使用標準的SL/TLS 協(xié)議, 可以通過certificates 或smart cards 認證。 加密強度較高,不易在傳輸通路上被人劫持破解信息資訊。
OpenVPN缺點:使用SSL 應用層加密,傳輸效率要低于IPSEC 傳輸?shù)腣PN 軟件
5.PPPTD
點對點隧道協(xié)議(PPTP)是一種支持多協(xié)議虛擬專用網(wǎng)絡的網(wǎng)絡技術(shù)。
PPTP 可以用于在 IP 網(wǎng)絡上建立 PPP 會話隧道。在這種配置下,PPTP 隧道和 PPP 會話運行在兩個相同的機器上,呼叫方充當PNS。PPTP 使用客戶機-服務器結(jié)構(gòu)來分離當前網(wǎng)絡訪問服務器具備的一些功能并支持虛擬專用網(wǎng)絡。PPTP作為一個呼叫控制和管理協(xié)議,它允許服務器控制來自 PSTN 或 ISDN 的撥入電路交換呼叫訪問并初始化外部電路交換連接。PPTP 只能通過PAC 和 PNS 來實施,其它系統(tǒng)沒有必要知道 PPTP。撥號網(wǎng)絡可與 PAC 相連接而無需知道 PPTP。標準的 PPP客戶機軟件可繼續(xù)在隧道 PPP 鏈接上操作。PPTP 使用 GRE 的擴展版本來傳輸用戶 PPP 包。這些增強允許為在 PAC 和 PNS之間傳輸用戶數(shù)據(jù)的隧道提供低層擁塞控制和流控制。這種機制允許高效使用隧道可用帶寬并且避免了不必要的重發(fā)和緩沖區(qū)溢出。PPTP沒有規(guī)定特定的算法用于低層控制,但它確實定義了一些通信參數(shù)來支持這樣的算法工作。
PPTP相對其他遠程“撥入”型VPN的不凡之處在于微軟Windows(95/98/Me/NT/2000/XP/Vista)擁有一個內(nèi)置的PPTP客戶端,這意味著管理員不必涉及任何額外的客戶端軟件以及那些通常伴隨出現(xiàn)的問題。Linux PPTP服務器實現(xiàn)的軟件是:poptop(http://www.poptop.org/)開源PPTP服務器產(chǎn)品Poptop特性為:
微軟兼容的認證和加密(MSCHAPv2,MPPE40-128位RC4加密) 。
支持多個客戶端連接 。
使用RADIUS插件無縫集成到一個微軟網(wǎng)絡環(huán)境中 。
和Windows 95/98/Me/NT/2000/XP PPTP客戶端共同工作 。
和Linux PPTP客戶端共同工作 。
Poptop在GNU通用公共許可下是,并仍將是完全免費。
下面分別介紹基于以上技術(shù)的VPN在Linux下的實現(xiàn):
第一部分 建立Linux下的VPN-CIPE
一、CIPE概述
人們目前已經(jīng)開發(fā)出了很多種VPN程序,這里介紹的最容易安裝的VPN軟件之一:CIPE。VPN是由經(jīng)過相互授權(quán)的通信雙方在公網(wǎng)上建立的安全通信隧道,數(shù)據(jù)在隧道中進行加密傳輸,用于總部與分支機構(gòu)的安全通信。虛擬專用網(wǎng)絡是一種新的網(wǎng)絡技術(shù),用于跨過 Internet或局域網(wǎng)而安全地訪問企業(yè)網(wǎng)。CIPE 是主要為 Linux 而開發(fā)的 VPN 實現(xiàn)。CIPE 使用加密的 IP分組,這些分組被封裝或“包圍”在數(shù)據(jù)報(UDP)分組中。CIPE 分組被給以目標頭信息,并使用默認的 CIPE加密機制來加密。然后,這些分組再通過 CIPE 虛擬網(wǎng)絡設備(cipcbx)和 IP 層,以及通訊公司的網(wǎng)絡被作為 UDP 分組傳輸給預想中的遠程節(jié)點。CIPE網(wǎng)絡模型如圖-1。
圖-1 CIPE VPN網(wǎng)絡模型
CIPE 是Linux 網(wǎng)絡管理員和系統(tǒng)管理員的明智選擇,其原因如下:
CIPE 被包括在紅帽企業(yè) Linux 中,因此所有你想連接到你的內(nèi)聯(lián)網(wǎng)的紅帽企業(yè) Linux 邊緣機器(如防火墻和網(wǎng)關(guān)機器)和個體客戶機器上都可以利用它。Redhat Linux 還包括支持 CIPE 的加密術(shù)。
CIPE 使用標準的 Blowfish 或 IDEA 加密算法來支持加密。根據(jù)你所在國家的加密出口法規(guī)而定,你可以使用默認方法(Blowfish)來加密你的專用網(wǎng)上的所有 CIPE 交通。
因為 CIPE 是基于軟件的,只要運行紅帽企業(yè) Linux,任何一個較老的或閑置的機器都可以充當 CIPE 網(wǎng)關(guān),所以你不必購買昂貴的專用 VPN硬件來安全地連接兩個局域網(wǎng),從而給機構(gòu)節(jié)省資金。
CIPE 被積極開發(fā)來與 iptables、ipchains、以及其它基于規(guī)則的防火墻一起使用。要和現(xiàn)存的防火墻規(guī)則共同存在,只需要讓對端接受進入的 CIPE UDP 分組就可以了。
CIPE 配置是通過文本文件來完成的。這使管理員不必使用通過網(wǎng)絡運行效果不佳的圖形化工具來遠程地配置 CIPE服務器和客戶。CIPE 還可以使用網(wǎng)絡管理工具來配置。
CIPE軟件在Redhat Linux 9.0 - Red Hat Enterprise Linux AS 3.0的安裝光盤里都可以找到它。安裝CIPE的辦法有兩種:一是從安裝光盤來安裝它,二是從CIPE軟件的官方主頁linux">http://sourceforge.net/projects/cipe-linux下載;下面筆者分別介紹。
二、使用在Redhat Linux 9.0 網(wǎng)絡管理工具來配置CIPE VPN
1.服務器端配置
點擊“主選單”-“系統(tǒng)配置”-“網(wǎng)絡配置”-“新建”-“CIPE(VPN)連接”進行VPN隧道配置。見圖-2。
圖-2 CIPE服務器端配置
最后點擊“生成”按鈕產(chǎn)生一個128位(32個16進制數(shù))的密匙,接著點擊確定按鈕。最后選擇“當計算機啟動時激活該設備”。CIPE在服務器端配置見表-1:
表-1 CIPE服務器端設定
點擊“前進”按鈕繼續(xù)查看匯總信息見圖-3。
圖-3 CIPE 信息匯總
激活CIPE連接見圖-4。
圖-4 激活CIPE連接
下面還要作三項工作:
(1)使系統(tǒng)支持IP轉(zhuǎn)發(fā),使用命令: /sbin/sysctl –w net.ipv4.ip_forward=1
(2)添加路由:route add -net 192.168.1.3 netmask 255.255.255.0 gw 192.168.1.9
(3)打開防火墻的CIPE端口7777
2.CIPE客戶機配置
由于CIPE要求服務器和客戶機的密匙完全相同所以,首先將密匙文件:options.cipcb從服務器復制到客戶機主機的/etc/cipe/ 目錄中。
# scp
root@192.168.0.3:/etc/cipe/options.cipcb0
/etc/cipe/options.cipcb0
Are you sure you want to continue connec
ting (yes/no)? yes
Warning: Permanently added '192.168.0.3' (RSA) to the list of known hosts.
root@192.168.0.3's
password:
options.cipcb0
100% |***************************************|
61 00:00
CIPE這個軟件在服務器端和客戶機使用相同的界面。方法和服務器端配置一樣,見圖-5。
圖-5 CIPE客戶機配置界面
接著點擊“前進”按鈕。客戶機配置結(jié)束。
3.使用CIPE網(wǎng)絡接口連接VPN服務器
在客戶機進行連接測試,首先使用命令察看網(wǎng)絡接口:
# ifconfig -cipcb0
cipcb0 Link encap:IPIP Tunnel HWaddr
inet addr:10.0.0.2 P-t-P:10.0.0.1 Mask:255.255.255.255
POINTOPOINT NOTRAILERS RUNNING NOARP MTU:1442 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
此時客戶機的cipcb0沒有激活,使用命令激活cipcb0,然后察看路由表:
#ifup cipcb0
#route
Kernel IP routing table
Destin
ati
on
Gateway
Genmask Flags Metric
Ref Use Iface
10.0.0.1
*
255.255.255.255 UH 0
0 0 cipcb0
192.168.1.0
*
255.255.255.0 U
0
0 0 eth0
127.0.0.0
*
255.0.0.0 U
0
0 0 lo
default
192.168.1.1
0.0.0.0
UG 0
0 0 eth0
可以看到VPN端口已經(jīng)打開,路由表中包括CIPE服務器的遠程虛擬地址。下面使用ping命令連接CIPE服務器的虛擬地址(10.0.0.1)進行測試。
#ping -c 4 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.681 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.341 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=0.080 ms
64 bytes from 10.0.0.1: icmp_seq=4 ttl=64 time=0.094 ms
--- 10.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3013ms
rtt min/avg/max/mdev = 0.080/0.299/0.681/0.243 ms
VPN連接完成。下面斷開VPN連接,使用命令:“ifdown cipcb0”然后察看路由表:
#ifdown cipcb0
#route
Kernel IP routing table
Destination
Gateway
Genmask Flags Metric
Ref Use Iface
192.168.0.0
*
255.255.255.0 U
0
0 0 eth0
127.0.0.0
*
255.0.0.0 U
0
0 0 lo
錄由表的10.0.0.1已經(jīng)清除。