CIsco路由器實現IPSec 虛擬專用網原理及配置詳解

博文大綱:
1、虛擬專用網概述;
1.虛擬專用網的定義;
2.虛擬專用網的模型與類型;
(1)虛擬專用網的鏈接模式;
(2)虛擬專用網的類型;
2、虛擬專用網技術;
1.加密技術;
(1)對稱加密算法;
(2)非對稱加密算法;
(3)密鑰交換;
2.數據報文驗證;
(1)HMAC功能實現驗證功能;
(2)MD5和SHA;
3、IPSec 虛擬專用網;
1.IPsec鏈接;
2.ISAKMP/IKE階段1;
3.ISAKMP/IKE階段2;
4、配置實現IPSec 虛擬專用網;
5、經常使用排錯的命令;算法

關於虛擬專用網理論知識較多,看一次、兩次的,可能不能徹底掌握,建議沒事多看看!數據庫

1、虛擬專用網概述

虛擬專用網技術期初是爲了解決明文數據在網絡上傳輸所帶來的安全隱患而產生的。TCP/IP協議族中的不少協議都是採用明文方式傳輸的。好比:Telnet、FTP、TFTP等。一些非法用戶可能爲了獲取利益,經過一系列非法手段能夠截獲明文數據,使企業和我的蒙受損失。安全

虛擬專用網技術能夠從某種程度上解決這種問題。它能夠對公網上傳輸的數據進行加密,及時非法用戶經過某種手段獲取到數據,也沒法瞭解數據信息的真正含義;也能夠實現數據傳輸雙方的身份驗證,避免非法用戶假裝成網絡中的合法用戶***網絡資源。網絡

1.虛擬專用網的定義

虛擬專用網就是在兩個網絡實體之間創建的一種受保護的鏈接,這兩個實體能夠經過點到點的鏈路直接相連,一般狀況下,他們會相隔較遠的距離。框架

對於「受保護」一詞,能夠從如下方面理解:ide

  • 經過使用加密技術防止數據被竊聽;
  • 經過數據完整性驗證數據被破壞、篡改;
  • 經過認證機制實現通訊方身份確認,來防止通訊數據被截獲和回放;

此外,虛擬專用網還定義了一下功能:函數

  • 何種流量須要被保護;
  • 數據被保護的機制;
  • 數據的封裝過程;

實際工做環境中的虛擬專用網不必定包含上述的全部功能,這要結合實際狀況,並且不少企業可能採用不止一種的虛擬專用網解決方案。性能

2.虛擬專用網的模型與類型

(1)虛擬專用網的鏈接模式

虛擬專用網有兩種基本的鏈接模式:傳輸模式和隧道模式;測試

1)傳輸模式

如圖:
CIsco路由器實現IPSec 虛擬專用網原理及配置詳解
傳輸模式一個最顯著的特色就是,在整個虛擬專用網的傳輸過程當中,IP包頭並無被封裝進去,這就意味着從源端到目的端數據始終使用原有的IP地址進行通訊。而傳輸的實際數據載荷被封裝在虛擬專用網報文中,對於大多數虛擬專用網傳輸來講,虛擬專網網的報文封裝過程就是數據的加密過程,所以,非法用戶即時截獲數據後也沒法破解數據內容,卻可清晰的知道通訊雙反的地址信息。ui

因爲傳輸模式封裝結構相對簡單(每一個數據報文比隧道模式結構節省20字節),所以傳輸效率較高,多用於通訊雙方在用一個局域網內的狀況。

2)隧道模式

如圖:
CIsco路由器實現IPSec 虛擬專用網原理及配置詳解
隧道模式與傳輸模式的區別顯而易見,虛擬專用網設備將整個三層數據報文封裝在虛擬專用網數據內,再爲封裝後的數據報文添加新的IP包頭。因爲在新IP包頭中封裝的是虛擬專用網設備的IP地址信息,因此當非法用戶截獲數據後,不但沒法瞭解實際載荷數據的內容,同時也沒法知道實際通訊雙方的地址信息。

因爲隧道模式的虛擬專用網在安全性和靈活性方面有很大地優點,在企業環境中應用十分普遍,總公司與分公司跨廣域網的通訊,移動用戶在公網訪問公司內部資源等不少狀況,都會應用隧道模式的虛擬專用網對數據傳輸進行加密。

(2)虛擬專用網的類型

通訊狀況下,虛擬專用網的類型分爲站點到站點虛擬專用網和遠程訪問虛擬專用網。

1)站點到站點虛擬專用網

站點到站點虛擬專用網就是經過隧道模式在虛擬專用網網關之間保護兩個或更多的站點之間的流量,站點間的流量一般是指局域網之間(L2L)的通訊流量。L2L虛擬專用網多用於總公司域分公司、分公司之間在公網上傳輸重要業務數據。

如圖:
CIsco路由器實現IPSec 虛擬專用網原理及配置詳解
對於兩個局域網的終端用戶來講,在虛擬專用網網關中間的網絡是同名的,就好像經過一臺路由器鏈接兩個局域網。總公司的終端設備經過虛擬專用網訪問分公司的網絡資源,數據包封裝的IP地址都是公司內網地址(通常是私有地址),而虛擬專用網網關對數據包進行的再次封裝過程,客戶端是全然不知的。

2)遠程訪問虛擬專用網

遠程訪問虛擬專用網一般用於單用戶設備與虛擬專用網網關之間的通訊鏈接,單用戶設備通常爲一臺PC或小型辦公網絡等。虛擬專用網鏈接的一端爲PC,可能會讓不少人誤解遠程訪問虛擬專用網使用傳輸模式,但由於該種虛擬專用網每每也是從公網傳輸關鍵數據,並且單一用戶更容易成爲非法用戶的目標,因此遠程訪問虛擬專用網對於安全性的要求較高,更適用於隧道模式。

要想實現隧道模式的通訊,就須要給遠程客戶端分配兩個IP地址,一個是它本身的NIC地址,另外一個是內網地址,也就是說遠程客戶端在虛擬專用網創建過程當中同時充當虛擬專用網網關(使用NIC地址)和終端用戶(使用內網地址)。

如圖:
CIsco路由器實現IPSec 虛擬專用網原理及配置詳解
當遠端的移動用戶與總公司的網絡實現遠程訪問***鏈接後,就好像稱爲總公司局域網中一個普通用戶,不只使用總公司網段內的地址訪問公司資源,並且由於其使用隧道模式,真是的IP地址將被隱藏起來,實際公司通訊的一段鏈路對於遠端移動用戶而言就像是透明的。

2、虛擬專用網技術

1.加密技術

加密就是一種將數據轉換成另外一種形式的過程,若是不瞭解用於加密的算法,解密幾乎是可能的。

實際虛擬專用網設備所使用的算法是至關複雜的,通常會涉及一些較爲複雜的數學算法,利用這些短髮能夠實現數據加密、數據完整性驗證、身份驗證等虛擬專用網的基本功能。通常來講,能夠將這些加密算法分爲兩大類:對稱加密和非對稱加密。

(1)對稱加密算法

對稱加密算法使用統一密鑰對信息提供安全的保護,對稱加密算法數據加密、解密過程如圖:
CIsco路由器實現IPSec 虛擬專用網原理及配置詳解

目前最經常使用的加密算法有DES、3DES、AES等。

1)DES算法

DES算法曾經在虛擬專用網領域應用很廣,屬於IBM公司的研發產品,其密鑰長度爲64位,其中8位用於奇偶校驗,因此實際有效長度爲56位。雖然該算法目前沒有找到更好的方法破解,可是經過一些技術手段已經能夠在較短的時間內破解DES算法,因此在實際工程實施過程當中已經不建議使用該種算法。

2)3DES算法

理論上將3DES算法就是DES算法的加強版本,由於3DES使用了三個階段的DES,即同時使用三個不一樣的56位密鑰,因此至關於產生了一個168位的有效密鑰長度,這種級別的密鑰目前尚未計算機有能力在較短期內破解,並且其執行效率雖然在軟件環境中比較慢,可是在硬件環境中並不明顯。

3)AES算法

3DES算法雖然目前爲止是安全的,但隨着計算機硬件的更新,總有一天也會變的不安全。AES算法比3DES算法更安全,它支持12八、192和256爲密鑰程度,有效的密鑰長度可達千位。更重要的是,AES算法那採用更爲高效的編寫方法,對CPU的佔有lv較少,因此諸如IPSec 虛擬專用網等實際工程的實施過程當中趨向於使用AES來提供更好的加密功能。

(2)非對稱加密算法

1)算法原理

非對稱算法使用公鑰和私鑰兩個不一樣的密鑰進行加密和解密。用一個密鑰加密的數據僅能被另外一個密鑰解密,且不能從一個密鑰推算出另外一個密鑰。非對稱加密算法數據加密、解密過程如圖:
CIsco路由器實現IPSec 虛擬專用網原理及配置詳解

2)算法的優、缺點

非對稱加密算法最大的優點就在於其安全性。目前爲止,尚未任何一種方式能夠在合理的時間範圍內破解該算法。

非對稱加密的算法也不是完美的,因爲其計算過程複雜,它的計算效率要比對稱加密算法低不少。

3)DH算法

經常使用的非對稱算法有RSA、DSA、DH。前兩種算法經常使用於驗證功能,而DH算法通常被用來實現IPSec中的internet密鑰交換(IKE)協議。

DH算法的原理與傳統意義上的非對稱加密算法有一點區別:通訊雙方交換公鑰後,會用本身的密鑰和對方的密鑰經過DH算法計算出一個共享密鑰,而後雙方會使用這個共享密鑰加密傳輸數據。從算法原理上看,能夠說DH算法已經將對稱加密算法與非對稱加密算法結合到了一塊兒。

DH算法支持可變的密鑰長度,因爲公鑰和私鑰的長度不一樣,所以經過DH算法計算出的共享密鑰的有效長度也就不一樣。這些都是經過DH算法的密鑰組定義的。密鑰的有效長度越長,安全性也就越強,同時CPU的資源佔用率也就越高。所以,選擇合適的DH組要從網絡的安全需求和設備自己的性能兩方面考慮。

(3)密鑰交換

解決密鑰交換的方法有:

  • 帶外共享:即通訊雙方經過一個磁盤、一張紙或一個電話等方式實現密鑰的共享。這種方案最大的缺陷就是事實過程花費的時間較長,若是管理的虛擬專用網設備數量較多,或者公司對於密鑰的安全要求較高,須要一小時更換一次密鑰,這種方式基本就不會使用了;
  • 帶內管理:即經過Telnet、SSH等鏈接方式經過網絡傳輸密鑰,這種方法能夠提升共享密鑰的效率,但前提是必需要保證傳輸密鑰的通道絕對安全,而傳輸密鑰自己就是爲了創建一條安全的通道,這彷佛陷入一種死循環中;

其實解決這個問題能夠經過非對稱加密算法那加密對稱加密的密鑰,再用對稱加密算法加密實際要傳輸的數據便可!

2.數據報文驗證

數據報文驗證包括兩個方面:數據庫來源驗證(身份驗證)和報文完整性驗證。

(1)HMAC功能實現驗證功能

在虛擬專用網領域,對數據進行來源和完整性驗證一般是藉助三列算法實現的,HMAC(散列消息驗證碼)功能專門用來處理數據及數據包相關的驗證問題,它使用一個共享的對稱密鑰來產生固定的輸出結果——數字簽名。HMAC屬於單向散列算法的一個子集,散列算法是不可逆的,即散列後的數據是沒法還原的。

傳統意義上的散列函數對於保障數據傳輸的安全性存在缺陷,即網上的竊聽者能夠截獲傳輸的數據,而後篡改數據內容,並經過散列算法獲得固定的輸出,這樣接收方就不可能知道有人篡改過數據。而HMAC功能讓密鑰稱爲散列函數其中的一個變量,經過計算的到固定的輸出——數字簽名,這樣即便竊聽者截獲數據,因爲沒有共享密鑰,他沒法在篡改數據後獲得正確的數字簽名,因此HMAC能夠防篡改(完整性驗證)。一樣,因爲共享密鑰只有真正的通訊雙方具備,全部HMAC功能也可實現身份驗證。

如圖:
CIsco路由器實現IPSec 虛擬專用網原理及配置詳解

HMAC算法的原理以下:
(1)雙方共享執行Hash算法的密鑰key;
(2)路由器A的用戶數據與共享密鑰key經過Hash算法獲得數字簽名;
(3)路由器A將數字簽名和用戶數據一同傳送會給路由器B;
(4)路由器B執行相同的算法過程獲得數字簽名;
(5)路由B比對數字簽名是否一致;

若是數據在傳輸過程被篡改或損壞,接收方經過Hash算法計算出來的數字簽名就會和發送方的數字簽名不一樣,因而即可以得知數據的內容在傳輸過程當中被篡改。同理,若是竊聽者冒充其中一個通訊方,它雖然能夠僞造通訊方的身份信息,但絕對沒法僞造身份信息和共享密鑰計算後的數字簽名。

(2)MD5和SHA

MD5(信息——摘要算法)在REC 1321中有明確規定,它建立了一個128位的數字簽名,是目前HMAC功能中最爲普遍的一種算法。

SHA(安全散列算法)是由NIST開發的,且已稱爲美國國家標磚,通常稱爲SHA-1,它能夠產生160爲的簽名(20字節的長度)。

目前,已有人證實不一樣的輸入數值能夠經過MD5計算能夠獲得相同的數字簽名,說明MD5的簽名可能具備必定程度的虛假性。SHA也出現相似問題,而且有人宣稱數字簽名理論上是能夠僞造的。由於存在這種安全隱患,如今已經開發了SHA-256和SHA-512等。它們具備更長的簽名長度。對於目前的計算水平來講,能夠消除上述安全隱患。

3、IPSec 虛擬專用網

IPSec技術實現虛擬專用網是目前較爲普遍的一種應用。

1.IPsec鏈接

對等體之間創建IPSec 虛擬專用網的鏈接須要三個步驟。

1)流量觸發IPSec

通常來講,IPSec創建過程是由對等體之間發送的流量觸發的,一旦有虛擬專用網流量通過虛擬專用網網關,鏈接過程便開始創建,固然,手動配置也能夠實現這一過程,在配置設備實現此步驟前,網絡工程師須要明確哪些流量須要被「保護」。

2)創建管理鏈接

IPSec使用ISAKMP/IKE階段1來構建一個安全的管理鏈接,這裏須要注意的是,這個管理鏈接只是一個準備工做,它不被用來傳輸實際的數據。在配置設備實現此步驟前,網絡工程師須要明確設備如何實現驗證,使用何種加密機認證算法,使用哪一種DH組等問題。

3)創建數據鏈接

IPSec基於安全的管理鏈接協商創建安全的數據鏈接,而ISAKMP/IKE階段2就是用來完成這個任務的,數據鏈接用於傳輸真正的用戶數據。在配置設備實現此步驟前,網絡工程師須要明確使用何種安全協議,針對具體的安全協議應使用加密或驗證算法,以及數據的傳輸模式(隧道模式或傳輸模式)等問題。

通過IPSec創建的三部曲後,虛擬專用網流量即可以按照協商的結果被加密/解密了,可是虛擬專用網鏈接並非一次性的,不管是管理鏈接仍是數據庫鏈接都有一個生存週期與之關聯,一旦到期鏈接便會被停止。若是須要繼續傳輸虛擬專用網數據,鏈接還須要從新被構建,這種設計主要是處於安全性的考慮。

2.ISAKMP/IKE階段1

ISAKMP描述了密鑰管理的框架,它定義了消息的格式和密鑰交換協議的機制,以及構建鏈接的協商過程;而IKE(因特網密鑰交換)是一個混合型協議,它定義了密鑰的產生、共享和管理。IKE使用UDP端口500。通常來講,ISAKMP和IKE關鍵字可互換使用。

ISAKMP/IKE階段1的交換過程有兩個模式:主模式和積極模式。積極模式比主模式快、主模式比積極模式安全。

不管虛擬專用網的類型是站點到站點仍是遠程訪問,都須要完成三個任務:

  • 協商採用何種方式創建管理鏈接;
  • 經過DH算法共享密鑰信息;
  • 對等體彼此進行身份驗證;

在主模式中,這三個任務是經過6個數據報文來完成的:

  • 前兩個數據包用於協商對等體間的管理鏈接使用何種安全策略(交換ISAKMP/IKE傳輸集);
  • 中間的兩個數據包經過DH算法產生並交換加密算法和HMAC功能所需的密鑰;
  • 最後兩個數據包使用預共享密鑰等方式執行對等體間的身份驗證;

須要注意的是,前四個報文爲明文傳輸,從第五個數據報文開始爲密文傳輸,而前四個數據包經過各類算法最終產生的密鑰用於第五、第6個數據包及後續數據的加密。

(1)ISAKMP/IKE階段1創建過程

1)交換ISAKMP/IKE傳輸集

ISAKMP/IKE傳輸集就是一組用來保護管理鏈接的安全措施,主要包括如下幾個方面:

  • 加密算法:DES、3DES和AES;
  • HMAC算法:MD5或SHA-1;
  • 設備驗證的類型:預共享密鑰;
  • DH密鑰組:Cisco支持一、二、五、7(Cisco路由器不支持密鑰組7);
  • 管理鏈接的生存週期;

設備可能會有不止一個傳輸集,若是設備發起鏈接,它會將傳輸集列表(包括全部的傳輸集)發送到遠端對等體設備並進行以此對比,直到找到匹配的結果。若是對比全部傳輸集後沒有發現匹配的傳輸集,管理鏈接將沒法創建,IPSec鏈接失敗。

若是使用Cisco產品實現虛擬專用網鏈接,在ISAKMP/IKE傳輸集中除了生存週期,其餘項必須匹配才能創建鏈接。乳溝對等體之間的生存週期不一樣,對等體會使用雙方生存週期數值較小的一個。這一樣是IPSec的規則,但有些廠商沒有遵循這一規則,所以若是遇到Cisco與其餘廠商設備構建IPSec鏈接時,應注意確保ISAKMP/IKE傳輸集中全部參數的匹配。

2)經過DH算法實現密鑰交換

DH算法屬於非對稱加密算法,所以它將產生公鑰/私鑰對的組合,且彼此共享公鑰。虛擬專用網對等體用對方的公鑰和本身的私鑰經過一種功能運算產生一個安全的共享密鑰。及時有人截獲數據,也會由於沒有私鑰而沒法推導出共享密鑰。

3)實現設備間的身份驗證

設備身份驗證最經常使用的方法就是預共享密鑰,即在對等體之間經過帶外的方式共享密鑰,並存儲子啊設備的本地。設備驗證的過程能夠經過加密算法或HMAC功能兩種方法實現。而加密算法不多用於身份驗證,多數狀況都會經過HMAC功能實現。

(2)ISAKMP/IKE階段1相關配置命令

本篇博文以Cisco的路由器爲例!

1)配置安全策略

ISAKMP/IKE策略包含如下參數:策略的序列號、加密算法、散列算法、驗證方法、DH組、生存週期等。命令以下:

R1(config)#crypto isakmp policy 1
//用於創建創建ISAKMP/IKE的管理鏈接策略;
//每一個策略對應一個序列號,範圍從1~10000,數值越低,優先級越高;
R1(config-isakmp)#encryption des
//用於指定管理鏈接創建的最後兩個報文(身份驗證)採用何種加密算法(des、3des、aes)
R1(config-isakmp)#hash sha
//指定了驗證過程採用的散列算法(sha、md5)
R1(config-isakmp)#authentication pre-share
//指定設備身份驗證的方式{pre-shara(預共享密鑰)| rsa-encr | rsa-sig}
R1(config-isakmp)#group 1
//用於指定DH密鑰組,默認使用DH1;
//組號也大,算法越安全,佔用設備的資源也就越多。範圍(一、二、五、1四、1五、16)
R1(config-isakmp)#lifetime 86400  
//指定管理鏈接的生存週期,默認值爲86400s(24小時)
R1#show crypto isakmp policy
//查看配置安全策略的相關配置
Global IKE policy
Protection suite of priority 1      //這裏都是策略1指定的各項參數
        encryption algorithm:   DES - Data Encryption Standard (56 bit keys).
        hash algorithm:         Secure Hash Standard
        authentication method:  Pre-Shared Key
        Diffie-Hellman group:   #1 (768 bit)
        lifetime:               86400 seconds, no volume limit
Default protection suite             //這裏則顯示了設備默認的配置參數
        encryption algorithm:   DES - Data Encryption Standard (56 bit keys).
        hash algorithm:         Secure Hash Standard
        authentication method:  Rivest-Shamir-Adleman Signature
        Diffie-Hellman group:   #1 (768 bit)
        lifetime:               86400 seconds, no volume limit

2)配置預共享密鑰

R1(config)#crypto isakmp key 0 123456 address 192.168.1.1
//其中0表示明文,6表示密文
//123456就是密鑰的具體內容
//192.168.1.1就是對端與之共享密鑰的對等體設備地址
//IP地址後面若是不加子網掩碼的話,默認使用32位掩碼
R1#show crypto isakmp key                   //查看預共享密鑰的配置
Keyring               Hostname/Address                   Preshared Key
//明文狀態下,若是是密文狀態下,密鑰內容將不會顯示
default               192.168.1.1                        123456

經過「show run」也只能看到明文的密鑰信息

爲了加強安全性,在IOS 12.3(2)T版本中,增長了一個選項來加密密鑰,可是要求設備的IOS鏡像必須支持AES加密,命令以下:

R1(config)#key config-key password-encrypt
New key: 
Confirm key:                    //密碼不得小於8個字符
R1(config)#password encryption aes

R1#show run
!
crypto isakmp policy 1
 authentication pre-share
crypto isakmp key 6 GZF]iBbT^d_eBMHQT^HIhZ`XFJhAAB address 192.168.1.1
!   
//也只能看到密鑰加密後的效果
R1(config)#no key config-key password-encrypt 
//能夠致使共享密鑰不可用
WARNING: All type 6 encrypted keys will become unusable
Continue with master key deletion ? [yes/no]: yes

3.ISAKMP/IKE階段2

ISAKMP/IKE階段2主要是在兩個IPSec對等體間創建數據鏈接,其主要完成如下任務:

  • 定義對等體間須要保護何種流量;
  • 定義用來保護數據的安全協議;
  • 定義傳輸模式;
  • 定義數據鏈接的生存週期及密鑰刷新的方式;

其中,IPSec對等體通常是經過ACL來匹配那些須要加密傳輸的虛擬專用網流量。

(1)ISAKMP/IKE階段2創建過程

1)安全關聯

IPSec須要在對等體之間創建一條邏輯鏈接,這就要使用一個被稱爲安全關聯(SA)的信令協議,這是由於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-12八、AES-19二、AES-256或不可以使用加密算法;
  • 驗證方式:MD5或SHA-1;

3)ISAKMP/IKE階段2的安全協議

IPSec的數據鏈接能夠經過安全協議實現對數據鏈接的保護:AH協議和ESP協議,能夠經過其中的一個協議來實現數據的加密和驗證,如使用ESP協議;也可使用兩個協議一塊兒來實現。AH使用IP協議號51,ESP使用IP協議號50。

1.AH協議

AH協議在RFC 2402中有明確的定義,它提供瞭如下安全功能:

  • 數據完整服務;
  • 數據驗證;
  • 保護數據回放非法行爲;

AH協議保護整個數據報文,但易變的字段除外,如IP包頭中的TTL和TOS字段。如圖:
CIsco路由器實現IPSec 虛擬專用網原理及配置詳解

  • 下一個頭:這個八位字段定義了IP數據報文攜帶的有效載荷類型(TCP、UDP、ICMP、OSPF等),它與封裝前IP首部中的協議字段功能同樣;
  • 有效載荷長度:這個八位字段的功能與字面意思不一樣,它並不定義有效載荷的長度,實際只定義了AH頭部的長度;
  • 安全參數索引(SPI):這個32位字段是由接收端設備分配的一個數字,用來惟一標識一個單向鏈接,能夠提供超過1億中標識號碼;
  • 序列號:這個32位字段對於數據報文提供排序信息,用來防止重放***。即便數據報文重傳。該序列號也不會重複,並且當序號達到2的32次方也不會迴繞,而必須從新創建新的鏈接;
  • 完整性校驗和(ICV):這個字段提供驗證功能,它就是MD5或SHA等HMAC功能產生的數字簽名。AH的ICV值是完整的IP數據報文產生的數字簽名,也就是說,它對整個IP數據報文進行完整性驗證;

從報文結果中能夠看出,AH協議只實現驗證功能,而並未提供任何形式的數據加密,並且正由於其對於整個IP數據報文實現驗證功能,因此它與NAT或PAt不能一塊兒使用。

2.ESP協議

ESP在RFC 2406中有明確的定義,它與AH的區別以下:

  • ESP對用戶數據實現加密功能;
  • ESP只對IP數據的有效載荷進行驗證,不包括外部的IP包頭;

所以,若是有非法用戶對IP包頭內容進行篡改的話,ESP是沒法檢測到的。而NAT也會修改外部的IP信息,因此ESP能夠和NAT共用。因此,AH不管如何也不能和NAT共用,而ESP卻能夠,再配合NAT-T技術,ESP甚至能夠和PAT共用。

ESP默認狀況下不能穿越PAT設備,由於PAT會修改傳輸層頭部的端口信息。而傳輸層的頭部在ESP的封裝中是被加密的,因此PAT沒法修改端口信息。而NAT-T技術就是經過額外增長一個傳輸層頭部讓PAT能夠工做。

如圖:
CIsco路由器實現IPSec 虛擬專用網原理及配置詳解

  • ESP頭部:SPI字段、序列號與AH報文結構中對應字段的功能相似;
  • ESP尾部:補丁用於減小有效載荷被竊聽並被猜想的可能性;
  • 補丁長度定義了補丁的字節數;
  • 下一個頭與AH報文結構中對應字段的功能相似;
  • ICV依然提供驗證功能,可是ICV只是IP數據報文的有效載荷經過HMAC功能產生的數字簽名;

(2)ISAKMP/IKE階段2相關配置命令

ISAKMP/IKE階段2的配置過程由三部分組成:

1)配置Crypto ACL

定義何種流量須要保護的一中方法就是創建一個Crypto ACL,經過ACL匹配IPSec 虛擬專用網流量。配置命令以下:

access-list 100 permit ip  192.168.10.0 0.0.0.255 192.168.20.0 0.0.0.255
//定義一個擴展ACL,容許源地址192.168.10.0網段訪問192.168.20.0網段
//一般狀況下,兩端對等體設備上的Crypto ACL互爲鏡像

2)配置階段2的傳輸集

在IPSec對等體之間能夠配置多個數據鏈接的傳輸集,必須保證兩端至少有一對匹配的傳輸集,這樣ISAKMP/IKE階段2的數據SA鏈接才能協商成功。設備的傳輸集由設備性能決定,若是全部對等體設備的性能相近,則共同使用一種傳輸集便可;若是設備間性能差別較爲明顯,一般就須要多個傳輸集。配置命令以下:

R1(config)#crypto ipsec transform-set accp-set esp-des ah-sha-hmac
//定義傳輸集名稱(名稱必須是惟一的),後面就是一些選項
//使用esp-des加密,使用AH協議中的 ah-sha-hmac
R1(cfg-crypto-trans)#mode tunnel
//採用隧道模式
R1#show crypto ipsec transform-set 
//查看路由器上的傳輸集
Transform set accp-set: { ah-sha-hmac  } 
   will negotiate = { Tunnel,  }, 
   { esp-des  } 
   will negotiate = { Tunnel,  },

傳輸集選項,如圖:
CIsco路由器實現IPSec 虛擬專用網原理及配置詳解

若是在數據鏈接創建以後修改傳輸集的配置,並不會影響現有的SA設置,只有鏈接的生存週期到期,SA纔會從新創建鏈接或被手動清除(經過「clear crypto sa」 或「clear crypto ipsec sa」命令)。

3)配置Crypto Map

Crypto Map的功能就是將全部信息組織在一塊兒構建IPSec會話。一般路由器的接口上只對應一個Crypto Map,一條路由器能夠在多個接口上實現流量保護,這是可能就須要多個Crypto Map了。

Crypto Map 有兩種類型:靜態的Crypto Map和動態的Crypto Map。在構建L2L會話時一般會使用講臺的Crypto Map。配置命令以下:

R1(config)#crypto map benet-map 1 ipsec-isakmp 
//建立一個名稱爲benet-map的Map,序列號爲1
//序列號範圍1~65535,數值越小,優先級越高
% NOTE: This new crypto map will remain disabled until a peer
        and a valid access list have been configured.
                //這是正常提示,就是說這個Map中並無包含配置           
R1(config-crypto-map)#match address 100
//調用ACL名稱或編號
R1(config-crypto-map)#set peer 192.168.2.1
//設置對等體設備
R1(config-crypto-map)#set transform-set accp-set
//指定傳輸集的名稱,最多能夠指定6個
R1(config-crypto-map)#set pfs group1
//用於啓動這項功能並執行使用哪一個DH密鑰組,這是一條可選命令
//剛纔定義的DH組是1
R1(config-crypto-map)#set security-association lifetime seconds 1800 
//指定SA的生存週期,默認狀況下,Cisco設備已經設定數據鏈接的生命週期爲3600s或4608000KB,至關於一小時內10MB/s速率傳輸的流量。
R1(config-crypto-map)#set security-association idle-time 60
//用於設定空閒超時計時器,範圍是60~86400s
//默認狀況下,空閒超時計時器是關閉的

4、配置實現IPSec 虛擬專用網

(1)案例拓補

CIsco路由器實現IPSec 虛擬專用網原理及配置詳解

(2)案例需求

PC1經過虛擬專用網訪問PC3;
PC1訪問PC2;

(3)案例實施

1)配置PC、路由器的IP地址

PC1的配置:

PC1(config)#int f0/0
PC1(config-if)#ip add 192.168.1.100 255.255.255.0
PC1(config-if)#no sh
PC1(config-if)#ip route 0.0.0.0 0.0.0.0 192.168.1.1

PC2的配置:

PC2(config)#int f0/0
PC2(config-if)#ip add 50.0.0.100 255.255.255.0
PC2(config-if)#no sh
PC2(config-if)#ip route 0.0.0.0 0.0.0.0 50.0.0.1

PC3的配置:

PC3(config)#int f0/0
PC3(config-if)#ip add 192.168.2.100 255.255.255.0
PC3(config-if)#no sh
PC3(config-if)#ip route 0.0.0.0 0.0.0.0 192.168.2.1

R1的配置:

R1(config)#int f0/0
R1(config-if)#ip add 192.168.1.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#int f1/0
R1(config-if)#ip add 20.0.0.1 255.255.255.0
R1(config-if)#no sh 
R1(config-if)#ip route 0.0.0.0 0.0.0.0 20.0.0.2

R2的配置:

R2(config)#int f1/0
R2(config-if)#ip add 20.0.0.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#int f0/0
R2(config-if)#ip add 50.0.0.1 255.255.255.0
R2(config-if)#no sh
R2(config-if)#int f2/0
R2(config-if)#ip add 30.0.0.1 255.255.255.0
R2(config-if)#no sh
//R2只配置IP地址便可

R3的配置:

R3(config)#int f2/0
R3(config-if)#ip add 30.0.0.2 255.255.255.0
R3(config-if)#no sh
R3(config-if)#int f0/0
R3(config-if)#ip add 192.168.2.1 255.255.255.0
R3(config-if)#no sh
R3(config-if)#ip route 0.0.0.0 0.0.0.0 30.0.0.1

2)配置ISAKMP策略

R1的配置:

R1(config)#crypto isakmp policy 1
//配置ISAKMP/IKE策略,序列號爲1,數值越小越優先
R1(config-isakmp)#encryption 3des
//指定用於身份驗證採用3des加密算法
R1(config-isakmp)#hash sha
//用於驗證數據完整性(散列算法)使用sha算法
R1(config-isakmp)#authentication pre-share
//設備身份驗證的方式使用pre-sha(預共享密鑰)
R1(config-isakmp)#group 2 
//指定DH密鑰組,組號越大,越安全
R1(config-isakmp)#lifetime 10000
//管理鏈接的生存週期爲10000s
R1(config)#crypto isakmp key 0 123456 address 30.0.0.2
//與30.0.0.2創建對等體關係,使用明文密鑰123456

R3的配置:

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 0 123456 address 20.0.0.1
//對等體之間的配置幾乎是同樣的

3)配置ACL

爲何要配置ACL?注意:當路由器上既存在NAT也存在虛擬專用網流量時,默認先進行NAT!

R1的配置:

R1(config)#access-list 100 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
//配置ACL,容許192.168.1.0網段訪問192.168.2.0網段

R3的配置:

R3(config)#access-list 100 permit ip 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255  
//配置ACL,容許192.168.2.0網段訪問192.168.1.0網段

4)配置IPSec傳輸集

R1的配置:

R1(config)#crypto ipsec transform-set R1-set esp-des ah-sha-hmac 
//創建傳輸集,名稱爲R1-set,加密使用esp-des算法,解密使用ah-sha-hmac 算法
R1(cfg-crypto-trans)#mode tunnel                 //選擇隧道模式,默認就是隧道模式
R1(cfg-crypto-trans)#exit
R1(config)#crypto ipsec security-association lifetime seconds 1800
//全局模式下也可設置生存週期

R3的配置:

R3(config)#crypto ipsec transform-set R3-set esp-des ah-sha-hmac 
R3(cfg-crypto-trans)#mode tunnel
R3(cfg-crypto-trans)#exit
R3(config)##crypto ipsec security-association lifetime seconds 1800

5)配置加密映射

R1的配置:

R1(config)#crypto map R1-map 1 ipsec-isakmp
//建立Crypto-Map,名稱爲R1-map,序列號爲1,數值越小,越優先
% NOTE: This new crypto map will remain disabled until a peer
        and a valid access list have been configured.
R1(config-crypto-map)#set peer 30.0.0.2                 //設置對等體爲30.0.0.2
R1(config-crypto-map)#set transform-set R1-set      //指定傳輸集
R1(config-crypto-map)#match address 100                //調用剛纔建立的ACL

R3的配置:

R3(config)#crypto map R3-map 1 ipsec-isakmp
% NOTE: This new crypto map will remain disabled until a peer
        and a valid access list have been configured.
R3(config-crypto-map)#set peer 20.0.0.1
R3(config-crypto-map)#set transform-set R3-set
R3(config-crypto-map)#match address 100

6)將映射應用到接口上

R1的配置:

R1(config)#int f1/0
R1(config-if)#crypto map R1-map
//在鏈接公網接口上調用Crypto-Map

R3的配置:

R3(config)#int f2/0
R3(config-if)#crypto map R3-map

如今驗證PC1是否能夠訪問PC3:

PC1#ping 192.168.2.100

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.2.100, timeout is 2 seconds:
!!!!!                   //訪問成功(使用虛擬專用網訪問)
Success rate is 100 percent (5/5), round-trip min/avg/max = 124/136/156 ms

7)設置PAT

R1的配置:

R1(config)#access-list 110 deny ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
R1(config)#access-list 110 permit ip any any
//設置ACL,拒絕虛擬專用網的流量
R1(config)#ip nat inside source list 110 int f1/0 overload 
//將ACL 110列表中的流量轉換爲外部接口地址
R1(config)#int f0/0
R1(config-if)#ip nat inside
R1(config-if)#int f1/0     
R1(config-if)#ip nat outside
//設置內外接口

PC1測試訪問PC2:

PC1#ping 50.0.0.100

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 50.0.0.100, timeout is 2 seconds:
!!!!!           //訪問成功(使用路由器外部接口地址訪問)
Success rate is 100 percent (5/5), round-trip min/avg/max = 92/105/124 ms

實驗完成!

5、經常使用排錯的命令

R1#show crypto isakmp policy     //查看ISAKMP協商策略的配置結果
R1#show crypto isakmp sa            //查看管理鏈接SA的狀態
R1#show crypto ipsec transform-set        //查看IPSec傳輸集
R1#show crypto ipsec security-association lifetime    //查看數據鏈接創建的生存週期
R1#show crypto ipsec sa    //查看數據鏈接SA的細節信息
R1#show crypto map    //查看crypto  Map的信息,這個命令能夠查看到crypto  map的名稱、
//ACL、對等體的IP地址、應用Crypto  map的接口等。

別忘了,在Cisco設備上「show run」命令幾乎就是萬能的!

———————— 本文至此結束,感謝閱讀 ————————

相關文章
相關標籤/搜索