IPsec VPN
用IPSec協議實現遠程接入的技術
指採用IPSec協議來實現遠程接入的一種VPN技術,IPSec全稱為Internet Protocol Security,是由Internet Engineering Task Force (IETF) 定義的安全標準框架,用以提供公用和專用網路的端對端加密和驗證服務。
IPSEC是一套比較完整成體系的VPN技術,它規定了一系列的協議標準。
VPN作為一項成熟的技術,廣泛應用於組織總部和分支機構之間的組網互聯,其利用組織已有的網際網路出口,虛擬出一條“專線”,將組織的分支機構和總部連接起來,組成一個大的區域網。
VPN用戶訪問內網資源還需為拔入到UTM25的用戶分配一個虛擬的私有IP,使SSL VPN客戶端的用戶可以像區域網用戶一樣能正常訪問區域網內的資源。
導入IPSEC協議,原因有2個,一個是原來的TCP/IP體系中間,沒有包括基於安全的設計,任何人,只要能夠搭入線路,即可分析所有的通訊數據。IPSEC引進了完整的安全機制,包括加密、認證和數據防篡改功能。
另外一個原因,是因為Internet迅速發展,接入越來越方便,很多客戶希望能夠利用這種上網的帶寬,實現異地網路的的互連通。
IPSEC協議通過包封裝技術,能夠利用Internet可路由的地址,封裝內部網路的IP地址,實現異地網路的互通。
設想現實一種通訊方式。假定發信和收信需要有身份證(成年人才有),兒童沒有身份證,不能發信收信。有2個兒童,小張和小李,他們的老爸是老張和老李。現在小張和小李要寫信互通,怎麼辦?
一種合理的實現方式是:小張寫好一封信,封皮寫上 "小張-->小李", 然後給他爸爸,老張寫一個信封,寫上“老張-->老李”,把前面的那封信套在裡面,發給老李,老李收到信以後,打開,發現這封信是給兒子的,就轉給小李了。小李回信也一樣,通過他父親的名義發回給小張。
這種通訊實現方式要依賴以下幾個因素:
* 老李和老張可以收信發信
* 小張發信,把信件交給老張。
* 老張收到兒子的來信以後,能夠正確的處理(寫好另外一個信封),並且重新包裝過的信封能夠正確送出去。
* 另外一端,老李收到信拆開以後,能夠正確地交給小李。
* 反過來的流程一樣。
把信封的收發人改成Internet上的IP地址,把信件的內容改成IP的數據,這個模型就是IPsec的包封裝模型。小張小李就是內部私網的IP主機,他們的老爸就是VPN網關,本來不能通訊的兩個異地的區域網,通過出口處的IP地址封裝,就可以實現區域網對區域網的通訊。
引進這種包封裝協議,實在是有點不得已。理想的組網方式,當然是全路由方式。(這裡注意理想的組網方式雖然是全路由方式,但VPN的應用也不會因全網而沒有用武之地,因為VPN的根本還是為了方便外網訪問內網)任意節點之間可達(就像理想的現實通訊方式是任何人之間都可以直接寫信互通一樣)。
Internet協議最初設計的時候,IP地址是32位,當時是很足夠了,沒有人能夠預料到將來Internet能夠發展到現在的規模(相同的例子發生在電信短消息上面,由於160位元組的限制,很大地制約了短消息的發展)。按照2的32次方計算,理論上最多能夠容納40億個左右IP地址。這些IP地址的利用是很不充分的,另外大約有70%左右的IP地址被美國分配掉了,所以對於中國來說,可供分配的IP地址資源非常有限。
既然IP地址有限,又要實現異地lan-lan通訊,包封包,自然是最好的方式了。
依然參照上述的通訊模型。
假定老張給老李的信件要通過郵政系統傳遞,而中間途徑有很多好事之徒,很想偷看小張和小李(小張小李做生意,通的是買賣信息)通訊,或者破壞其好事。
解決這個問題,就要引進安全措施。安全可以讓小李和小張自己來完成,文字用暗號來表示,也可以讓他們的老爸代勞完成,寫好信,交給老爸,告訴他傳出去之前重新用暗號寫一下。
IPSEC協議的加密技術和這個方式是一樣的,既然能夠把數據封裝,自然也可以把數據變換,只要到達目的地的時候,能夠把數據恢復成原來的樣子就可以了。這個加密工作在Internet出口的VPN網關上完成。
數據認證
還是以上述通訊模型為例,僅僅有加密是不夠的。
把數據加密,對應這個模型中間,是把信件的文字用暗號表示。
好事之徒無法破解信件,但是可以偽造一封信,或者胡亂把信件改一通。這樣,信件到達目的地以後,內容就面目全非了,而且收信一方不知道這封信是被修改過的。
為了防止這種結果,就要引入數據防篡改機制。萬一數據被非法修改,能夠很快識別出來。這在現實通訊中間可以採用類似這樣的演演算法,計算信件特徵(比如統計這封信件的筆劃、有多少字),然後把這些特徵用暗號標識在信件後面。收信人會檢驗這個信件特徵,由於信件改變,特徵也會變。所以,如果修改人沒有暗號,改了以後,數據特徵值就不匹配了。收信人可以看出來。
身份認證
還是假定小張小李通訊模型。
由於老張和老李不在一個地方,他們互相不能見面,為了保證他們兒子通訊的安全。老張和老李必須要相互確認對方是否可信。這就是身份認證問題。
假定老李老張以前見過面,他們事先就約定了通訊暗號,比如1234567890對應abcdefghij,那麼寫個255,對應就是一個bee。
常見的VPN身份認證可以包括預共享密鑰,通訊雙方實現約定加密解密的密碼,直接通訊就可以了。能夠通訊就是朋友,不能通訊就是壞人,區分很簡單。
其他複雜的身份認證機制包括證書(電子證書比如x509之類的)。
如果有身份認證機制,密鑰的經常更換就成為了可能。
功 能 | 支持 | 描述 | |
網路部分 | 網路介面 | Y | 支持PPPOE、靜態IP接入方式 |
動態域名綁定 | Y | 支持DynDNS網路和希網網路的動態域名綁定 | |
策略路由 | Y | 支持解決雙線路路由選擇進行轉發 | |
DHCP IP分配 | Y | 支持動態分配IP地址 | |
防火牆 | 禁PING | Y | 支持禁止PING外網網口 |
埠映射 | Y | 支持內網伺服器直接映射到公網 | |
Iptables自定義規則 | Y | 支持用戶手工配置iptables規則,實現更精確的上網行為管理控制 | |
訪問策略控制 | Y | 支持自定義時段的流量控制 | |
埠重定向 | Y | 支持不符合規則的埠通信過濾 | |
防攻擊配置 | Y | 支持防SYN,DDOS,和TCP COOKIE攻擊 | |
連接信息 | Y | 支持查看通過防火牆的連接信息(IP、埠、包) | |
VPN 應用 | 靈活的授權策略 | Y | 支持通過序列號進行功能和許可管理,給予用戶角色時間進行任意組合的訪問策略 |
接入方式 | Y | 支持單/雙臂接入模式 | |
IPSEC功能 | Y | 支持LAN-TO-LAN雙向VPN隧道模式 | |
PPTP功能 | Y | 支持POINT-TO-LAN的單向VPN隧道模式 | |
易管理 | 備份功能 | Y | 支持本地和遠程備份及恢復 |
在線升級 | Y | 支持遠程進行設備版本升級 | |
系統日誌 | Y | 支持記錄詳細的系統信息,調試及錯誤日誌 |
解決了上述的幾個問題,基本可以保證VPN通訊模型能夠建立起來了。
但是並不完美,這是最簡單的VPN。即通過對端兩個靜態的IP地址,實現異地網路的互聯。美國的很多VPN設備就做到這一級,因為美國IP地址充裕,分配靜態IP地址沒有問題。苦的是我等中國客戶,2端都需要靜態IP地址,相當於2根Internet專線接入。
VPN要在中國用起來,還要解決一堆的相關問題。。
通過Internet建立了一個通訊的隧道,通過這個通訊的隧道,就可以建立起網路的連接。但是這個模型並非完美,仍然有很多問題需要解決。
在講述其他問題以前,我們對VPN定義幾個概念。
一個VPN節點,可能是一台VPN網關,也可能是一個客戶端軟體。在VPN組網中間,屬於組網的一個通訊節點。它應該能夠連接 Internet,有可能是直接連接,比如adsl、電話撥號等等,也可能是通過nat方式,例如:小區寬頻、cdma上網、鐵通線路等等。
VPN隧道:在兩個vpn節點之間建立的一個虛擬鏈路通道。兩個設備內部的網路,能夠通過這個虛擬的數據鏈路到達對方。與此相關的信息是當時兩個VPN節點的IP地址,隧道名稱、雙方的密鑰。
一個設備可能和很多設備建立隧道,那麼就存在一個隧道選擇的問題,即到什麼目的地,走哪一個隧道?
用前面的通訊模型來說,老李老張就是隧道節點,他們通過郵政系統建立的密碼通訊關係,就是一個數據隧道,小張和小李把信發給他們老爸的時候,他們老爸要作出抉擇,這封信怎麼封裝,封裝以後送給誰。假如還有一個老王和他們的兒子,也要通訊,這時候隧道路由就比較好理解了。送給小王的數據,就封裝給老王,送給小李的數據,就封裝發給老李。如果節點非常多,那麼這個隧道路由就會比較複雜。
理解了以上的問題,我們就知道,ipsec要解決的問題其實,可以分為以下幾個步驟:
找到對方vpn節點設備,如果對方是動態IP地址,那麼必須能夠通過一種有效途徑能夠及時發現對方IP地址的變化。按照通訊模型,就是老李老張如果經常搬家的話,必須有一個有效的機制,能夠及時發現老李老張地址的變化。
建立隧道說起來簡單,做起來不容易。如果兩個設備都有合法的公網IP,那麼建立一個隧道是比較容易的。如果一方在nat之後,那就比較麻煩了。一般通過內部的vpn節點發起一個udp連接,再封裝一次ipsec,送到對方,因為udp可以通過防火牆進行記憶,因此通過udp再封裝的ipsec 包,可以通過防火牆來回傳遞。
建立隧道以後,就確定隧道路由,即到哪裡去,走哪個隧道。很多VPN隧道配置的時候,就定義了保護網路,這樣,隧道路由就根據保護的網路關係來決定。但是這喪失了一定的靈活性。
所有的ipsec VPN展開來講,實現的無非就是以上幾個要點,具體各家公司,各有各的做法。但是可以肯定,目前在市場銷售的VPN,肯定都已經解決了以上的問題。
IPSEC VPN 的類型:
常見的IPSEC VPN 類型有 站到站(site to site 或者是LAN TO LAN)、easy VPN(遠程訪問VPN)、DMVPN(動態多點VPN)、GET VPN(Group Encrypted Transport(GET) VPN )等。
怎樣找到vpn節點設備
假如設備都是動態撥號方式的話,那麼一定需要一個合適的靜態的第三方來進行解析。相當於兩個總是不停搬家的人,要合適找到對方,一定需要一個大家都認識的朋友,這個朋友不搬家,兩個人都能夠聯繫上他。
靜態的第三方,常見的有3種實現方式:
通過網頁
這是深信服公司發明的一種技術,通過Web頁解析ip地址。因此,動態的設備,可以通過這種方式,把自己當前的IP地址提交上去。其他設備可以通過網頁再查詢回來。這樣,設備之間就可以互相通過這個網頁找到。因為網頁是相對固定的,所以這種方式能夠很有效地解決這個問題。這種方式能夠有效地分散集中認證的風險,而且很容易實現備份,屬於比較巧妙的一種解決方案。當然,對於Web頁可能存在比較多的攻擊,因此,要注意安全防範。
通過一個集中的伺服器
實現統一解析,然後給用戶進行分組。每個vpn設備只能看到同組的其他設備,不能跨組訪問。也可以通過目錄伺服器實現。這種方式適合集中式的VPN,在企業總部部署伺服器,實現全局設備的統一認證和管理。它不太適合零散用戶的認證,因為存在一個信任問題,客戶會質疑管理伺服器如果出現了問題,有可能其他設備就能夠連接到自己的vpn域裡面。這種大型的集中vpn管理軟體,在很多國內外的vpn廠商都有專門的設備或軟體,它除了能夠進行動態IP地址解析,還能夠實現在線認證等等功能。如果管理中心比較智能的話,可以集中制訂通訊策略,下面的vpn設備配置參數比較少。
通過DDNS
即動態域名。動態域名是一種相對比較平衡的技術。Vpn設備撥號以後,把自己當前的IP地址註冊給一級域名伺服器,並且更新自己的二級域名IP地址,internet其他用戶,通過這個二級域名就可以查找到它。以上講述了三種動態IP地址的解析方法,國內一般廠家提供的無外乎這幾種方法。如果再有比較偏門的技術,也許就不是主流技術了。
解決了動態IP地址問題,按照之前的通訊模型,不考慮VPN設備很多的情況,就可以組網。因此,一旦這種技術被越來越多的廠家掌握,基於IPsec vpn設備和軟體是一定會價格下降的。It技術從朝陽變成夕陽就是轉眼之間的事情。
第二個問題 隧道如何建立
解決了Ip地址動態定址的問題,現在來說一下Nat穿越的問題。我們知道,Udp和TCP是可以穿越防火牆的。直接的IPsec封裝,不能穿越防火牆,因為防火牆需要更改埠信息,這樣回來的數據包,才能轉到正確的內部主機。用UDP顯然比較合適,因為使用tcp的話,不僅三次握手佔據時間很長,而且還有來回的確認。而實際上,這些工作屬於ipsec內部封裝的報文要乾的事情,放在這裡完成是不合適的。因此,用udp來封裝ipsec報文,以穿越nat,幾乎是唯一可以選擇的方案。
用udp穿越nat防火牆,這隻解決了問題的一半,因為這要求至少有一方處於Internet公網上面。有可路由的IP地址。而有時會發生兩個vpn節點都在nat之後的情景,這隻能通過第三方轉發來完成。即兩個設備都可以與第三方設備互通,第三方設備為雙方進行轉發。這個可以通過之前的模型解析,老張老李不能直接通訊,他們都可以與老王通訊,老王就可以在中間進行轉發。凡是小李小張的通訊,交給他們老爸以後,老王最後再進行轉交。這是隧道路由的概念就很清晰了,不能一個隧道直接到達,可以在幾個隧道之間轉發。
所以,IPsec vpn並不神秘。所有核心的工作無非就是圍繞以下幾個方面展開:
如何找到與本VPN節點相關的其他節點。
協商出一個可以通訊的隧道。如果是nat之後,應該怎麼處理。
建立隧道路由表,確定不同的目標地址,走不同的隧道。
假定以上的問題都得到了解決,通過某種方式,動態IP地址的VPN節點可以相互找到對方,並且能夠建立隧道,因此也能夠實現隧道路由通訊。是不是一個完整的VPN就能夠實現了呢??
答案仍然是否,解決了以上問題,並不代表一個很好用的VPN產品,仍然有其他很多問題。之後的問題是圍繞著複雜性展開的,簡單的原理實現之後,剩下的工作就是要解決掉全部相關的邊緣問題。才能夠實現一個好用的東西。能夠用是一回事,好用是另外一回事。
IPSEC VPN配置:
IP SEC Tunnel 示意圖
crypto isakmp policy 10
encr 3des
authentication pre-share
group 2
crypto isakmp key cisco address 46.46.23.3
!
!
crypto ipsec transform-set myset esp-3des esp-sha-hmac
!
crypto map mymap 10 ipsec-isakmp
set peer 46.46.23.3
set transform-set myset
match address 101
ip route 20.0.0.0 255.255.255.0 46.46.12.2
access-list 101 permit ip 10.0.0.0 0.0.0.255 20.0.0.0 0.0.0.255
longhai:
crypto isakmp policy 10
encr 3des
authentication pre-share
group 2
crypto isakmp key cisco address 46.46.12.1
!
!
crypto ipsec transform-set myset esp-3des esp-sha-hmac
!
crypto map mymap 10 ipsec-isakmp
set peer 46.46.12.1
set transform-set myset
match address 101
ip route 10.0.0.0 255.255.255.0 46.46.23.2
access-list 101 permit ip 20.0.0.0 0.0.0.255 10.0.0.0 0.0.0.255
ipsec vpn 技術的特性:
在使用公網傳送內部專網的內容時,ipsec vpn 在ip傳輸上通過加密隧道,保證在ip公網上傳輸的數據的安全性,從而實現總部到分支機構之間的語音,視頻等數據的互通。如今,很多國際的企業已經把vpn作為總部到分支機構的主要連接手段,比如的國際大型的組織,商業機構,連鎖門店已經採用vpn這種安全的技術。
1經濟,企業不再承擔實施昂貴的固定線路的租費,而且帶寬的費用很高,相反採用吧internet作為骨幹傳輸是非常便宜的,而其基本不用花費資金來做後期的維護,並且vpn設備的造價相比之下相對低廉。
2 靈活性很強,連接internet的方式可以多種,一個ipsec vpn 網路可以連接任意地點的分支機構
3.多業務:可以同時支持語音和視頻傳遞到遠端的分支機構和移動用戶,大大提高了現代化辦公的以及其他的數據需求。
4 安全性;安全是ipsec vpn 的顯著特點,保證數據的 安全是該技術的根本所在。在vpn設備上,支持通道協議,數據加密,過濾
通過實現授權的多種方式保證安全,同時提供內置防火牆的功能,可以在vpn 通道之外,對公網到私網之間的數據進行監測過濾。
5:冗餘設計:vpn 設備提供冗餘機制,保證鏈路和設備的可靠性。
6 通道分離:vpn設備的通道分離特性為 ipsec 提供 客戶端同時訪問公網私網的支持。訪問本地網路可以設置用戶的訪問許可權
該特性在安全的條件下實現看合理方便的使用網路資源。
7:支持動態 靜態的路由協議,rip 和ospf 路由協使得vpn設備沖路由器的功能。在擴大網路的規模的同時並實現看安全功能,
並且路由協議可以加密在隧道中進行安全傳輸。
開放和封閉的模型同時適用於客戶端到站點拓撲和站點到站點拓撲。由IPsec網關分隔的(或其相鄰的)節點之間的連接可能會或不會受到限制。在一個開放的客戶端到站點拓撲中,終端和IPsec網關之間的網路路徑是安全的。而在一個封閉的客戶端到站點拓撲中,終端和網關之間的路徑也是安全的。但是客戶端節點與和IPsec網關相鄰的節點之間的數據交換隻有在建立與IPsec網關連接時才能夠進行。
在兩種拓撲中,客戶端節點和IPsec網關的關係在結構上與傳統的PSTN(public switched telephone networks)遠程訪問撥號網路很相似。終端建立與網關的連接,然後它們作為IPsec節點進行通信。此外,網關負責向終端提供一個IP身份,這使客戶端節點能夠和其他與IPsec網關直接連接(通過VPN)並和相鄰的終端實現IP網路連接。客戶端終端與網關之間的通信是由IPsec保證安全的。然而,客戶端終端和其他與IPsec網關相鄰的終端之間的通信則是不安全的。