如何通俗易懂的理解urpf?

防止 源地址欺騙攻擊


講一個真實案例。

某市市郊的鎮政府,來了兩位自稱市信息綜合辦的辦事員,身穿制服,攜帶工作證等,來收信息技術服務費,每年3600,不疑有詐,單位掏錢了事。

這兩人故伎重演,一共騙了二十多個,直到最後一家,警惕性高,打電話到市信息綜合辦,核實是否有這兩人、是否有這種收費?回答是查無此人!於是報警,壞人落網。

URPF (Unicast Reverse Path Forwarding),意思是為了防止偽造的IP包攻擊自己的網路,在網路入口處,核實IP包的來源,如果來源可疑,直接丟棄;如果通過URPF檢查,則允許IP包進入。

URPF如何檢查IP包來源?

根據IP包中的源IP地址,查詢路由表,有兩個判斷依據:

A. 是否有到源IP的路由

B. IP包是否從路由表中下一跳對應的介面接收到?

1)如果滿足以上兩個條件,我們稱驗證通過,這種檢查模式為嚴格模式 ( Strict )

2)那是否還有寬鬆(Loose)模式,有的!

如果A滿足,而B不滿足,即為寬鬆檢查模式,如果配置成該模式,即使B條件不滿足,同樣放行IP包進入網路。

3)如果兩個條件都不滿足,沒有什麼好說的,丟!

為何RPF前加Unicast這個定語?

RPF最早用於組播的轉發,為了防止組播的環路,每個路由器接收到一個IP組播,第一件事就是檢查:IP包是否從更靠近源IP的鄰居處獲得,如果是,再檢查組播路由表,發給其下游鄰居。如果不是則丟棄處理,避免環路的發生。

舉個例子

假設內網有一個伺服器IP = 2.2.2.2,網路入口配置了URPF,嚴格模式:

現在進來一個IP包,Source IP = Destination IP = 2.2.2.2

如何處理?

丟棄處理!查詢2.2.2.2路由表,指向內網,不可能存在於外網,不滿足條件B,所以丟棄。

這種就是DoS(Denial of Service)攻擊,偽造IP包,讓伺服器自己和自己玩,由於軟體Bug,可能造成伺服器崩潰!

通過URPF的阻擊,禦敵於城牆處,避免偽造包進入內城。


單播逆向路徑轉發

作用是防禦簡單的dos和ddos攻擊(規模性的dos和ddos沒有有效的預防方法)

一句話 就是兩項檢查,其目的就是檢查源地址是否可以正確送達

1源地址路由是否可達

2進出埠是否一致

如果不能通過檢查就證明這是一個無意義的地址和訪問{因為根本無法返回數據,他的請求也就沒有任何意義(源地址欺騙只是其中的一種情況)}

如果需要具體原理可以再問

====================================================================

針對題主的問題舉一個栗子

試想這樣一種情況

圖中被攻擊的對象為地址為10.10.10.1的伺服器。攻擊者偽裝自己的地址為攻擊目標的地址10.10.10.1然後向廣播域中廣播icmp請求包。所有主機收到後都會認為是10.10.10.1的伺服器向他們發送的請求,然後會同時向伺服器發起icmp回復包。造成伺服器無響應。

這就完成了一次DDOS分散式拒絕服務攻擊(對伺服器發動攻擊來自不同的主機,非單台設備)

再來看我們的urpf,源地址為10.10.10.1,這是我們內網的伺服器地址,防火牆當然可路由,也就順理成章的通過了第一項檢查。

第二項檢查,防火牆會檢查這條路由信息的出介面F0/2,也就是說這個地址是在F0/2口的位置,如果回包要從F0/2發出,而這個包是從F0/1口收到的,F0/1入站,F0/2口出站。這就是出入介面不一致。而明顯這個地址就是有問題的,判斷之後就可以進行下一步的動作了(通過、丟棄、記錄、告警)。


這條路能通到我小姐姐家,所以我只允許小姐姐走這條路過來找我或者來找我去其他地方約會。其他妖艷賤貨?嘖嘖,不行。


推薦閱讀:

請教下EIGRP 的network命令?
有哪些比較好的CCNA自學資料?
如果有效記住和區分 Cisco、H3C 設備的命令?
華為與思科相比有哪些差距?
網路工程師的前景如何?

TAG:網路安全 | 華為 | Cisco思科 | DDoS | 網路工程 |