IPsec是什么
IPsec(IP Security)是一系列為IP通信提供安全性的協議和服務的集合,工作在IP層,可以為上層協議和應用提供透明的安全服務。IPsec提供兩種安全機制:認證和加密。
認證機制
使IP通信的數據接收方能夠確認數據發送方的真實身份以及數據在傳輸過程中是否遭篡改。
加密機制
通過對數據進行加密運算來保證數據的機密性,以防數據在傳輸過程中被竊聽。
IPsec提供的安全保護包括:
- 用戶數據加密,通過加密算法提供好數據私密性。
- 消息完整性驗證,通過摘要認證確保數據在傳輸路徑上未經修改。
- 防御特定類型攻擊,通過序列號防數據重放、通過認證防中間人攻擊。
- 提供設備之間安全算法和秘鑰的協商能力,提供安全的在線秘鑰生成機制。
- 提供隧道和安全兩種模式,滿足不同的網絡結構需求。
IPsec出現的原因
- 網絡安全問題日益嚴重,需要保證數據在網絡上的傳輸是安全的。
- 大多數保證數據安全的協議或技術都是在應用層,如SSL協議可以為WEB或FTP提供安全連接,但對於ping、Telnet、SNMP等無效。
- 需要在IP層提供安全性的方法,可以使在傳輸層上層的所有協議受益。
IPsec相關概念
- SA(Security Association,安全關聯):為安全目的創建的一個單向邏輯連接,所有經過同一個SA的數據流會使用相同的安全處理協議(AH或ESP)。對同一個數據流同時使用AH和ESP時需要兩個嵌套的SA。雙向的數據流需要通信實體之間維護一對出入彼此呼應的SA。
SPD(Security Association Database,安全關聯數據庫):用於存放與SA關聯的所有狀態數據的存儲結構。
SPI(Security Parameters Index,安全參數索引):一個被攜帶在AH或ESP報文頭中的32bit數值,用於在接收端識別數據流到SA的綁定關系。
SPD(Security Policy Database,安全策略數據庫):指明所有IP數據報文應該使用何種安全服務,以及如何獲得這些服務的數據結構。SPD是一個有序的結構,用訪問控制列表來描述數據流特性。
AH(Authentication Headers,認證頭協議):提供數據來源認證,數據完整性校驗,保護通信免受篡改,但不能防止竊聽,適合於傳輸非機密數據。AH協議使用事先協商好的算法和密鑰計算報文
數據部分
的摘要值,然后作為報文完整性的證據保存在AH的頭結構中。ESP(Encapsulating Security Payloads,封裝安全載荷協議):提供加密,數據源校驗,數據完整性校驗。ESP協議將
原始報文
加密后作為負載攜帶在報文中。IKE(Internet Key Exchange,因特網密鑰交換協議):用於動態建立SA,SA有生命周期,如果安全策略要求建立安全、保密的連接,但又不存在與該連接相應的SA,IPSec會立刻啟動IKE來協商SA。
ISAKMP(Internet Security Association Key Management Protocol,安全聯盟密鑰管理協議):定義了協商、建立、修改和刪除SA的過程和包格式,只是提供了一個通用框架,並沒有定義具體的SA格式,與IKE獨立,可以被不同的密鑰交換協議使用。
IKE使用ISAKMP消息來協商並建立SA。
注:AH使用較少,原因是AH協議無法提供數據加密,所有數據都是明文傳輸,另外由於AH提供數據來源確認,一旦源IP地址改變,AH校驗失敗,無法穿越NAT。
IPsec的工作原理
封裝模式
- 傳輸模式:只對IP數據報的數據部分進行加密,在原始IP報文頭部與上層協議之間插入AH或ESP協議頭。適用於主機到主機方式報文的處理。
隧道模式:對整個IP數據報進行加密,增加新IP頭部而將原始IP數據包包括頭部都作為負載。適用於轉發設備上做封裝處理的場景。
AH保護
ESP保護
工作流程
兩個IPsec實體之間的IKE協商分為兩個階段:
- 第一階段:建立ISAKMP SA
- 兩種模式:
- 主模式(main mode):6條ISAKMP消息交互
- 積極模式(aggressive mode):3條ISAKMP消息交互
- ISAKMP SA為第二階段的ISAKMP消息提供安全保護
第二階段:建立IPsec SA
- 一種模式:
- 快速模式(quick mode):3條ISAKMP消息交互
- IPSec SA為IP數據提供安全保護
ISAKMP報文頭格式
cookie: 用於幫助通信雙方確認一個ISAKMP報文是否真的來自對方,對於一個SA,cookie是唯一的,即在協商過程中,cookie不能改變。cookie由各自實體的機密信息生成,該機密信息不能通過cookie推到出來。
交換類型:表示該報文所屬的交換類型,通常為主模式或積極模式。
標志 :加密位(encryp):如果是1,表示ISAKMP頭部后的所有載荷都被加密了;如果是0,表示是載荷是明文,沒有被加密。
提交位(commit):用於確保在發送被保護的數據之前完成協商。
IPsec配置步驟
- 定義協商第一階段ISAKMP策略
- 定義ISAKMP消息的保護策略,包括加密算法、驗證算法、驗證方式等。
- 定義協商第二階段IPsec SA策略
- 定義IP數據的保護策略,協議是使用ESP還是AH、加密算法、驗證算法、封裝模式是隧道模式還是傳輸模式等。
- 定義要被IPsec保護的數據。
- 定義crypt to map
- 定義IPsec SA對端通信實體,並配置協商第二階段IPsec SA策略和保護數據。
在出接口上調用crypt to map
- 確保路由表中的路由能將被保護的數據從配置了crypt to map的出接口轉發出去。
數據包經過IPsec實體時有三種處理方式:IPsec保護、丟棄或旁路(自由穿越,不受保護)。