a. IPSec基礎介紹
IPSec定義:(英語:Internet Protocol Security,縮寫為IPsec),是一個協定包,通過對IP協定的分組進行加密和認證來保護IP協定的網絡傳輸協定族(一些互相關聯的協定的集合)。
1. IPSec對等體
- IPSec 用于在兩個端點之間提供安全的 IP 通信,通信的兩個端點被稱為 IPSec 對等體。
2. 安全聯盟
- SA(Security Association)安全聯盟是要建立IPSec隧道的通信雙方對隧道參數的約定,包括隧道兩端的IP位址、隧道采用的驗證方式、驗證算法、驗證密鑰、加密算法、加密密鑰、共享密鑰以及生存周期等一系列參數。
- SA 是單向的,在兩個對等體之間的雙向通信,至少需要兩個 SA。SA 由一個三元組來唯一辨別,這個三元組包括安全參數索引 SPI(Security Parameter Index)、目的 IP 位址、安全協定名(AH 或 ESP)。
3. 協商方式
建立 SA 的方式有以下兩種:
- 手工方式(manual):建立安全聯盟比較複雜,安全聯盟所需的全部資訊都必須手工配置。但優點是可以不依賴 IKE 而單獨實作 IPSec 功能。
- IKE 動态協商(isakmp)方式:建立安全聯盟相對簡單些,隻需要通信對等體間配置好 IKE協商參數,由 IKE 自動協商來建立和維護 SA。
4. IPSec封裝模式
圖注:IPSec協定封裝包
- 隧道模式。在隧道模式下,AH 或 ESP 插在原始 IP 頭之前,另外生成一個新 IP 頭放到 AH或 ESP 之前。
圖注:隧道模式示意圖
- 傳輸模式。在傳輸模式下,AH 或 ESP 被插入到 IP 頭之後但在傳輸層協定之前。
圖注:傳輸模式示意圖
- 隧道模式生成新的標頭安全性比傳輸模式高,但隧道模式比傳輸模式占用帶寬更多。
5. IPSec使用的認證算法和加密算法
認證算法IPSec可以使用三種認證算法:
- MD5(Message Digest 5):MD5 通過輸入任意長度的消息,産生 128bit 的消息摘要。
- SHA-1(Secure Hash Algorithm):SHA-1 通過輸入長度小于 2 的 64 次方比特的消息,産生 160bit 的消息摘要。
- SHA-2:SHA-2 算法相對于 SHA-1 加密資料位數有所上升,安全性能要遠遠高于SHA-1。
加密算法
加密算法實作主要通過對稱密鑰系統,它使用相同的密鑰對資料進行加密和解密。
IPSec使用以下三種加密算法:
- DES:使用 56bit 的密鑰對一個 64bit 的明文塊進行加密。
- 3DES:使用三個 56bit 的 DES 密鑰(共 168bit 密鑰)對明文進行加密。
- AES:使用 128bit、192bit 或 256bit 密鑰長度的 AES 算法對明文進行加密。
6. 通信保護協定
AH認證頭協定:
- 協定号51。
- 定義于RFC 2402。
- 鑒别頭AH:(不提供保密性,隻對整個IP資料包提供保護)。
- 無連接配接資料完整性:通過哈希函數産生的校驗來保證。
- 資料源認證:通過計算驗證碼時加入一個共享密鑰來實作。
- 抗重放服務:AH報頭中的随機序列号可以防止重放Attack。
- 可以用于隧道和傳輸兩種模式中。
- 使用MD5/SHA-1。
- 提供如下的功能:
- 資料完整性;
- 資料源認證;
- Anti-replay服務。
圖注:Tunnel模式下的AH包
ESP封裝安全載荷協定:
- 協定号50。
- 定義于RFC 2406。
- 除提供 AH 認證頭協定的所有功能之外,還有資料保密和有限的資料流保護,ESP 協定允許對 IP 封包淨荷進行加密和認證、隻加密或者隻認證,ESP 沒有對 IP頭的内容進行保護。
- 保密服務通過使用密碼算法加密 IP 資料包的相關部分來實作。
- 資料流保密由隧道模式下的保密服務提供。
- ESP通常使用DES、3DES、AES等加密算法實作資料加密,使用MD5或SHA1來實作資料完整性認證。
- AH認證頭協定,無法在穿越NAT的時候使用,因為AH協定會對IP標頭進行校驗。ESP協定可以。
- 可以用于隧道和傳輸兩種模式中。
- 提供如下的功能:
- 資料完整性;
- 資料保密性;
- 資料源認證;
- Anti-replay服務。
圖注:Tunnel模式下的ESP包
7. IPsec提供了兩種安全機制:認證和加密
- 認證機制使 IP 通信的資料接收方能夠确認資料發送方的真實身份以及資料在傳輸過程中是否遭篡改。
- 加密機制通過對資料進行加密運算來保證資料的機密性,以防資料在傳輸過程中被竊聽。
b.1 IPSecVPN協商過程
圖注:IPSecVPN協商過程圖解
b.2 主模式與野蠻模式對比
IKEv1建立IKESA的過程定義了主模式(Main Mode)和野蠻模式(Aggressive Mode)兩種交換模式。
- 主模式包含三次雙向交換,用到了六條資訊:
- 消息①和②用于協商算法;
- 消息③和④用于密鑰資訊交換,DH算法;
- 消息⑤和⑥用于身份和認證資訊交換。
- 野蠻模式隻用到三條資訊:
- 前兩條消息①和②用于協商提議,消息③用于響應方認證發起方。
圖注:主模式與野蠻模式封包對比
- 野蠻模式協商比主模式協商更快。主模式需要互動6個消息,野蠻模式隻需要互動3個消息。
- 主模式協商比野蠻模式協商更嚴謹、更安全。因為主模式在5、6個消息中對ID資訊進行了加密。而野蠻模式受到交換次數的限制,ID資訊在1、2個消息中以明文的方式發送給對端。即主模式對對端身份進行了保護,而野蠻模式則沒有。
- 兩種模式在确定預共享的方式不同。主模式隻能基于IP位址來确定預共享密鑰。而野蠻模式是基于ID資訊(主機名和IP位址)來确定預共享密鑰。
c.1 IPSecVPN協商過程(主模式)
【第一階段】
(1)主模式包交換解析(第一組封包)
第一階段第一組封包1和2的主要任務:
- 加密算法
- 雜湊演算法
- DH組
- 認證方式
- 密鑰有效期
- 完成以上内容的協商
注意:
- 第一階段協商的政策不是真正用來加密兩端互通的私網流量的政策,隻用在第一階段後面兩組封包的使用上和第二階段的協商過程中,第二階段重新協商的政策才是真正加密流量的。
- ISAKMP資料包通過UDP傳輸的,源目端口都是500。穿越NAT時用UDP 4500。
(2)主模式包交換解析(第二組封包)
IKE Phase 1 (Main Mode): Sending Message 3 and 4兩部分内容要互相交換:Key Exchange和Nonce Payload:
- Key exchange data是雙方共同要告訴對方的。
- Nonce(随機産生非常大的數字)是雙方接下來驗證需要的原材料之一。第二組的主要任務就是要交換雙方的共享資訊,産生一個密鑰。
(3)主模式包交換解析(第三組封包)
預共享密鑰認證:
-
IKE Phase 1(Main Mode): Sending Message 5
把Hash_l通過SKEYID_e進加密發送
-
IKE Phase 1 (Main Mode): Sending Message 6
把Hash_R通過SKEYID_e進加密發送
- 最後一組發送完畢後,使用SKEYID_e解密對方發送的資料,裡面有原始資料ID_R和哈希值Hash_R,使用接收到的ID_R按照PRFE函數進行哈希,比較接收到的哈希值和自己産生的哈希值是否相等。
-
Hash_R ? = Self Hash_R
相等即可建立ISAKMP SA,IKE第一階段完成。
【第二階段】
(1)第1個包:
- 在IKE SA協商基礎上形成新的KEY;
- 封裝方式:AH、ESP;
- 加密方式:DES、3DES、AES...;
- 完整性算法:MD5、SHA-1;
- IPSEC SA:預設1個小時;
- 兩端保護子網。
(2)第2個包:包主要是接收端檢視本地有沒有一個IPSec SA政策與發起方的一樣,如果有,并且認證成功,感興趣流協商成功,那麼接收端會把協商成功的IPSec SA政策發給發起端,同時也會把自己的認證KEY發給發啟端來進行雙向認證。
(3)第3個包:包主要是發起端對接收端發來的第二個包進行确認,協商成功進行業務通路。
c.2 IPSecVPN協商過程(野蠻模式)
- 第1個互動包發起方建議SA,發起DH交換;
- 第2個互動包接收方接收SA;
- 第3個互動包發起方認證接收方,野蠻模式前兩個封包是明文,第三個封包是密文。
d. IPSecVPN進階設定
d.1 IPSecVPN中NAT穿越(NAT-T)
d.2 IPSecVPN Proxy-ID
- Proxy ID(代理ID,即感興趣流)用于在兩個VPN端對端間交換政策,代表着需要獲得安全服務的資料包,通常指兩端内網位址,定義的位址必須對稱。
- 若無填寫,采用政策模式則需要在建立政策時填寫對稱的位址,即本地的源位址子網與對端的目的位址子網相同。
- Proxy ID 常用于本端 Hillstone,對端第三方裝置的場景。
- Proxy ID 錯誤配置是 VPN 建立最常見的錯誤。