2007年8月30日 星期四

OpenVPN中文概述

OpenVPN中文概述

http://dev.csdn.net/article/79/79321.shtm
趣多多 譯

OpenVPN 是一個具備完全特徵的SSL VPN解決方案,能夠進行大範圍的配置操作,包括遠程訪問、站點-站點間VPN、WiFi安全及企業級遠程訪問解決方案,支持負載均衡,錯誤恢復及細粒度的訪問控制。

OpenVPN通過使用工業標準SSL/TLS協議 實現了OSI 2層及3層安全網絡擴展,支持靈活的基於證書、智能卡的客戶端認證方法,允許通過在VPN虛擬接口上應用防火牆規則實現用戶及組訪問控制策略。OpenVPN並非一個Web應用代理,也不能通過Web瀏覽器進行操作。

作為一個不錯的關於OpenVPN的概念介紹,可以參考James Ynan在Linux Fest Northwest 上2004年發表的程序註釋--理解用戶空間VPN:歷史、概念基礎及實際應用(Understanding the User-Space VPN: History, Conceptual Foundations, and Practical Usage)。也可以參考Charlie Hosner的OpenVPN及SSL VPN革命(OpenVPN and the SSL VPN Revolution)。

OpenVPN 是一個開源項目,遵從GPL許可協議。商業許可對重新發佈其基於OpenVPN的應用程序的公司也有效。獲得更多信息請聯繫info@openvpn.net。

OpenVPN 能夠運行於Linux、Windows 2000/XP及更高版本、OpenBSD、FreeBSD、NetBSD、Mac OS X及Solaris平台。
通過OpenVPN,你可以:

在任意IP局部網絡或虛擬以太網適配器上通過單個UDP或TCP端口建立隧道;

使用一或多台機器配置可裁剪的、負載均衡的VPN服務器群以處理成千上萬的來自VPN客戶端的動態連接;

能夠使用在OpenSSL庫中所提供所有的加密、認證及證書特性以保護私有網絡在Internet網絡上的數據傳輸;

使用OpenSSL庫所支持的任意加密算法、密鑰長度或HMAC數字簽名(用於數據報完整性檢查);

先把基於靜態密鑰傳統加密方法或基於證書的公鑰加密方法;

使用靜態、預先公有的密鑰或基於TLS的動態密鑰交換;

使用實時的自適配壓縮及流量整形以管理鏈路帶寬分配;

為動態公共點(如DHCP或撥號客戶端)提供隧道傳輸;

無需顯示定義防火牆規則為面向連接的防火牆提供網絡隧道傳輸;

基於NAT的網絡隧道;

通過虛擬的tap設備創建安全的以太網橋;

在Windows或Mac OS X系統上通過GUI界面控制OpenVPN。



OpenVPN與其它VPN有何區別?

OpenVPN的主要特徵包括跨平台的可移植性、優秀的穩定性、成百上千或成千上個客戶端支持的可伸展性、相對簡單的安裝過程、支持動態IP地址及NAT。

OpenVPN 提供一個設計為易於針對站點定制的可擴展的VPN框架,例如提供發佈自定義安裝包到客戶端,或通過OpenVPN插件模塊接口支持可選的認證方法(例如openvpn-auth-pam 模塊允許OpenVPN使用任意PAM認證方法認證客戶端,這種方法可以單獨使用,也可以與基於X509證書結合使用以進行認證)。

OpenVPN 提供一個管理接口,可以用於遠端控制或中央控制一個OpenVPN守護進程。管理接口也可以用於開發基於GUI或web的前端應用程序。

在Windows平台上,OpenVPN能夠使用Windows Crypto API從智能卡上讀取證書或私鑰。

OpenVPN 使用設計用於可保護被動攻擊和主動攻擊的工業強度的安全模型。OpenVPN的安全模型基於SSL/TLS進行會話認證及使用IPSec ESP協議用於基於UDP的安全隧道傳輸。OpenVPN支持X509 PKI (public key infrastructure)用於會話認證,TLS協議用於密鑰交換,OpenSSL的加密算法無關的EVP接口用於加密隧道數據,HMAC-SHA1算法用於認證隧道數據。

OpenVPN建立為可移植的, OpenVPN可以運行於Linux、Solaris、OpenBSD、FreeBSD、NetBSD、Mac OS X及Windows 2000/XP,因為OpenVPN作為用戶空間守護進程編寫而非內核模塊或對IP層的複雜變更,移植操作的簡易性是值得留意的。

OpenVPN易於使用,通常,一個隧道的建立和配置可以通過一個單獨的命令完成(無需任何必要的配置文件)。OpenVPN文檔包含了的示例進行了詳細解釋。

OpenVPN 經過嚴格設計,並在不可靠的網絡中進行了強度測試。OpenVPN的一個主要的設計目標就是在正常操作和錯誤恢復情況下IP層都能夠快速響應。這意味著如果IP層斷開5分鐘,當它再次恢復時,隧道流量能夠立即恢復,即使動態密鑰交換在這期間已經過期。

OpenVPN 有著健壯的模塊設計。所有加密都由OpenSSL庫處理,所有IP隧道功能都由TUN/TAP虛擬網絡驅動提供。

模塊化的好處是顯而易見的,例如,OpenVPN可以與新版本的OpenSSL庫動態鏈接並立即能夠使用其在新版本中所提供的新功能。例如,當OpenVPN基於最後版本的OpenSSL(0.9.7)編譯時,它能夠使用新的加密算法,如AES-256(高級加載標準,256位密鑰),以及OpenSSL特定目的的硬件加速器優化加密、解密及認證性能的加密引擎功能。

同樣地,OpenVPN的用戶空間設計易於移植到任何包含TUN/TAP虛擬網絡驅動的OS中。

OpenVPN 運行速度很快,在Pentium II 266MHz機器上運行Redhat 7.2 ,使用基於TLS的認證方法,Blowfish加密算法,SHA1 用於隧道數據認證,當隧道傳輸一個巨大的,經過預先壓縮文件的FTP會話時,OpenVPN達到了每秒(CPU時間,包括內核及用戶態時間)1.455MB的收/發傳輸速度。

OpenVPN提供了用於控制VPN隧道的安全參數的選項,同時提供了用於保證服務器本身安全的選項,例如—chroot用於限制OpenVPN守護進程能夠訪問的文件系統部分,--user 及—group選項用於降低守護進程在初始化之後的優先級,--mlock用於確認密鑰原始內容及隧道數據從不被分頁到磁盤上,從而避免被後期恢復。

為什麼先把TLS作為OpenVPN的根本認證及密鑰協商協議呢?TLS是SSL協議族的最後成果,最初由Netscape開發用於他們最初的安全web瀏覽器。多年來,TLS及其SSL前身已經在web上得到了廣泛應用,並得到了深入的弱點分析。這些分析使得它不斷被加強,從而形成如今的協議,SSL/TLS被認為是最強壯及最成熟的安全協議之一。因此,我們相信TLS是作為VPN產品認證及密鑰交換機制的極好的先把。

OpenVPN 支持IPSec或PPTP嗎?
目前被廣泛應用的VPN實現中有三個主流:SSL、IPSec及PPTP。OpenVPN是一個SSL VPN,因此並不與IPSec、L2TP或PPTP兼容。
IPSec協議設計為內核空間IP棧的修正,不同的操作系統需要其自身的IPSec實現。
相對而言,OpenVPN的用戶空間實現允許跨操作系統及處理器體系、防火牆及NAT友好操作、動態地址支持、多協議支持(包括協議橋接)的移植。
優點與缺點並存,OpenVPN的主要優點在於可移植、易於配置及與NAT和動態地址兼容。OpenVPN的安裝和使用與其它安全相關的守護進程軟件,例如SSH相似。
由於歷史因素,IPSecr的優點在於獲得了眾多廠商的支持,雖然OpenVPN也逐漸開始致力於硬件設備的支持。
PPTP協議的優點在於其在Windows平台預裝了客戶端,密碼分析專家已經透露了其安全弱點。

OpenVPN符合標準嗎?
作為一個用戶空間VPN守護進程,OpenVPN與SSL/TLS、RSA證書及X509 PKI、NAT、DHCP及TUN/TAP兼容。
OpenVPN與IPSec、IKE、PPTP或L2TP並不兼容。

OpenVPN 隧道能夠基於TCP連接傳輸嗎?
是的,OpenVPN 1.5以上版本均支持基於TCP連接的隧道傳輸。

我是否能夠使用web瀏覽器作為OpenVPN客戶端?
不可以,雖然OpenVPN使用SSL/TLS協議用於安全傳輸,OpenVPN並不是一個Web應用代理。它是一個OSI 2層或3層Internet網絡隧道解決方案,要求OpenVPN同時安裝於客戶端和服務器端。


編譯OpenVPN
OpenVPN 在Linux或BSD系列系統中很容易通過源碼編譯。而在Windows上編譯則比較複雜,你可以在OpenVPN下載站中找到預編譯的安裝包。


OpenVPN 的編譯:
基於OpenSSL 加密及SSL庫(版本0.9.6或更高),可以提供基於證書的認證、公鑰加密、基於TLS的動態密鑰交換;
只基於OpenSSL加密庫,可以提供基於靜態密鑰的傳統加密和認證;
不基於OpenSSL,只提供未加密的UDP隧道。
OpenVPN也可以與LZO實時加密庫鏈接。OpenVPN支持自適配壓縮,這意味著它可以在隧道數據流能夠被壓縮時進行鏈路壓縮。
OpenVPN完全運行於用戶空間,除了在Windows、Linux及BSD系列系統上需要TUN/TAP虛擬網絡驅動外,不需要其它任何特殊的內核組件。

捐助OpenVPN項目
請考慮捐助OpenVPN項目。OpenVPN是GPL協議下一個完全由社區支持的成果,你的捐助對我們大有幫助,它可以確保OpenVPN的持續開發,包括保持最高安全性,維持一個嚴格的測試程序,添加新特性,改善文檔及提供技術支持。

沒有留言: