只有IKE動態協商的SA才支持抗重放功能,手工方式生成的SA不支持抗重放功能。因為手工方式建立的SA是永久不老化的,而只有在SA重新建立時,AH或ESP報文的序列號才會重新開始計算,這需要IKE協議的支持。
重放報文是指已經處理過的報文,報文的序列號與原來的某個報文一樣。IPSec通過滑動窗口(抗重放窗口)機制檢測重放報文。AH和ESP協議報文頭中帶有32比特序列號,在同一個SA內,報文的序列號依次遞增。當設備收到一個經過認證的報文后,如果報文的序列號與已經解封裝過的某個報文的序列號相同,或報文的序列號較小且不在滑動窗口內,則認為該報文為重放報文。
由于對重放報文的解封裝無實際作用,并且解封裝過程會消耗設備大量的資源,導致業務可用性下降,實際上構成了拒絕服務DoS(Denial of Service)攻擊。通過使能IPSec抗重放功能,將檢測到的重放報文在解封裝處理之前丟棄,可以降低設備資源的消耗。但在某些特定的環境下(如當網絡出現擁塞時或報文經過QoS處理后),業務數據報文的序列號順序可能與正常的順序差別較大,雖然并非有意的重放攻擊,但其會被抗重放檢測認為是重放報文,導致業務數據報文被丟棄。這種情況下就可以通過關閉全局IPSec抗重放功能來避免報文的錯誤丟棄,也可以通過適當地增大抗重放窗口的寬度,來適應業務正常運行的需要。
使用較大的抗重放窗口寬度會引起系統增大的開銷,導致系統性能下降,因此與抗重放功能用于降低系統在接收重放報文時的開銷的初衷不符,因此建議在能夠滿足業務運行需要的情況下,使用較小的抗重放窗口寬度。
抗重放功能可以基于全局配置,也可以在IPSec安全策略或策略模板下配置。全局IPSec抗重放功能的配置對所有已創建的IPSec安全策略生效,針對個別IPSec安全策略配置的抗重放功能僅在對應的安全策略下生效,不再受全局配置的影響。具體的抗重放功能配置步驟見表1。
表1 配置抗重放功能的步驟