IPsec ×××路由器配置:ISAKMP策略

部署一個使用IPsec的IOS路由器要從配置ISAKMP策略和路由器的ISAKMP認證密鑰數據開始。如果路由器僅僅與Site-to-Site拓撲中的另外一個路由器相連,那麼ISAKMP配置就完成了。然而,如果路由器也要支持Client-to-Site,就還需要一個額外的IKE模式配置。在我們進行ISAKMP策略配置之前,我們先看一些安全性技巧:
  • 對於初學者,IOS可交換地在配置模型和EXEC模型中使用ISAKMP和IKE。記住IKE是一個支持ISAKMP的協議——ISAKMP是規則,IKE執行規則。
  • IKE監聽500端口,使用UDP來協商發送和接收報文。如果你在×××路由器前部署了一個防火牆,或者你正在嘗試建立一個穿越防火牆的IPsec客戶端連接,這就可能出現問題。而且除非你使用UDP的500端口,否則傳統的IKE將不能正常工作。
  • IKE不像Network Address Translation (NAT)。當兩個IPsec節點之間使用NAT時,基於IP地址綁定的預共享密鑰認證將無法工作。NAT轉換修改了源地址和目標地址,結果會造成密鑰與發送或接收主機的不匹配。在大多數基於有狀態的防火牆使用的Port Address Translation (PAT)也會破壞IPsec連接。然而,IOS的後續版本將使用IPsec Nat透明及Cisco 通道控制協議 (cTCP)解決IPsec和NAT/PAT之間的操作問題。這兩種解決方案都在IKE協商階段中使用。NAT透明在IKE第一階段增加了一個NAT發現階段原件以及在第二階段增加了一個NAT穿越工具。操作上,IPsec NAT透明將IKE移到UDP端口4500,而且在需要時將IPsec數據包封裝到UDP幀中。
雖然NAT透明解決了一些問題,但它不能解決所有問題。即使有NAT透明,IPsec客戶端連接也不能在有嚴格防火牆規則的環境中工作。如果在1024之上的UDP端口訪問對原始連接關閉,客戶端就不能與網關建立連接。爲了解決這種環境的問題,Cisco開發了通道控制協議(Tunnel Control Protocol,cTCP)。cTCP接管NAT透明所不能解決的工作,爲IKE和ESP數據包提供了TCP封裝。通過cTCP的配置,IPsec網關和客戶端就能夠使用具體的TCP服務端口發送IPsec數據。這使得通過TCP端口80或443發送IPsec數據成爲可能。這也使得我們能夠更容易地打開只允許有限的網絡服務穿越的網絡環境中的IPsec客戶端連接。
NAT透明默認是激活的,並且它也被整合成爲支持這個功能的IOS版本的IKE協商過程的一部分。Cisco通道控制協議需要經過配置,它也是路由器全局加密策略的一部分。下面我們將學習將cTCP配置成爲IKE模式配置的一部分的方法。
配置一個ISAKMP策略
接下來讓我們看看配置一個ISAKMP策略的各個細節。我們從最基本步驟開始:激活路由器上的ISAKMP(和IKE):
outlan-rt02(config)#crypto isakmp enable    
outlan-rt02(config)#
Oct 13 15:09:27 EST: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON
outlan-rt02(config)#
一旦ISAKMP被激活,我們需要爲每一個策略實體定義五個策略參數。如果沒有定義策略,一個使用所有默認值的策略將會被使用。當創建一個策略時,如果沒有顯式定義策略參數,默認的參數將會被使用。策略的參數及其默認值如下:
1. IKE策略加密,默認值爲數據加密標準(Data Encryption Standard,DES)
2. IKE策略哈希,默認值爲Secure Hash Standard-1 (SHA-1)
3. IKE密鑰交換,默認值爲Diffie-Hellman Group 1 (768-Bit)
4. IKE壽命,默認值爲一天(86,400秒)
5. IKE認證方式,默認值爲RSA公鑰
你可能已經知道節點是需要與一個通用ISAKMP策略協商,以建立一個IPsec節點聯繫。所以根據你想要連接的設備,你可能需要多個ISAKMP策略。每一個ISAKMP策略被賦於一個唯一的1到10,000之間的優先級數。優先級數爲1的策略被認爲是最高優先級的策略。策略協商從策略數最接近於1的開始。通常的做法是從策略數爲10的開始創建,這樣做的話當你需要往生產環境的路由器中插入一個優先級更高的策略時,你纔有位置可以用。
另一個關於ISAKMP策略優先級數的技巧與用於支持IPsec客戶端的ISAKMP策略有關。支持IPsec客戶端連接的ISAKMP策略有兩個策略組件:ISAKMP策略和IKE模式配置策略。如果路由器準備支持IPsec網關和IPsec客戶端之間的節點關係,這種支持“客戶端”的ISAKMP策略應該有最低的優先級。這樣就可以避免網關到網關請求用戶名和密碼信息的IKE協商。(在IOS的後續版本中,可以通過在一個預共享密鑰定義末尾添加no-xauth來覆載)。現在,讓我們繼續創建一個策略:
outlan-rt02(config)#crypto isakmp policy 10
我們需要定義的第一個參數是加密算法。IOS支持兩種加密算法:Data Encryption Algorithm (DEA) 和 Rijndael。Data Encryption Standard (DES) 和 Triple DES (3DES)標準是基於DEA的。DES和3DES是塊分組密碼,它們使用一個經過56位密鑰加密的64位的塊。這二者之間的區別是3DES會對每一個數據塊運行三次加密過程,而DES只運行一次。
Advanced Encryption Standard (AES)是基於Rijndael算法的塊分組密碼。AES使用一個128位塊大小,以及三個密鑰大小選擇:126位、192位或256位。DES和3DES是舊方法,但他們都是被各種Cisco路由器平臺廣泛支持的,不管是在路由器邏輯板還是通過使用一個加密適配器。在一個只使用一個軟件加密引擎的路由器上使用3DES是非常消耗計算資源的,並且不容易升級到多通道。IOS的後續版本是支持AES的,其中也包括了基於硬件的加密選項。AES比3DES更安全且更加高效。在軟件中有限的使用AES實現是可能實現的。通常的做法是使用DES或3DES,但如果可能,就使用AES-256。
outlan-rt02(config-isakmp)#encryption 3des
下一步是定義ISAKMP哈希算法。IOS支持兩種哈希協議:消息摘要算法5(Message-Digest Algorithm 5,MD5)和安全哈希算法(Secure Hash Algorithm)。MD5是一個單向哈希算法,它生成一個128位的哈希。SHA-1是公認的比這兩個算法更新的算法,而這兩個算法也的確有些過時了。可以期待的是IOS的後續版本將支持SHA-2,這是一個更加安全的算法,它支持4種不同的哈希長度(224、256、384和512位)。
outlan-rt02(config-isakmp)#hash sha
下面我們來定義Diffie-Hellman (DH)使用的模數。原始的RFC定義值爲2;DH組1使用一個768位的模數,DH組2使用一個1024位的模數。這個數值越大,密鑰就更加隨機,也就更加安全了。IOS支持組1、組2和組5的DH。DH組5使用一個1536位的模數。通常的做法是使用組2,因爲組5並沒有在所有的IOS版本中支持,並且它也不被Cisco ×××客戶端支持。另外一個需要注意的是,模數越長,CPU用來生成密鑰的時間也越長。在一些較低端的路由器上,使用一個較短的DH模數更好一些。
outlan-rt02(config-isakmp)#group 2
由於還沒有SA算法參數,我們需要定義SA的壽命。對於SA壽命,我們從幾個方面來考慮。當一個SA過期時,一個新的SA和新的SPI就被生成或被刪除。SA壽命越短就越安全。此外,SA壽命越短,路由器崩潰後的恢復和重新加載速度就越快。如果一個節點停掉了,其它節點就會啓動,在一些實例中,新的SA將等到之前的SA過期後纔會建立。對於支持上百個通道的網關路由器是特別明顯的現象。設置一個保持活躍的ISAKMP可以大大消除這個問題,但卻往往被忽略。另一方面,更長的SA壽命需要ISAKMP處理負載更小。而在不同路由器平臺上,ISAKMP協商通常不是一個太大的處理負擔,這樣一個短的SA壽命可以用在大量節點關係的路由器上。
outlan-rt02(config-isakmp)#lifetime 300
在一個Site-to-Site的路由器配置中,我們需要定義的最後一個ISAKMP參數是認證參數。IOS支持3種認證:RSA簽名、RSA現時標記和預共享密鑰。使用RSA簽名認證要配置路由器使用X.509基於證書的認證。這是最安全的方式,但它需要部署和管理一個證書制授權服務器。因爲它有這個額外需求,這是一個最少用的方法。更多關於RSA簽名的信息可以查詢Cisco的網站。
RSA現時標記同樣可以使用,一個RSA現時標記是一個由IKE發起者產生的隨機數,並用接收者的公鑰加密。使用RSA現時標記的好處是它們非常安全;而且它們不需要證書服務器。但是其缺點是節點需要擁有與其通信的所有節點的公鑰。這意味着使用這個方法會出現大量的工作量。
最後一個是預共享密鑰。預共享密鑰是用於同時支持Site-to-Site和Client-to-Site ×××的。雖然預共享的密鑰是最不安全的方法,但它們卻是最常用於網關節點的認證。這是因爲它們速度快並且容易設置,而且通過適當的安全性配置,在主機之間使用一個通用密鑰的風險會很小。在一個IPsec客戶端配置中,預共享密鑰是用IKE Extended Authentication(Xauth)來管理的,這是一個使用一個用戶密碼加組密碼的二元認證方法。組密碼功能上是作爲預共享密鑰使用的,它是一個所有客戶端和網關使用的公用值,而用戶密碼是唯一用於具體用戶的。
我們將在後面更深入地看看如何爲網關和客戶端配置RSA現時標記和共享密鑰配置。讓我們先舉例說明預共享密鑰的配置方法,下面是標準的配置:
outlan-rt02(config-isakmp)#authentication pre-share
We are done with our ISAKMP configuration. Here is what our policy statement looks like:
crypto isakmp policy 10
 encr 3des
 hash sha
 lifetime 300
 authentication pre-share
 group 2
!
crypto isakmp keepalive 20 5
crypto isakmp nat keepalive 30
注意除了我們的ISAKMP策略,這裏多了兩個keepalive語句。這是必須作爲全局加密配置命令而增加的,因爲默認的IOS加密配置把keepalive服務禁用了。ISAKMP的keepalive是通過全局配置命令<crypto isakmp keepalive {10-3600 sec}{2-20 sec}>配置的。當ISAKMP的keepalive激活後,路由器會每隔10到3600秒發送Dead Peer Detection (DPD)消息。如果沒有收到DPD的響應,路由器就會以更高頻率地發送DPD消息——在2到60秒之間。如果節點路由器在高頻探測激活後還不能響應,發送消息的路由器會刪除這個節點的SA。<crypro isakmp nat keepalive {5-3600}>命令就是在路由器支持IPsec客戶端連接時使用的。如果沒有收到從客戶端發來的流量,一個keepalive數據包會在間隔時間到達前而流量沒有發出時被髮送出去。
IKE模式配置
關於IPsec客戶端支持,我們來接着看IKE模式配置安裝。爲了支持Client-to-Site的IPsec配置,客戶端要求有一個安全的IP身份。然後IPsec客戶端的IP地址將被用於所有與其他由IPsec網關保護的安全主機的IP通信。IP地址分配,以及其他全部的客戶端配置參數(如域名、子網掩碼、DNS服務器)都定義在IKE模式策略中。IKE客戶端配置依賴於ISAKMP策略定義。
outlan-rt04#config t
Enter configuration commands, one per line.  End with CNTL/Z.
outlan-rt04(config)#crypto isakmp policy 1000
outlan-rt04(config-isakmp)# encr 3des
outlan-rt04(config-isakmp)# hash md5
outlan-rt04(config-isakmp)# authentication pre-share
outlan-rt04(config-isakmp)# group 2
outlan-rt04(config-isakmp)#exit 
outlan-rt04(config)#
IKE模式配置有三個部分。第一部分是ISAKMP客戶端組。這是使用命令<crypto isakmp client configuration group {group name}>創建的。這個命令定義了大多數的客戶端配置和組策略信息,這些信息是用於支持IPsec客戶端連接的。第二部分是一個客戶端IP地址池的創建,IP地址是客戶端配置組分配IP給客戶端的地方。它是通過使用全局配置命令<ip local pool {pool-name} {start-ip} {end-ip}>來創建的。最後一部分是半隧道的客戶端訪問策略訪問控制列表(ACL)。ACL定義了可以通過IPsec客戶端IP接口訪問的網絡。如果沒有定義ACL,客戶端會使用一個catch-all訪問策略,它表示所有網絡都應該通過IPsec客戶端IP接口訪問。半隧道的意思是一個IPsec客戶主機可能想要通過一個“非安全”的環境訪問一些IP節點,而其它的客戶主機則通過一個“安全的”環境訪問。這個方法的好處是通過激活半隧道,用戶可以同時訪問本地LAN設備和因特網,比如,使用客戶端的LAN接口訪問LAN服務,而不需要通過IPsec ×××網關。而它的缺點是當×××客戶端激活時,主機是同時連接到非安全和安全網絡的。這會帶來安全資源暴露的風險。ISAKMP客戶端組需要五個必要的參數來正確工作。除了基本的配置參數外,客戶端組策略還可以定義許多客戶端條件參數,但這根據你的IOS版本不同而有所不同。我們將在後面的Client-to-Site拓撲配置中討論這些附加的屬性。下面是客戶端組定義使用的五個基本參數:
outlan-rt04(config)#crypto isakmp client configuration 
group outlan-ras
outlan-rt04(config-isakmp-group)# key outlan-ras
outlan-rt04(config-isakmp-group)# dns 172.30.40.2
outlan-rt04(config-isakmp-group)# domain outlan-ras.net
outlan-rt04(config-isakmp-group)# pool outlan-ras
outlan-rt04(config-isakmp-group)# acl outlan-ras-networks 
outlan-rt04(config-isakmp-group)#exit
outlan-rt04(config)#

crypto isakmp client configuration group outlan-ras
 key outlan-ras
 dns 172.30.40.2
 domain outlan-ras.net
 pool outlan-ras
 acl outlan-ras-networks 
一旦客戶端組定義完成後,我們就需要創建IP地址池:
outlan-rt04(config)#ip local pool outlan-ras 172.30.99.10 172.30.99.100
The final step is the client access policy ACL:
outlan-rt04(config)#ip access-list extended outlan-ras-networks 
outlan-rt04(config-ext-nacl)# permit ip 172.30.40.0 0.0.0.255 172.30.99.0 0.0.0.255
技術上說我們的ISAKMP ×××客戶端支持配置已經完成了。然而,如果我們想要擴展我們的×××客戶端以支持連接到其它安全的主機上,我們需要配置Cisco Tunnel Control Protocol。NAT透明默認是激活的,所以激活cTCP要求更多的全局加密配置命令<cyrpto ctcp port {(listener port 1-65535), port, port}>。這個命令的端口設置是可選的,可以設置一個端口或都不設置或者設置一個監聽端口列表。如果沒有設置端口,cTCP會監聽端口10000。下面是監聽HTTP、HTTPS和默認cTCP服務端口的cTCP配置:
outlan-rt04(config)#crypto ctcp port 443 80 10000
必須記住的一點是,當配置cTCP時,如果路由器正在運行着一個HTTP或HTTPS後臺程序,IKE服務和HTTP/HTTPS服務是不能在同一個路由器接口運行的。下面是完成的ISAKMP客戶端配置:
!
crypto isakmp policy 1000
 encr 3des
 hash md5
 authentication pre-share
 group 2
crypto isakmp keepalive 20 5
crypto isakmp nat keepalive 30
!
crypto isakmp client configuration group outlan-ras
 key outlan-ras
 dns 172.30.40.2
 domain outlan-ras.net
 pool outlan-ras
 acl outlan-ras-networks
!
crypto ctcp port 443 80 10000
!
ip local pool outlan-ras 172.30.99.10 172.30.99.100
!
ip access-list extended outlan-ras-networks
 permit ip 172.30.40.0 0.0.0.255 172.30.99.0 0.0.0.255
這個過程的下一步就是生成和交換預共享的RSA密鑰。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章