URPF(Unicast Reverse Path Forwarding,單播反向路徑轉發)的主要功能是用於防止基於源地址欺騙的網絡攻擊行為。
源地址欺騙攻擊為入侵者構造出一係列帶有偽造源地址的報文,對於使用基於IP地址驗證的應用來說,此攻擊方法可以導致未被授權用戶以他人身份獲得訪問係統的權限,甚至是以管理員權限來訪問。即使響應報文不能達到攻擊者,同樣也會造成對被攻擊對象的破壞。
如圖1所示,在Router A上偽造源地址為2.2.2.1/8的報文,向服務器Router B發起請求,Router B響應請求時將向真正的“2.2.2.1/8”發送報文。這種非法報文對Router B和Router C都造成了攻擊。
URPF技術可以應用在上述環境中,阻止基於源地址欺騙的攻擊。
URPF檢查有嚴格(strict)型和鬆散(loose)型兩種。此外,還可以支持ACL與缺省路由的檢查。
URPF的處理流程如下:
(1) 如果報文的源地址在路由器的FIB表中存在
l 對於strict型檢查,反向查找報文出接口,若其中至少有一個出接口和報文的入接口相匹配,則報文通過檢查;否則報文將被拒絕。(反向查找是指查找以該報文源IP地址為目的IP地址的報文的出接口)
l 對於loose型檢查,報文進行正常的轉發。
(2) 如果報文的源地址在路由器的FIB表中不存在,則檢查缺省路由及URPF的allow-default-route參數。
l 對於配置了缺省路由,但沒有配置參數allow-default-route的情況,不管是strict型檢查還是loose型檢查,隻要報文的源地址在路由器的FIB表中不存在,該報文都將被拒絕;
l 對於配置了缺省路由,同時又配置了參數allow-default-route的情況下,如果是strict型檢查,隻要缺省路由的出接口與報文的入接口一致,則報文將通過URPF的檢查,進行正常的轉發;如果缺省路由的出接口和報文的入接口不一致,則報文將拒絕。如果是loose型檢查,報文都將通過URPF的檢查,進行正常的轉發。
(3) 當且僅當報文被拒絕後,才去匹配ACL。如果被ACL允許通過,則報文繼續進行正常的轉發;如果被ACL拒絕,則報文被丟棄。