一、Linux下的主要VPN技術
1、 IPSec(Internet Protocol Security)
IPSec是IETF(Internet Engineer Task Force)正在完善的安全標準,它把幾種安全技術結合在一起形成一個較為完整的體系,受到了眾多廠商的關注和支持。通過對數據加密、認證、完整性檢查來保證數據傳輸的可靠性、私有性和保密性。
優點:它定義了一套用于認證、保護私有性和完整性的標準協議。 IPSec支持一系列加密算法如DES、三重DES、IDEA。它檢查傳輸的數據包的完整性,以確保數據沒有被修改。IPSec用來在多個防火墻和服務器之間提供安全性。IPSec可確保運行在TCP/IP協議上的VPNs之間的互操作性。
缺點:IPSec在客戶機/服務器模式下實現有一些問題,在實際應用中,需要公鑰來完成。IPSec需要已知范圍的IP地址或固定范圍的IP地址,因此在動態分配IP地址時不太適合于IPSec。除了TCP/IP協議外,IPSec不支持其他協議。另外配置比較復雜。
Linux實現使用IPSec的軟件是:Free S/WAN
http://www.freeswan.org/。FreeS/WAN不支持NAT(Network Address Translation,網絡地址翻譯)和IP地址偽裝用于加密通道通信。
2、 PPP OVER SSH
SSH一種基于安全會話目的的應用程序。SSH支持身份認證和數據加密,對所有傳輸的數據進行加密處理。同時,可以對傳輸數據進行壓縮處理,以加快數據傳輸速度。SSH既可以代替Telnet作為安全的遠程登錄方式,又可以為FTP、POP等提供一個安全的“隧道”。OpenSSH是SSH的替代軟件包,是免費的。用PPP端口在SSH上運行技術實現VPN的方法。優點:安裝配置簡單。缺點:運行時系統開銷比較大。PPP OVER SSH具體應用軟件有SSHVNC(http://3sp.com/products/sshtools/sshvnc/sshvnc.php)
3、 CIPE : Crypto IP Encapsulation
CIPE (加密 IP 封裝)是主要為 Linux 而開發的 VPN
實現。CIPE 使用加密的 IP 分組,這些分組被封裝或“包圍”在數據報(UDP)分組中。CIPE 分組被給以目標頭信息,并使用默認的CIPE 加密機制來加密。CIPE 使用標準的 Blowfish 或 IDEA加密算法來支持加密。根據你所在國家的加密出口法規而定,你可以使用默認方法(Blowfish)來加密你的專用網上的所有 CIPE 交通。CIPE配置可以通過文本文件、圖形化的網絡管理工具來完成。用CIPE技術實現VPN的方法,優點:安裝配置簡單,運行時系統開銷比較小。缺點:CIPE不是一種標準VPN協議,不能支持所有平臺。CIPE網址:http://sites.inka.de/
~
4.SSL VPN
IPSec VPN和SSL VPN是兩種不同的VPN架構,IPSec VPN是工作在網絡層的,提供所有在網絡層上的數據保護和透明的安全通信,而SSL VPN是工作在應用層(基于HTTP協議)和TCP層之間的,從整體的安全等級來看,兩者都能夠提供安全的遠程接入。但是,IPSecVPN技術是被設計用于連接和保護在信任網絡中的數據流,因此更適合為不同的網絡提供通信安全保障,而SSLVPN因為以下的技術特點則更適合應用于遠程分散移動用戶的安全接入。OpenVPN 是一個基于 OpenSSL 庫的應用層 VPN實現。詳細信息可以參考http://www.openvpn.net。
OpenVPN優點: 支持多種常用應用系統。目前版本支持Linux, Windows
2000/XP and higher, OpenBSD, FreeBSD, NetBSD, Mac OS X, and Solaris 。
支持多種客戶端連接模式。可以通過GUI 便捷的操作OpenVPN 工作在OSI layer 2 或 3 使用標準的SL/TLS 協議, 可以通過certificates 或smart cards 認證。 加密強度較高,不易在傳輸通路上被人劫持破解信息資訊。
OpenVPN缺點:使用SSL 應用層加密,傳輸效率要低于IPSEC 傳輸的VPN 軟件
5.PPPTD
點對點隧道協議(PPTP)是一種支持多協議虛擬專用網絡的網絡技術。
PPTP 可以用于在 IP 網絡上建立 PPP 會話隧道。在這種配置下,PPTP 隧道和 PPP 會話運行在兩個相同的機器上,呼叫方充當PNS。PPTP 使用客戶機-服務器結構來分離當前網絡訪問服務器具備的一些功能并支持虛擬專用網絡。PPTP作為一個呼叫控制和管理協議,它允許服務器控制來自 PSTN 或 ISDN 的撥入電路交換呼叫訪問并初始化外部電路交換連接。PPTP 只能通過PAC 和 PNS 來實施,其它系統沒有必要知道 PPTP。撥號網絡可與 PAC 相連接而無需知道 PPTP。標準的 PPP客戶機軟件可繼續在隧道 PPP 鏈接上操作。PPTP 使用 GRE 的擴展版本來傳輸用戶 PPP 包。這些增強允許為在 PAC 和 PNS之間傳輸用戶數據的隧道提供低層擁塞控制和流控制。這種機制允許高效使用隧道可用帶寬并且避免了不必要的重發和緩沖區溢出。PPTP沒有規定特定的算法用于低層控制,但它確實定義了一些通信參數來支持這樣的算法工作。
PPTP相對其他遠程“撥入”型VPN的不凡之處在于微軟Windows(95/98/Me/NT/2000/XP/Vista)擁有一個內置的PPTP客戶端,這意味著管理員不必涉及任何額外的客戶端軟件以及那些通常伴隨出現的問題。Linux PPTP服務器實現的軟件是:poptop(http://www.poptop.org/)開源PPTP服務器產品Poptop特性為:
微軟兼容的認證和加密(MSCHAPv2,MPPE40-128位RC4加密) 。
支持多個客戶端連接 。
使用RADIUS插件無縫集成到一個微軟網絡環境中 。
和Windows 95/98/Me/NT/2000/XP PPTP客戶端共同工作 。
和Linux PPTP客戶端共同工作 。
Poptop在GNU通用公共許可下是,并仍將是完全免費。
下面分別介紹基于以上技術的VPN在Linux下的實現:
第一部分 建立Linux下的VPN-CIPE
一、CIPE概述
人們目前已經開發出了很多種VPN程序,這里介紹的最容易安裝的VPN軟件之一:CIPE。VPN是由經過相互授權的通信雙方在公網上建立的安全通信隧道,數據在隧道中進行加密傳輸,用于總部與分支機構的安全通信。虛擬專用網絡是一種新的網絡技術,用于跨過 Internet或局域網而安全地訪問企業網。CIPE 是主要為 Linux 而開發的 VPN 實現。CIPE 使用加密的 IP分組,這些分組被封裝或“包圍”在數據報(UDP)分組中。CIPE 分組被給以目標頭信息,并使用默認的 CIPE加密機制來加密。然后,這些分組再通過 CIPE 虛擬網絡設備(cipcbx)和 IP 層,以及通訊公司的網絡被作為 UDP 分組傳輸給預想中的遠程節點。CIPE網絡模型如圖-1。
圖-1 CIPE VPN網絡模型
CIPE 是Linux 網絡管理員和系統管理員的明智選擇,其原因如下:
CIPE 被包括在紅帽企業 Linux 中,因此所有你想連接到你的內聯網的紅帽企業 Linux 邊緣機器(如防火墻和網關機器)和個體客戶機器上都可以利用它。Redhat Linux 還包括支持 CIPE 的加密術。
CIPE 使用標準的 Blowfish 或 IDEA 加密算法來支持加密。根據你所在國家的加密出口法規而定,你可以使用默認方法(Blowfish)來加密你的專用網上的所有 CIPE 交通。
因為 CIPE 是基于軟件的,只要運行紅帽企業 Linux,任何一個較老的或閑置的機器都可以充當 CIPE 網關,所以你不必購買昂貴的專用 VPN硬件來安全地連接兩個局域網,從而給機構節省資金。
CIPE 被積極開發來與 iptables、ipchains、以及其它基于規則的防火墻一起使用。要和現存的防火墻規則共同存在,只需要讓對端接受進入的 CIPE UDP 分組就可以了。
CIPE 配置是通過文本文件來完成的。這使管理員不必使用通過網絡運行效果不佳的圖形化工具來遠程地配置 CIPE服務器和客戶。CIPE 還可以使用網絡管理工具來配置。
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 網絡管理工具來配置CIPE VPN
1.服務器端配置
點擊“主選單”-“系統配置”-“網絡配置”-“新建”-“CIPE(VPN)連接”進行VPN隧道配置。見圖-2。
圖-2 CIPE服務器端配置
最后點擊“生成”按鈕產生一個128位(32個16進制數)的密匙,接著點擊確定按鈕。最后選擇“當計算機啟動時激活該設備”。CIPE在服務器端配置見表-1:
表-1 CIPE服務器端設定
點擊“前進”按鈕繼續查看匯總信息見圖-3。
圖-3 CIPE 信息匯總
激活CIPE連接見圖-4。
圖-4 激活CIPE連接
下面還要作三項工作:
(1)使系統支持IP轉發,使用命令: /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客戶機配置界面
接著點擊“前進”按鈕。客戶機配置結束。
3.使用CIPE網絡接口連接VPN服務器
在客戶機進行連接測試,首先使用命令察看網絡接口:
# 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端口已經打開,路由表中包括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已經清除。