URPF技术白皮书
URPF技術(shù)白皮書(shū)
摘 要:本文介紹了URPF的應(yīng)用背景,URPF主要用于防止基于源地址欺騙的網(wǎng)絡(luò)攻擊行為,例如基于源地址欺騙的DoS攻擊和DDoS攻擊;隨后介紹了URPF的技術(shù)原理以及URPF的幾種靈活定制方案(NULL0口,缺省路由,ACL等);最后簡(jiǎn)要介紹了URPF的典型組網(wǎng)案例。
縮略語(yǔ)清單:
縮略語(yǔ)
英文全名
中文解釋
URPF
Unicast Reverse Path Forwarding
單播反向路徑轉(zhuǎn)發(fā)
FIB
Forwarding Information Base
轉(zhuǎn)發(fā)信息庫(kù)
DoS
Denial of Service
拒絕服務(wù)
DDoS
Distributed Denial of Service
分布式拒絕服務(wù)
ACL
Access Control List
訪問(wèn)控制列表
ICMP
Internet Control Message Protocol
因特網(wǎng)控制報(bào)文協(xié)議
1 背景
單播反向路徑轉(zhuǎn)發(fā)(Unicast Reverse Path Forwarding),是網(wǎng)絡(luò)設(shè)備檢查數(shù)據(jù)包源地址合法性的一種方法。其在FIB表中查找該源地址是否與數(shù)據(jù)包的來(lái)源接口相匹配,如果沒(méi)有匹配表項(xiàng)將丟棄該數(shù)據(jù)包,從而起到預(yù)防IP欺騙,特別是針對(duì)偽造IP源地址的拒絕服務(wù)(DoS)攻擊非常有效。
2 URPF應(yīng)用環(huán)境簡(jiǎn)介
DoS(Denial of Service)攻擊是一種阻止連接服務(wù)的網(wǎng)絡(luò)攻擊。DoS的攻擊方式有很多種,最基本的DoS攻擊就是利用合理的服務(wù)請(qǐng)求來(lái)占用過(guò)多的服務(wù)資源,從而使合法用戶無(wú)法得到服務(wù)的響應(yīng)。
2.1 TCP泛洪
圖1 TCP泛洪攻擊案例
攻擊的原理是向目標(biāo)設(shè)備發(fā)送大量偽裝連接的請(qǐng)求包,這些請(qǐng)求包的發(fā)起地址設(shè)置為目標(biāo)不可到達(dá)的地址,這樣對(duì)被攻擊對(duì)象的第二次握手沒(méi)有主機(jī)響應(yīng),造成被攻擊對(duì)象主機(jī)內(nèi)部存在大量的半開(kāi)連接,以至于新的正常連接不能進(jìn)入從而造成服務(wù)的停頓甚至死機(jī)。
2.2 SMURF攻擊
SMURF攻擊是一種源地址欺騙攻擊,攻擊者假冒被攻擊對(duì)象的IP地址向設(shè)備發(fā)送大量的廣播ICMP echo請(qǐng)求報(bào)文。因?yàn)槊總€(gè)包的目標(biāo)IP地址都是網(wǎng)絡(luò)的廣播地址,所以設(shè)備會(huì)把ICMP echo請(qǐng)求報(bào)文以廣播形式發(fā)給網(wǎng)絡(luò)上的所有主機(jī)。如果有大量主機(jī),那么這種廣播就會(huì)產(chǎn)生大量的ICMP echo請(qǐng)求及響應(yīng)流量。而且在發(fā)送ICMP echo請(qǐng)求數(shù)據(jù)包時(shí),使用了假冒的源IP地址,所以攻擊造成的ICMP流量不僅會(huì)阻塞網(wǎng)絡(luò),而且會(huì)產(chǎn)生攻擊流量。
圖2 SMURF攻擊案例圖
如圖2,Attacker仿冒Router B的地址對(duì)Router C進(jìn)行攻擊,如果Router C上的網(wǎng)絡(luò)管理員檢測(cè)到攻擊,將會(huì)配置防火墻規(guī)則,將所有來(lái)自Router B的報(bào)文過(guò)濾,導(dǎo)致無(wú)辜的Router B無(wú)法訪問(wèn)Router C。此時(shí),被攻擊系統(tǒng)的管理員反而成為黑客的幫兇,使一些合法用戶失去合法訪問(wèn)的權(quán)限。
從 上面兩個(gè)例子可以看出,黑客利用源地址欺騙,一是可以隱匿身份,讓人難以發(fā)現(xiàn)攻擊的源頭,二是通過(guò)被攻擊目標(biāo),發(fā)起對(duì)其他合法用戶的攻擊,造成一箭雙雕的 效果。而這些攻擊,僅僅依靠被攻擊系統(tǒng)加強(qiáng)防范是無(wú)法預(yù)防的。必須通過(guò)所有接入端設(shè)備,對(duì)用戶的源地址進(jìn)行反查,并依據(jù)其合法性對(duì)報(bào)文進(jìn)行過(guò)濾,這樣才能 從源頭抑制攻擊,保護(hù)合法用戶享受服務(wù)的權(quán)利。
3 魔高一尺、道高一丈——URPF的發(fā)展3.1 DoS攻擊的發(fā)展
從上世紀(jì)90年代到現(xiàn)在,DoS技術(shù)主要經(jīng)歷如下幾個(gè)階段:
(1) 技術(shù)發(fā)展時(shí)期。90年代,Internet開(kāi)始普及,很多新的DoS技術(shù)涌現(xiàn)。90年代末發(fā)明和研究過(guò)許多新的技術(shù),其中大多數(shù)技術(shù)至今仍然有效,且應(yīng)用頻度相當(dāng)高。
(2) 從實(shí)驗(yàn)室向“產(chǎn)業(yè)化”轉(zhuǎn)換。2000年前后,DDoS(Distributed Denial of Service)出現(xiàn),Yahoo和Amazon等多個(gè)著名網(wǎng)站受到攻擊并癱瘓。
(3) “商業(yè)時(shí)代”。最近一兩年,寬帶的發(fā)展使得接入帶寬增加,個(gè)人電腦性能大幅提高,使DDoS攻擊越來(lái)越頻繁,可以說(shuō)隨處可見(jiàn),而且也出現(xiàn)了更專(zhuān)業(yè)的“DDoS攻擊經(jīng)濟(jì)”,DDoS攻擊已經(jīng)成為網(wǎng)絡(luò)黑客們敲詐勒索的工具。
3.2 URPF的水土不服——嚴(yán)格URPF的局限
從Dos攻擊發(fā)展為DDoS攻擊,黑客從一臺(tái)Host,單機(jī)作戰(zhàn)改為了集團(tuán)作戰(zhàn),操縱成百上千的傀儡機(jī),發(fā)起分布式攻擊。在2000年yahoo等知名網(wǎng)站被攻擊后,美國(guó)的網(wǎng)絡(luò)安全研究機(jī)構(gòu)提出了骨干運(yùn)營(yíng)商聯(lián)手來(lái)解決DDoS攻擊的方案。其方法就是每家運(yùn)營(yíng)商在自己的出口設(shè)備上進(jìn)行源IP地址的驗(yàn)證,如果某個(gè)數(shù)據(jù)包源IP地址對(duì)應(yīng)的路由與入接口不一致,就丟掉這個(gè)包。這種方法可以阻止黑客利用偽造的源IP地址來(lái)進(jìn)行DDoS攻擊。
而隨著防范措施從在ISP的用戶端提升到ISP-ISP端布置URPF技術(shù),網(wǎng)絡(luò)的復(fù)雜性也相應(yīng)增加。在不對(duì)稱(chēng)路由存在的情況下,URPF會(huì)錯(cuò)誤的丟棄非攻擊報(bào)文。
圖3 非對(duì)稱(chēng)路由圖
動(dòng)態(tài)路由協(xié)議學(xué)到的路由都是對(duì)稱(chēng)的,為什么會(huì)有不對(duì)稱(chēng)路由呢?其實(shí)URPF不是根據(jù)路由表,而是根據(jù)FIB(Forwarding Information Base)表來(lái)檢查報(bào)文合法性的。FIB表是路由表中最優(yōu)表項(xiàng)的精簡(jiǎn),僅僅挑選路由表中的最優(yōu)路徑,因此,兩臺(tái)設(shè)備會(huì)產(chǎn)生不對(duì)稱(chēng)的報(bào)文轉(zhuǎn)發(fā)路徑。如圖3,當(dāng)Router A上記錄的到Router B的路徑為1,Router B上記錄的到Router A的路徑為2,如果在Router A上配置了URPF,則會(huì)將Router B從路徑2到來(lái)的報(bào)文丟棄。
3.3 退一步海闊天空——松散URPF的改進(jìn)
為了在ISP-ISP端應(yīng)用URPF,以防范DDoS攻擊,URPF從原有的“嚴(yán)格”模式,發(fā)展為“松散”模式,松散模式僅檢查報(bào)文的源地址是否在FIB表中存在,而不再檢查報(bào)文的入接口與FIB表是否匹配。這種更為“友好開(kāi)放”的算法,使得部署在ISP-ISP端的URPF既可以有效地阻止DDoS攻擊,又可以避免錯(cuò)誤的攔截合法用戶的報(bào)文。
4 NULL0口——URPF的烽火臺(tái)
DDoS攻擊發(fā)起點(diǎn)比較分散,網(wǎng)絡(luò)管理員發(fā)現(xiàn)后,雖然可以在自己管轄的設(shè)備上配置規(guī)則,對(duì)于發(fā)起攻擊設(shè)備的報(bào)文進(jìn)行抑制,但是攻擊報(bào)文還可能從其他路徑到達(dá)其他目標(biāo)設(shè)備,針對(duì)這種情況,手工在所有設(shè)備上配置規(guī)則用以抑制攻擊是不現(xiàn)實(shí)的。而URPF可以結(jié)合NULL0口與BGP協(xié)議,向全網(wǎng)通告非法地址,網(wǎng)絡(luò)中其他設(shè)備自動(dòng)更新非法報(bào)文的下一跳,起到在整個(gè)網(wǎng)絡(luò)中及時(shí)抑制攻擊報(bào)文的作用。
NULL0口是網(wǎng)絡(luò)設(shè)備的一個(gè)邏輯口,所有發(fā)送到該接口的報(bào)文都被丟棄。當(dāng)網(wǎng)絡(luò)管理員發(fā)現(xiàn)攻擊者的源地址,可以通過(guò)配置靜態(tài)路由到NULL0口,并且結(jié)合BGP路由協(xié)議迅速擴(kuò)散到網(wǎng)絡(luò)中的所有路由器。收到信息的路由器學(xué)習(xí)了這條路由后,更新FIB表。當(dāng)攻擊報(bào)文到達(dá)時(shí),URPF查詢FIB后,發(fā)現(xiàn)源地址對(duì)應(yīng)出接口為NULL0,立即將非法報(bào)文丟棄。
5 缺省路由和ACL,靈活定制你的URPF5.1 缺省路由
當(dāng)設(shè)備上配置了缺省路由后,會(huì)導(dǎo)致URPF根據(jù)FIB表檢查源地址時(shí),所有源地址都能查到下一跳。針對(duì)這種情況,H3C的Comware平臺(tái)支持用戶配置URPF是否允許引入缺省路由。默認(rèn)情況下,如果URPF查詢FIB得到結(jié)果是缺省路由,則按沒(méi)有查到表項(xiàng)處理,丟棄報(bào)文。
5.2 ACL規(guī)則
通過(guò)ACL規(guī)則的引入,URPF給用戶提供了一種更加靈活的定制方案。當(dāng)網(wǎng)絡(luò)管理員確認(rèn)具有某一些特征的報(bào)文是合法報(bào)文,則可以通過(guò)配置ACL規(guī)則,在源路由不存在(或者源路由是缺省路由,但是URPF沒(méi)有使能缺省路由)的情況下,不做丟棄處理,按正常報(bào)文進(jìn)行轉(zhuǎn)發(fā)。
6 URPF處理流程
圖4 URPF流程圖
(1) 首先檢查源地址合法性:
l 對(duì)于廣播地址,直接予以丟棄。
l 對(duì)于全零地址,如果目的地址不是廣播,則丟棄。(源地址為0.0.0.0,目的地址為255.255.255.255的報(bào)文,可能是DHCP或者BOOTP報(bào)文。)
(2) 然后檢查報(bào)文源地址是否匹配FIB表,如果在FIB表中查找失敗,則進(jìn)入步驟5(ACL檢查),否則進(jìn)入步驟3;
(3) 如果FIB表中匹配的是缺省路由,則檢查用戶是否配置了允許缺省路由,如果沒(méi)有配置,則進(jìn)入步驟5(ACL檢查),否則進(jìn)入步驟4;如果FIB表中匹配的不是缺省路由,進(jìn)入步驟4;
(4) 檢查報(bào)文入接口與FIB查詢結(jié)果是否相符(對(duì)于等價(jià)路由,只要一條匹配就表示相符),如果相符,則通過(guò)檢查;如果不符,則查看是否是松散URPF,如果是,則通過(guò),否則說(shuō)明是嚴(yán)格URPF,進(jìn)入步驟5(ACL檢查);
(5) ACL檢查流程,檢查用戶是否配置了ACL規(guī)則,如果報(bào)文符合ACL規(guī)則,則通過(guò)檢查,否則丟棄。
7 典型組網(wǎng)應(yīng)用
圖5 URPF組網(wǎng)圖
在ISP與用戶端,配置嚴(yán)格URPF,在ISP與ISP端,配置松散URPF。如果有特殊用戶,或者具有一定特征,需要特殊處理的報(bào)文,可以配置ACL規(guī)則。如果已經(jīng)發(fā)現(xiàn)了某個(gè)源地址的攻擊報(bào)文,配置這個(gè)地址的下一跳為一個(gè)事先約定的特殊地址(每個(gè)ISP上,此特殊地址配置的出接口為NULL0口),并利用BGP協(xié)議發(fā)布到鄰居網(wǎng)絡(luò)。
總結(jié)
- 上一篇: 段寄存器和8种地址寻址方式
- 下一篇: Git命令删除本地和远程分支以及版本号管