基本介紹
基本概念,檢查方式,套用實例,作用,
基本概念
通常情況下,網路中的路由器接收到報文後,獲取報文的目的地址,針對目的地址查找路由,如果查找到則進行正常的轉發,否則丟棄該報文。由此得知,路由器轉發報文時,並不關心數據包的源地址,這就給源地址欺騙攻擊有了可乘之機。
源地址欺騙攻擊就是入侵者通過構造一系列帶有偽造源地址的報文,頻繁訪問目的地址所在設備或者主機,即使受害主機或網路的回應報文不能返回到入侵者,也會對被攻擊對象造成一定程度的破壞。
URPF通過檢查數據包中源IP位址,並根據接收到數據包的接口和路由表中是否存在源地址路由信息條目,來確定流量是否真實有效,並選擇數據包是轉發或丟棄。
檢查方式
uRPF對報文源地址的合法性檢查主要有兩種:嚴格型(strict)和鬆散型(loose)。另外還支持忽略預設路由的uRPF檢查以及配置了ACL規則的uRPF檢查。
- 在接口上設定嚴格模式的uRPF:路由器對從該接口進入的數據包源地址進行查詢,如果報文的源地址在路由表中存在(為正常的源地址路由或者預設路由),並且報文的入接口等於路由的出接口,則認為該報文合法,否則丟棄該報文。
- 在接口上設定鬆散模式的uRPF:路由器僅檢查報文的源地址是否在路由表中存在(正常的源地址路由或者預設路由),而不再檢查報文的入接口與路由表是否匹配。這使得uRPF既可以有效地阻止網路攻擊,又可以避免錯誤的攔截合法用戶的報文。
- 當路由器上配置了預設路由後,會導致uRPF根據路由表檢查源地址路由時,對查不到源地址路由的報文自動檢查到預設路由。針對這種情況,用戶可以配置uRPF忽略預設路由的檢查。
通過ACL規則的引入,uRPF給用戶提供了一種更加靈活的定製方案。配置了ACL後,在uRPF檢查失敗的情況下,路由器按照ACL規則permit或者deny報文進行操作。
套用實例
uRPF套用的一個簡單實例如圖所示。在Router A上偽造一個源地址為3.3.3.3/8的報文,向Router B發起請求,Router B回響請求時將向真正的“3.3.3.3/8”設備(Router C)傳送報文。這種非法報文同時對Router B和Router C都造成了攻擊。
uRPF可以套用在上述環境中,在Router B的接口上啟用URPF功能,即可以阻止基於源地址欺騙的攻擊行為。
在本例中,源地址使用一些保留的非全局的IP位址,因此不可達。其實即使是一個合法的IP位址,只要是不可達的也可以用來發起攻擊。
另一種情況是攻擊者還可以偽造一個源地址,該地址是另一個合法網路的地址並且在全局路由表中存在。例如,攻擊者偽造一個源地址使得被攻擊者認為攻擊來自於偽造的源地址,但實際上該源地址是完全無辜的,並且有時候網路管理員會因此而關閉所有來自源地址的數據流,這樣正好使得攻擊者的拒絕服務攻擊成功實現。
更複雜的情形是TCP SYN洪泛攻擊將使得SYN-ACK數據包傳送到完全與攻擊無關的許多主機,而這些主機就成了犧牲者。這使得攻擊者可以同時去欺騙一個或者多個系統。
作用
通信網路中,諸如DoS攻擊、TCP SYN洪泛攻擊、UDP洪泛攻擊和ICMP洪泛攻擊等,都可能通過藉助源地址欺騙的方式攻擊目標設備或者主機,造成被攻擊者系統性能嚴重的降低,甚至導致系統崩潰。uRPF技術就是網路設備為了防範此類攻擊而使用的一種常用技術。