本篇主要講解IPSEC ×××相關理論概念,工做原理及配置過程。從安全和加密原理入手,講解了IPSEC 在***對等體設備實現的安全特性,如數據的機密性、數據的完整性,數據驗證等。重點分析IKE階段1和階段2的協商創建過程,爲×××等體間故障排查打下堅實的理論基礎,最後,分別在Cisco的路由器和防火牆上實現IPSEC ×××的應用和配置,並結合企業需求進行案例分析和講解。git
1、×××概述算法
×××技術起初是爲了解決明文數據在網絡上傳輸帶來的安全隱患而產生的。TCP/IP協議族中的不少協議都採用明文傳輸,如telnet、ftp、tftp等。一些***可能爲了獲取非法利益,經過諸如竊聽、假裝等***方式截獲明文數據,使企業或者我的蒙受損失。安全
×××技術能夠從某種程度上解決該問題。例如,它能夠對公網上傳輸的數據進行加密,即便***經過竊聽工具截獲到數據,也沒法瞭解數據信息的含義。×××也能夠實現數據傳輸雙方的身份驗證,避免***假裝成網絡中的合法用戶***網絡資源。bash
一、×××的定義服務器
×××(virtual private network,虛擬專用網)就是在兩個網絡實體之間創建的一種受保護的鏈接,這兩個實體能夠經過點到點的鏈路直接相連,但一般狀況下他們會相隔較遠的距離。網絡
×××技術的做用:架構
(1)經過使用加密技術防止數據被竊聽。ssh
(2)經過數據完整性驗證防止數據被破壞、篡改。ide
(3)經過認證機制實現通訊雙方身份確認,來防止通訊數據被截獲和回放。函數
此外,×××技術還定義了:
* 何種流量須要被保護。
* 數據被保護的機制。
* 數據的封裝過程。
實際工做環境中的×××解決方案不必定包含上述全部功能,這要由具體的環境需求和實現方式決定。並且不少企業可能採用不止一種的×××解決方案。
二、×××的鏈接模式
×××技術有兩種基本的鏈接模式:隧道模式和傳輸模式。這兩種模式實際上定義了兩臺實體設備之間傳輸數據時所採用的不一樣的封裝過程。
1)傳輸模式
傳輸模式一個最顯著的特色就是:在整個×××的傳輸過程當中,IP包頭並無被封裝進去,這就意味着從源端到目的端數據始終使用原有的IP地址進行通訊。而傳輸的實際數據載荷被封裝在×××報文中。對於大多數×××傳輸而言,×××的報文封裝過程就是數據的加密過程,所以,***者截獲數據後將沒法破解數據內容,但卻能夠清晰地知道通訊雙方的地址信息。
因爲傳輸模式封裝結構相對簡單(每一個數據報文較隧道模式封裝結構節省20字節),所以傳輸效率較高,多用於通訊雙方在同一個局域網內的狀況。例如:網絡管理員經過網管主機登陸公司內網的服務器進行維護管理,就能夠選用傳輸模式×××對其管理流量進行加密。
2)隧道模式
隧道模式中,×××設備將整個三層數據報文封裝在×××數據內,再爲封裝後的數據報文添加新的IP包頭。因爲新IP包頭中封裝的是×××設備的ip地址信息,因此當***者截獲數據後,不但沒法瞭解實際載荷數據的內容,同時也沒法知道實際通訊雙方的地址信息。
因爲隧道模式的×××在安全性和靈活性方面具備很大的優點,在企業環境中應用十分普遍,總公司和分公司跨廣域網的通訊、移動用戶在公網訪問公司內部資源等不少狀況,都會應用隧道模式的×××對數據傳輸進行加密。
三、×××的類型
一般狀況下,×××的類型分爲站點到站點×××和遠程訪問×××。
1)站點到站點×××
站點到站點×××就是經過隧道模式在×××網關之間保護兩個或者更多的站點之間的流量,站點間的流量一般是指局域網之間(L2L)的通訊流量。L2L的×××多用於總公司與分公司、分公司之間在公網上傳輸重要業務數據。
對於兩個局域網的終端用戶來講,在×××網關中間的網絡是透明的,就好像經過一臺路由器鏈接的兩個局域網。總公司的終端設備經過×××鏈接訪問分公司的網絡資源。數據包封裝的地址都是公司內網地址(通常爲私有地址),而×××網關對數據包進行的再次封裝過程,客戶端是全然不知的。
2)遠程訪問×××
遠程訪問×××一般用於單用戶設備與×××網關之間通訊鏈接,單用戶設備通常爲一臺pc或小型辦公網絡等。×××鏈接的一端爲PC,可能會讓不少人誤解遠程訪問×××使用傳輸模式,但由於該種×××每每也是從公網傳輸關鍵數據,並且單一用戶更容易成爲***的***對象,因此遠程訪問×××對於安全性要求較高,更適用於隧道模式。
要想實現隧道模式的通訊,就須要給遠程客戶端分配兩個IP地址:一個是它本身的NIC地址,另外一個是內網地址。也就是說遠程客戶端在×××創建過程當中同時充當×××網關(使用NIC地址)和終端用戶(使用內網地址)。
當遠端的移動用戶與總公司的網絡實現遠程訪問×××鏈接後,就好像成爲總公司局域網中的一個普通用戶,不只使用總公司網段內的地址訪問公司資源,並且由於其使用隧道模式,真是的ip地址被隱藏起來,實際公網通訊的一段鏈路對於遠端移動用戶而言就像是透明的。
2、加密算法
加密就是一種將數據轉換成另一種形式的過程,若是不瞭解用於加密的算法,解密幾乎是不可能的。舉例而言,A給B發信息內容爲」I LOVE YOU」,因爲擔憂C從中間截獲,因而,A與B協商了一種簡單的加密方法:把全部的字母按照26個字母順序+3,」I LOVE YOU」就變成了」L ORYH BYX」,即便C截獲了數據也沒法得知信息的真正含義。這裏「+3」就能夠理解爲一種簡單的加密算法。
實際×××設備所使用的算法是至關複雜的,通常會涉及一些較爲複雜的數學算法,利用這些算法能夠實現數據加密、數據完整性驗證、身份驗證等×××的基本功能。通常來講,能夠將這些加密算法分爲兩大類:對稱加密算法和非對稱加密算法。
一、對稱加密算法
對稱加密算法使用同一祕鑰對信息提供安全的保護。假設對稱加密算法的祕鑰爲「K」,客戶端傳輸的明文數據爲「M」,×××網關加密後的數據爲「C」,而E和D爲加密和解密函數,則數據加密過程以下:
(1)發送發和接收方共享祕鑰「K」,也就是說加密和解密使用同一把鑰匙。
(2)發送方的×××網關經過加密函數E將明文數據M加密成爲密文數據C。
(3)接收方的×××網關經過解密函數D將數據還原爲明文數據M。
目前常見的對稱加密算法有DES、3DES、AES等。
1)DES算法
DES加密算法曾經在×××領域應用很廣,屬IBM的研發產品,其祕鑰長度爲4位,其中8位用於奇偶校驗,因此實際有效長度爲56位。雖然該算法目前還沒找到更好的方法破解,可是經過暴力破解已經能夠在較短期內攻破DES算法,因此在實際工程實施過程當中(若是沒有設備硬件性能支持)已經不建議使用該種算法。
2)3DES算法
NIST在1999年研發了3DES算法,理論上3DES算法是DES算法的加強版本,由於3DES使用了三個階段的DES,即同時使用了三個不一樣的56位祕鑰,因此至關於產生了一個168位的有效祕鑰長度。這種級別的祕鑰目前尚未計算機有能力在短期內破解,並且其執行效率雖然在軟件環境中比較慢,但在硬件環境中並不明顯。
3)AES算法
3DES算法雖然目前爲止是安全的,但隨着計算機硬件的更新,總有一天要被攻破,NIST在2002年研發了AES算法欲取代DES和3DES算法。該算法比3DES算法更安全,它支持12八、192和256位祕鑰長度,有效的祕鑰長度可達上千位。更重要的是,AES算法採用了更爲高效的編寫方法,對CPU佔用率較少,因此諸如IPSEC ×××等時機工程的實施過程當中趨向於使用AES來提供更好的加密功能。
二、非對稱加密算法
1)算法的原理
非對稱幾秒算法使用公鑰和私鑰兩個不一樣的祕鑰進行加密和解密。用一個祕鑰加密的數據僅能被另外一個祕鑰解密,且不能從一個祕鑰推出另外一個祕鑰。假設接收方的公鑰和私鑰分別爲P和Q,客戶端傳輸的明文數據爲M,×××網關加密後的數據爲C,而D、E分別爲加密和解密函數,數據加密過程以下:
(1)通訊雙方交換公鑰(主要是把接收方的公鑰傳輸給發送方)。
(2)發送方的×××網關經過公鑰將明文數據M加密成爲密文數據C。
(3)接收方的×××網關經過本身的私鑰解密數據。整個過程私鑰始終沒有在網絡中傳輸。
2)算法的優、缺點
非對稱加密算法的最大優點在於其安全性。目前爲止,尚未任何一種方法能夠在合理的時間範圍內攻破該種算法。爲了方便理解,在這裏舉例說明。
假若有兩個數字分別爲25169和29663,若是要求將兩個數相乘,能夠輕鬆地得出答案:746588047。但若是給出的是74588047,要求猜出該數字是由哪兩個數相乘得出的,就須要花費很長時間纔可能得出答案。若是數字很大,那麼可能花費一輩子的時間也難以得出答案,這就是非對稱加密算法的安全性所在。更重要的是,私鑰永遠不可能被任何其餘設備獲得。
非對稱加密算法也不是天衣無縫的,因爲其計算過程複雜,它的計算效率要比對稱加密算法低不少(大約慢1500倍)。
3)DH算法
經常使用的非對稱加密算法有:RSA(使用三位數學家名字的首字母來命名)、DSA(digital signature algorithm,數字簽名算法)、DH(diffie-hellman,迪菲赫爾曼)。前兩種經常使用於驗證功能,而DH通常被用來實現ipsec中的internet祕鑰交換(IKE)協議。
DH算法的原理與傳統意義上的非對稱加密算法有優勢區別:通訊雙方交換公鑰後,會用本身的祕鑰和對方的公鑰經過DH算法計算出一個共享祕鑰,而後雙方會使用這個共享祕鑰加密傳輸數據。從算法原理看,能夠說DH算法已經將對稱加密算法和非對稱加密算法綜合在一塊兒。
DH算法支持可變的祕鑰長度,因爲公鑰和私鑰的長度不一樣,所以經過DH算法計算出的共享祕鑰的有效長度也就不一樣。這些都是經過DH算法的祕鑰組定義的。Cisco的路由器只支持DH組一、2和5。其中DH組1的有效祕鑰長度爲768,DH組2的有效祕鑰長度爲1024,DH組5的有效祕鑰長度爲1536。祕鑰的有效長度越長,安全性也就越強。同時CPU的資源佔用率也就越高。所以,選擇合適的DH組要從網絡的安全需求和設備自己的性能兩個方面考慮。
三、祕鑰交換
在探討加密算法的過程當中,忽略了一個關鍵的問題:祕鑰的交換。許多有經驗的網絡工程師使用對稱加密算法加密數據時,都會擔憂祕鑰如何實現安全共享。
一種解決方案就是帶外共享,即通訊雙方經過一張磁盤、一張紙或打一個電話方式實現祕鑰的共享。這種方案最大的缺陷是實施過程花費的時間較長。若是管理的×××設備數量較多,或者公司對於祕鑰的安全性要求較高,須要一小時更換一次祕鑰,這種方案基本就不可能實施了。
另外一種解決方案就是帶內共享。即經過telnet、ssh等鏈接方式經過網絡傳輸祕鑰。這種方法能夠提升共享祕鑰的效率,但前提是必須保證傳輸祕鑰的通道絕對安全,而傳輸祕鑰自己就是爲了創建一條安全的通道,這彷佛陷入一種死循環中。
其實,解決這個問題並不困難,能夠經過非對稱加密算法(如前面提到的DH算法)加密對稱加密算法的祕鑰,在用對稱加密算法加密實際要傳輸的數據。若是公司須要一小時更換一次祕鑰,只需讓非對稱加密算法一小時從新計算一次便可,並且因爲非對稱加密算法的私鑰不會在網絡上傳輸,其安全性也可獲得保障。
3、數據報文驗證
數據報文驗證包括兩個方面:數據來源驗證(身份驗證)和報文完整性驗證。
一、HMAC功能實現驗證功能
在×××領域,對數據進行來源和完整性驗證一般是藉助散列算法實現的,HMAC(hash-based message authentication codes,散列消息代碼)功能專門開發用來處理數據包相關的驗證問題,它使用一個共享的對稱祕鑰來產生固定的輸出結果——數字簽名。HMAC屬於單向散列算法(hash算法)的一個子集,區別於前面講解的加密算法,散列算法是不可逆的,即加密後的數據是沒法還原的。
傳統意義上的散列函數對於保障數據傳輸的安全性存在缺陷,即網上的竊聽者能夠截獲傳輸的數據,而後篡改數據內容,並經過散列算法獲得固定的輸出,這樣接收方就不可能知道有人篡改過數據。而HMAC功能讓共享祕鑰成爲散列函數中的一個變量,經過計算獲得固定的輸出——數字簽名,這樣及時竊聽者截獲數據,因爲沒有共享祕鑰,他沒法再篡改後獲得正確的數字簽名,因此HMAC能夠防篡改(完整性驗證)。一樣,因爲共享祕鑰只有真正的通訊雙方具備,因此HMAC功能也能夠實現身份驗證。
HMAC算法的原理以下:
1)雙方共享執行hash算法的祕鑰key。
2)路由器A的用戶數據與共享祕鑰key經過hash算法獲得數字簽名。
3)路由器A將數字簽名和用戶數據一同傳輸給路由器B。
4)路由器B執行相同的算法過程獲得數字簽名。
5)路由器B比對數字簽名是否一致
若是數據在傳輸過程當中被篡改或損壞,接收方經過HASH算法計算出來的數字簽名就會和發送方的數字簽名不一樣,因而即可以得知數據的內容在傳輸過程當中被篡改。同理,若是竊聽者想冒充一個通訊方,他雖然能夠僞造通訊方的身份信息,但絕對沒法僞造身份信息和共享祕鑰計算後的數字簽名。
二、MD5和SHA
MD5和SHA是HMAC的兩種經常使用算法,在包括×××的不少領域獲得普遍應用。
MD5(message-digest algorithm 5,信息-摘要算法)在RFC1321中有明確規定,它建立了一個128位的簽名,是目前HMAC功能中應用最爲普遍的一種算法。例如:之前咱們講過的RIPV2,OSPF等不少路由選擇協議都使用該算法作驗證。MD5執行速度較快,但其安全性相對SHA稍差一點。
SHA(secure hash algorithm,安全散列算法)是由NIST(美國國家標準與技術研究院(National Institute of Standards and Technology,NIST)直屬美國商務部)開發的,且已成爲美國國家標準,通常成爲SHA-1,它能夠產生160位的簽名(20字節的長度)。
目前,已有人證實不一樣的輸入數值經過MD5計算能夠獲得相同的數字簽名,說明MD5的簽名可能具備必定程度的虛假性。SHA也出現相似的問題,而且有人宣稱數字簽名理論上是能夠僞造的。由於存在這種安全隱患,如今已經開發了SHA-256和SHA-512等(有時統稱爲SHA-2),它們具備更長的簽名長度,對於目前的計算機水平來講,能夠消除上述安全隱患。
4、IPSEC ×××
IPSEC技術實現×××是目前較爲普遍的一種應用,本節將探討IPSEC的創建過程及配置方法,實際工做中可能會遇到多個廠家的設備,有時須要網絡工程師分析分體、排除故障,所以,除了查閱各廠商的專業文檔外,瞭解×××創建的各個階段也是尤其重要的。
一、IPSec鏈接
對等體之間創建IPSec ×××的鏈接須要三個步驟。
1)流量觸發IPSec
通常來講,IPSec創建過程是由對等體之間發送的流量觸發的,一旦有×××流量通過×××網關,鏈接過程便開始創建了。固然,手工配置也能夠實現這一過程。在配置設備實現此步驟前,網絡工程師須要明確哪些流量須要被「保護」。
2)創建管理鏈接
IPSec使用ISAKMP/IKE階段1來構建一個安全的管理連結。這裏須要注意的是,這個管理鏈接只是一個準備工做,它不被用來傳輸實際的數據。在配置設備實現此步驟前,網絡工程師須要明確設備如何實現驗證,使用何種加密及認證算法,使用哪一種DH組等問題。
3)創建數據鏈接
IPSec基於安全的管理鏈接協商創建安全的數據鏈接,而ISAKMP/IKE階段2就是用來完成這個任務的,數據鏈接用於傳輸真正的用戶數據。在配置設備實現此步驟前,網絡工程師須要明確使用何種安全協議,針對具體的安全協議應使用加密或驗證算法,以及數據的傳輸模式(隧道模式或傳輸模式)等問題。
通過IPSec創建的三部曲後,×××流量即可以按照協商的結果被加密/解密了。可是×××鏈接並非一次性的,不管是管理鏈接仍是數據鏈接都有一個生存週期與之關聯,一旦到期鏈接便會被終止。若是須要繼續傳輸×××數據,鏈接須要從新被構建,這種設計主要是出於安全性的考慮的。
二、ISAKMP/IKE階段1
ISAKMP描述了祕鑰管理的架構,它定義了消息的格式和祕鑰交換協議的機制,以及構建鏈接的協商過程。而IKE是一個混合型的協議,它定義了祕鑰的產生、共享和管理。IKE使用UDP端口500,通常來講,ISAKMP和IKE關鍵字可互換使用。
ISAKMP/IKE階段1的交換過程有兩個模式:主模式和積極模式。積極模式比主模式快,主模式比積極模式安全。
不管×××的類型是站點到站點仍是遠程訪問,都須要完成三個任務。
(1)協商採用何種方式創建管理鏈接。
(2)經過DH算法共享祕鑰信息。
(3)對等體彼此進行身份驗證。
在主模式中,這三個任務是經過六個數據報文完成的:前兩個數據包用於協商對等體間的管理鏈接使用何種安全策略(交換ISAKMP/IKEc傳輸集);中間的兩個數據包經過DH算法產生並交換加密算法和HMAC功能所需的祕鑰,最後兩個數據包使用預共享祕鑰等方式執行對等體間的身份驗證。這裏須要注意的是,前四個報文爲明文傳輸,從第5個數據報文開始爲密文傳輸,而前四個數據包經過各類算法最終產生的祕鑰用於第五、地6個數據包及後續數據的加密。
一、ISAKMP/IKE階段1創建過程:
1)交換ISAKMP/IKE傳輸集
* ISAKMP/IKE傳輸集就是一組用來保護管理鏈接的安全措施,有些書籍稱之爲IKE策略或ISAKMP策略,它主要包括如下幾個方面。
* 加密算法:DES,3DES或AES。
* HMAC功能:MD5或SHA-1。
* 設備驗證的類型:預共享祕鑰(也可使用RSA簽名等方法)。
* Diffie-Hellman祕鑰組:cisco支持一、二、五、7(cisco的路由器不支持祕鑰組7)。
* 管理鏈接的生存週期。
設備可能會有不止一個傳輸集,若是設備發起來接,它會將傳輸集列表(包括全部傳輸集)發送到遠端對等體設備進行依次對比,直到找到匹配的結果。若是對比全部傳輸集後沒有發現匹配的傳輸集,管理鏈接將沒法創建,ipsec鏈接失敗。例如,兩端設備都只有一個傳輸集,且一端配置DES加密算法,另外一端配置了3DES加密算法,就會致使IPSEC創建失敗。若是給其另外一端多配置一個傳輸集使用DES算法,對等體會自動找到與之匹配的傳輸集,管理鏈接便會創建起來。
若是使用cisco產品實現×××鏈接,在ISAKMP/IKE傳輸集中除了生存週期,其餘項必須匹配才能創建鏈接。若是對等圖之間的生存週期不一樣,對等體會使用雙方生存週期數值較小的一個。這一樣是ipsec的規則。但有些廠商沒有遵循這一規則,所以若是遇到cisco與其餘廠商設備構建ipsec鏈接時,應注意確保ISAKMP/IKE傳輸集中全部參數的匹配。
2)經過DH算法實現祕鑰交換
第一步只是協商管理鏈接的安全策略,而共享祕鑰的產生與交換就要經過Diffie-Hellman來實現。
DH算法屬於非對稱加密算法,所以它將產生公鑰和私鑰對的組合,且彼此共享公鑰。×××對等體用對方的公鑰和本身的私鑰經過一種功能運算產生一個安全的共享祕鑰,即便有人截獲數據,也會由於沒有私鑰而沒法對出共享祕鑰。
3)實現設備之間的身份驗證
設備身份驗證時最常使用的方法就是預共享祕鑰,即在對等體之間經過帶外的方式共享祕鑰,並存儲在設備的本地。設備驗證的過程能夠經過加密算法或HMAC功能兩種方法實現,而加密算法不多用於身份驗證,多數狀況都會經過HMAC功能實現。
二、ISA/KMP/IKE階段1相關配置命令
1)配置安全策略
ISAKMP/IKE策略包含如下參數:策略的序列號、加密算法、驗證方法、DH組、生存週期。配置命令以下。(用於加密和驗證階段1第五、6個數據包)
Router(config)# crypto isakmp policy { 1-10000 } #創建ISAKMP/IKE管理鏈接策略,序列號越低,優先級越高 Router(config-isakmp)# encryption { des | 3des | aes } #指定加密算法 Router(config-isakmp)# hash { sha | md5 } #指定驗證過程採用HMAC的驗證功能 Router(config-isakmp)# authentication pre-share #採用預共享密鑰方式進行身份驗證 Router(config-isakmp)# group { 1 | 2 | 5 } #指定DH算法的密鑰長度,默認爲1,組號越大,算法越安全,佔用設備資源越多 Router(config-isakmp)# lifetime 86400 #指定管理鏈接的生存週期,默認86400s(24小時) Router# show crypto isakmp policy #查看上述配置
2)配置預共享祕鑰
經過下述命令配置預共享祕鑰。
Router(config)# crypto isakmp key { 0 | 6 } keystring address peer-address {subnet_mask} 參數解釋: 0表示祕鑰爲明文,6表示祕鑰被加密 Keystring表示祕鑰的具體內容 Peer-address表示對端與之共享祕鑰的對等體設備地址 Subnet_mask:這裏爲可選命令,若是沒有指定,默認將使用255.255.255.255做爲掩碼 Router# show crypto isakmp key #查看密鑰,祕鑰處於明文和密文時,命令顯示內容的差別
經過show run信息看到的祕鑰配置中仍然顯示明文的密碼。
爲了加強安全性,在IOS12.3(2)T版本中,增長了一個選項來加密祕鑰,可是要求設備的IOS鏡像必須支持AES加密,具體命令以下
Router(config)#key config-key password-encrypt New key: #輸入的祕鑰至少爲8個字母 Confirm key: #確認密鑰 Router(config)#password encryption aes
5、ISAKMP/IKE階段2
ISAKMP/IKE階段2主要是在兩個ipsec對等體間創建數據鏈接,其主要完成如下任務。
(1)定義對等體間須要保護何種流量。
(2)定義用來保護數據的安全協議。
(3)定義傳輸模式。
(4)定義數據鏈接的生存週期及祕鑰刷新的方式。
(5)其中,ipsec對等體通常是經過ACL來匹配那些須要加密傳輸的×××流量。
一、ISAKMP/IKE階段2的創建過程
1)安全關聯(sa)
Ipsec須要在兩個對等體之間創建一條邏輯鏈接,這就要使用一個被稱爲安全關聯的信令協議,這是由於ipsec須要無鏈接的IP協議在安全運行以前要成爲面向鏈接的協議。SA的鏈接是在源點和終點之間的單向鏈接,若是須要雙向鏈接,就須要兩個SA鏈接,每一個方向一個。SA鏈接由三個要素定義。
* 安全參數索引(SPI):用於惟一表示每條SA鏈接。
* 安全協議的類型:IPSEC定義了兩種安全協議,即AH和ESP。
* 目的IP地址。
ISAKMP/IKE階段2具備這種特性,即ISAKMP/IKE的數據鏈接實際是經過兩個單向鏈接創建的,而兩個鏈接採用的加密或者認證方式都是相同的。這就使ISAKMP/IKE階段2的這個特性不易被觀察到。
2)ISAKMP/IKE階段2的傳輸集
數據鏈接的傳輸集頂一個數據鏈接時如何被保護的。與管理鏈接的傳輸集相似。對等體設備能夠保存一個或多個傳輸集,但其具體內容卻徹底不一樣。
* 安全協議:AH協議,ESP協議。
* 鏈接模式:隧道模式,傳輸模式。
* 加密方式:對於ESP而言,有DES、3DES、AES、AES-19二、AES-256或不使用加密算法。
* 驗證方式:MD5或SHA-1。
3)ISAKMP/IKE階段2的安全協議
IPSEC的數據鏈接能夠經過安全協議實現對數據鏈接的保護:AH協議和ESP協議。能夠經過其中的一個協議來實現數據的加密和驗證,如使用ESP協議,也可使用兩個協議一塊兒來實現。AH使用IP協議號51,ESP使用IP協議號50。
AH(認證頭協議)在RFC 2402中有明肯定義。
* 數據完整性服務。
* 數據驗證。
* 保護數據回放***。
AH協議保護整個數據報文,但易變的字段除外,如IP包頭中的TTL和TOS字段。
* 下一個頭:這個八位字段定義了IP數據報文攜帶的有效載荷類型(TCP,UDP,ICMP,OSPF等),它與封裝前IP首部中的協議字段功能同樣。
* 有效載荷長度:這個八位字段的功能與字面意思不一樣,它並不定義有效載荷的長度,實際只定義了AH頭部的長度。
* 安全參數索引(SPI):這個32字段是由接收端設備分配的一個數字,用來惟一表示一條單向鏈接,能夠提供超過1億種標識號碼。
* 序列號:這個32位字段對於數據報文提供排序信息,用來防止重放***。即便數據報文重傳,該序列號也不會重複,並且當須要到達232也不會迴繞,而必須從新創建新的鏈接。
* 完整性校驗和(ICV):這個字段提供驗證功能,它就是MD5或SHA等HMAC功能產生的數字簽名。AH的ICV值是完整的IP數據報文產生的數字簽名,也就是說,它對整個IP數據報文進行完整性校驗。
從報文結果不難發現,AH協議只能實現驗證功能,而並未提供任何形式的數據加密,並且正由於其對整個IP數據報文實現驗證功能,因此他與NAT或PAT不能一塊兒使用。
ESP在RFC2406中有明肯定義,它與AH區別以下:
(1)ESP對用戶數據實現加密功能。
(2)ESP只對IP數據的有效載荷進行驗證,不包括外部的IP包頭。
所以,若是有***對IP包頭內容進行篡改,ESP是沒法檢測到的。這一點一點卻使ESP能夠和NAT一塊兒共用。可是,不管是ESP仍是AH都沒法和PAT一塊兒使用,這是因爲PAT要修改第四層的數據包頭。
* ESP頭部:SPI字段、序列號與AH報文結構中對應的字段的功能相似。
* ESP尾部:補丁用於減小有效載荷被竊聽並被猜想的可能性:補丁長度定義了補丁字節數。下一個頭與AH報文結構中對應字段的功能相似。ICV依然提供驗證功能,可是ICV只是ip數據報文的有效載荷經過HMAC功能產生的數字簽名。
另外,ESP協議加密功能的實現與採用何種鏈接模式相關。
二、ISAKMP/IKE階段2的配置命令
ISAKMP/IKE階段2的配置過程有三個部分組成。
1)配置Crypto ACL
定義何種流量須要被保護的一種方法就是創建一個crypto ACL,經過ACL匹配ipsec ***流量,其中,permit語句指定了須要被保護的流量,而deny語句定義了不須要保護的流量。一般狀況,兩端對等體設備上的crypto ACL互爲鏡像,不然階段2的鏈接創建就會失敗。配置命令以下:
Router(config)# access-list number{ deny | permit } protocol source mac destination mac
2)配置階段2的傳輸集
在ipsec對等體之間能夠配置多個數據鏈接的傳輸集,必須保證兩端至少有一對匹配的傳輸集,這樣ISAKMP/IKE階段2的數據SA鏈接才能協商成功。設備的傳輸集由設備性能決定,若是全部對等體設備的性能相近,則共同使用一種傳輸集便可,若是設備間性能差別較爲明顯,一般就須要多個傳輸集了。配置名另以下。
Router(config)# crypto ipsec transform-set transform_set_name transform1[transform2[transform3] 參數解釋: Transform_set_name:爲傳輸集名稱,該名稱具備惟一性,不能與任何其餘傳輸集相同 Transform1:傳輸集選項,參考下表:
AH |
ESP驗證 |
ESP加密 |
|
ah-md5-hmac ah-sha-hmac |
esp-md5-hmac esp-sha-hmac |
esp-null esp-des esp-3des |
esp-aes 128 esp-aes 192 esp-aes 256 |
Router(cfg-crypto-tran)# mode { tunnel | transport } #定義傳輸模式,默認爲隧道模式
要想查看路由器上的傳輸集,使用show crypto ipsec transform-set命令。
若是在數據鏈接創建以後修改傳輸集的配置,並不會影響現有的SA設置,只有鏈接的生存週期到期,SA纔會從新創建鏈接或者SA被手動清除(經過clear crypto sa或clear crypto ipsec sa命令)。
3)配置crypto map
Crypto map的功能就是將全部的信息組織在一塊兒構建ipsec會話。一般路由器的接口上只對應一個crypto map,一臺路由器能夠在多個接口上實現流量保護,這時可能就須要多個crypto map了。
Crypto map有兩種類型:靜態的crypto map和動態的crypto。在構建L2L會話時一般會使用靜態的,具體配置命令以下。
Router(config)# crypto map map_name seq_num ipsec-isakmp #seq_num爲map序列號,範圍1-65535,值越小,優先級越高 Router(config-crypto-m)# match address ACL_name_or_num #調用ACL的名字或編號 Router(config-crypto-m)# set peer { hostname| IP_address} #指定對等體設備,即配置的設備與誰創建鏈接 Router(config-crypto-m)# set transform-set transform_set_name1 #指定傳輸集的名稱,最多能夠列出六個傳輸集的名稱 Router(config-crypto-m)# set pfs [ group1 | group2 | group5 ] Router(config-crypto-m)# set security-association lifetime {seconds seconds| kilobytes kilobytes} Router(config-crypto-m)# set security-association idle-time seconds
命令解釋:
* Set PFS:(PFS:perfect forward secrecy,完美轉發保密)保證兩個階段中的祕鑰只能使用一次,進一步加強了安全性,但使用PFS可能佔用設備更多的資源。Set pfs命令用於啓用這項功能並指定使用哪一個DH祕鑰組,這是一條可選命令。
* Set security-association lifetime:用於指定SA的生存週期。默認狀況下,cisco的設備已經設定數據鏈接的生存週期爲3600s或4608000KB,至關於一小時內以10Mb/s速率傳輸的流量。生存週期的閾值是由時間和流量兩個方面的因素決定的。且至關於任何一項到達閾值的限制時,SA就會被從新協商創建。
若是在IPSEC對等體之間只設置lifetime,即便沒有ipsec流量傳遞,SA也始終處於激活狀態,若是在×××設備上配置了不少ipsec鏈接,這些暫時沒有實際意義的SA就會佔用設備的內存和CPU資源。從IOS12.2(15)T開始,cisco爲數據SA引入空閒超時計時器,若是沒有流量經過SA傳輸,SA就會被設備自動刪除。
* Set security-association idle-time命令用於設定空閒超時計數器,範圍爲60-86400s。默認狀況下,空閒超時計時器是關閉的。
IPSec ×××綜合案例
某軟件開發公司爲了下降人員成本,在中小城市創建了分支公司,可是分支公司上傳給總公司的數據通常爲軟件開發的關鍵業務數據,若是其被竊取,可能給公司帶來難以預計的損失。做爲該分支公司的網絡管理員,對網絡提出如下設計需求。
(1)分支公司開發項目小組所在網絡地址爲172.16.10.0/24,該網絡的主機能夠經過***訪問總公司開發數據服務器(10.10.33.0/24),但不能訪問internet。
(2)分支公司的其餘客戶端(同屬於172.16.0.0/16網段)能夠訪問internet。
根據上述需求能夠明顯看出,網絡管理員須要在分支公司的網關路由器上同時配置***和PAT。
在GNS3上實驗拓撲以下圖:
在3sw上的配置
3sw#vlan database #建立VLAN 3sw(vlan)#vlan 10 3sw(vlan)#vlan 20 3sw(vlan)#exit 3sw#conf t 3sw(config)#int vlan 10 #配置VLAN地址 3sw(config-if)#ip add 172.16.10.254 255.255.255.0 3sw(config-if)#no sh 3sw(config-if)#int vlan 20 3sw(config-if)#ip add 172.16.20.254 255.255.255.0 3sw(config-if)#no sh 3sw(config-if)#int f1/0 3sw(config-if)#no switchport 3sw(config-if)#ip add 192.168.1.2 255.255.255.252 3sw(config)#int f1/1 3sw(config-if)#switchport access vlan 10 3sw(config-if)#int f1/2 3sw(config-if)#switchport access vlan 20 3sw(config-if)#exit 3sw(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.1 #配置路由
在分公司R1的配置以下:
R1#conf t R1(config)#int f0/0 #配置接口地址 R1(config-if)#ip add 192.168.1.1 255.255.255.252 R1(config-if)#no sh R1(config-if)#int f0/1 R1(config-if)#ip add 100.0.0.1 255.255.255.252 R1(config-if)#no sh R1(config)#ip route 0.0.0.0 0.0.0.0 100.0.0.2 #配置路由 R1(config)#ip route 172.16.0.0 255.255.0.0 192.168.1.2 R1(config)#access-list 1 deny 172.16.10.0 0.0.0.255 #配置NAT R1(config)#access-list 1 permit 172.16.0.0 0.0.255.255 R1(config)#ip nat inside source list 1 interface f0/1 overload R1(config)#int f0/0 R1(config-if)#ip nat inside R1(config)#int f0/1 R1(config-if)#ip nat outside R1(config)#crypto isakmp policy 1 #配置ISAKMP策略 R1(config-isakmp)#encryption 3des #配置加密算法 R1(config-isakmp)#hash sha #配置數字簽名 R1(config-isakmp)#authentication pre-share #採用預共享密鑰 R1(config-isakmp)#group 2 #指定DH密鑰組 R1(config-isakmp)#lifetime 10000 #設定生存週期 R1(config)#crypto isakmp key 6 ***key address 200.0.0.1 #配置預共享密鑰 R1(config)#access-list 100 permit ip 172.16.10.0 0.0.0.255 10.10.33.0 0.0.0.255 #ACL R1(config)#crypto ipsec transform-set ***-set esp-des ah-sha-hmac #配置IPSec變換集 R1(cfg-crypto-trans)#exit R1(config)#crypto ipsec security-association lifetime seconds 1800 #設定生存週期 R1(config)#crypto map ***-map 1 ipsec-isakmp #配置加密映射 R1(config-crypto-map)#set peer 200.0.0.1 #配置IPSec對等體設備 R1(config-crypto-map)#set transform-set ***-set #應用IPSec變換集 R1(config-crypto-map)#match address 100 #應用ACL R1(config)#int f0/1 #將其映射到接口 R1(config-if)#crypto map ***-map
在ISP上配置:
ISP#conf t ISP(config)#int f0/0 ISP(config-if)#ip add 100.0.0.2 255.255.255.252 ISP(config-if)#no sh ISP(config-if)#int f0/1 ISP(config-if)#ip add 200.0.0.2 255.255.255.252 ISP(config-if)#no sh
在總公司R2的配置:
R3#conf t R3(config)#int f0/0 R3(config-if)#ip add 200.0.0.1 255.255.255.252 R3(config-if)#no sh R3(config-if)#int f0/1 R3(config-if)#ip add 10.10.33.254 255.255.255.0 R3(config-if)#no sh R3(config)#ip route 0.0.0.0 0.0.0.0 200.0.0.2 R3(config)#crypto isakmp policy 1 R3(config-isakmp)#encryption 3des R3(config-isakmp)#hash sha R3(config-isakmp)#authentication pre-share R3(config-isakmp)#group 2 R3(config-isakmp)#lifetime 10000 R3(config)#crypto isakmp key 6 ***key address 100.0.0.1 R3(config)#access-list 100 permit ip 10.10.33.0 0.0.0.255 172.16.10.0 0.0.0.255 R3(config)#crypto ipsec transform-set ***-set esp-des ah-sha-hmac R3(cfg-crypto-trans)#exit R3(config)#crypto ipsec security-association lifetime seconds 1800 R3(config)#crypto map ***-map 1 ipsec-isakmp R3(config-crypto-map)#set peer 100.0.0.1 R3(config-crypto-map)#set transform-set ***-set R3(config-crypto-map)#match address 100 R3(config)#int f0/0 R3(config-if)#crypto map ***-map
驗證IPSec ×××
R1#show crypto isakmp policy #顯示ISKMP協商策略的配置結構 R1#show crypto isakmp sa #查看管理鏈接SA的狀態 R1#show crypto ipsec transform-set #查看IPSec變換集 R3#show crypto ipsec security-association lifetime #顯示數據鏈接的生存週期 R1#show crypto ipsec sa #查看數據鏈接SA的細節信息 R1#show crypto map #查看Crypto Map的信息