路由器防禦Dos攻擊的新方法

ccyou發表於2016-08-05

 DoS (Denial of Service)攻擊就是利用合理的服務請求來佔用過多的服務資源,從而使合法使用者無法得到服務的響應。

  dos攻擊的方法很多,但它們都具有一些共同的典型特徵,例如:使用欺騙的源地址、使用網路協議的缺陷、使用操作系統或軟體的漏洞、在網路上產生大量的無用資料包消耗服務資源等。因此,要防禦dos攻擊,就必須從這些攻擊的特徵入手,分析其特徵,制定合適的策略和方法。

  Smurf攻擊的特徵描述

  Smurf攻擊是根據它的攻擊程式命名的,是一種ICMP echo flooding攻擊。

  在這樣的攻擊中,ping包中包含的欺騙源地址指向的主機是最終的受害者,也是主要的受害者;而路由器連線的廣播網段成為了攻擊的幫兇(類似一個放大器,使網路流量迅速增大),也是受害者。

  防禦Smurf攻擊的方法

  根據Smurf攻擊的特徵,可以從兩個方面入手來防禦Smurf的攻擊:一是防止自己的網路成為攻擊的幫兇即第一受害者 ;二是從最終受害者的角度來防禦Smurf攻擊。下面就從這兩個方面來討論防禦的的測路和方法。

  一、拒絕成為攻擊的幫兇

  Smurf要利用一個網路作為“流量放大器”,該網路必定具備以下特徵:

  1、路由器允許有IP源地址欺騙的資料包透過 ;

  2、路由器將定向廣播(傳送到廣播地址的資料包)轉換成為第二層(MAC層)的廣播並向連線網段廣播 ;

  3、廣播網路上的主機允許對ping廣播作出回應 ;

  4、路由器對主機回應的ping資料流量未做限制 ;

  所以,可以根據以上四點來重新規劃網路,以使自己的網路不具備會成為“流量放大器”的條件 。

  防止IP源地址欺騙

  IP源地址欺騙可以應用在多種不同的攻擊方式中,例如:TCP SYN flooding、UDP flooding、ICMP flooding等。

  偽造的源地址可以是不存在(不允許在公網上釋出)的地址,或者是最終攻擊目標的地址。

  在UDP flooding中,攻擊者則是透過連線目標系統的changen埠到偽造源地址指向的主機的echo埠,導致changen埠產生大量的隨機字元到echo埠,而echo埠又將接收到的字元返回,最後導致兩個系統都因耗盡資源而崩潰。

  注意:為了防禦UDP flooding,我們必須防止路由器的診斷埠或服務向管理域之外的區域開放,如果不需要使用這些埠或者服務,應該將其關閉。

  防止IP源地址欺騙的最有效方法就是驗證源地址的真實性,在Cisco路由器上,我們可以採用下列兩種方法:

  a、在網路邊界實施對IP源地址欺騙的過濾

  阻止IP源地址欺騙的一個最簡單有效的方法是透過在邊界路由器使用向內的訪問列表,限制下游網路發進來的資料包確實是在允許接受的地址範圍,不在允許範圍的資料將被刪除。同時,為了追溯攻擊者,可以使用log記錄被刪除的資料資訊 。

  b、使用反向地址傳送

  使用訪問控制列表在下游入口處做ip限制,是基於下游ip地址段的確定性 。但在上游入口處,流入資料的ip地址範圍有時是難於確定的。在無法確定過濾範圍時,一個可行的方法是使用反向地址傳送(Unicast Reverse Path Forwarding)。

  反向地址傳送是Cisco路由器的新版iOS提供的一項特性,簡稱uRPF。

  uRPF的工作原理是:當路由器在一個介面上收到一個資料包時,它會查詢CEF(Cisco Express Forward)表,驗證是否存在從該接收介面到包中指定的源地址之間的路由,即反向查詢路徑,驗證其真實性,如果不存在這樣的路徑就將資料包刪除。

  相比訪問控制列表,uRPF具有很多優點,例如:耗費CPU資源少、可以適應路由器路由表的動態變化(因為CEF表會跟隨路由表的動態變化而更新),所以維護量更少,對路由器的效能影響較小。

  uRPF是基於介面配置的,配置命令如下:

  (config)# ip cef

  (config-if)# ip verify unicast reverse-path

  注意:uRPF的實施,CEF必須是全域性開啟,並在配置介面上也是啟用的。

  禁止定向廣播

  在Smurf攻擊中,攻擊者將ping資料包發向一個網路的廣播地址,例如:192.168.1.255。大多數情況下,路由器在接收到該廣播包之後,預設會將這個第三層廣播轉換成第二層廣播,即將192.168.1.255轉換成為乙太網的FF:FF:FF:FF:FF:FF 。而該廣播網段上的所有乙太網介面卡在接收到這個第二層廣播之後,就會向主機系統發出中斷請求,並對這個廣播作出回應,從而消耗了主機資源,並且做出的回應可能造成對源地址所指目標的攻擊。

  所以,在絕大多數情況下,應該在邊界路由器上禁止定向廣播,使用以下介面命令禁止

  (config)# no ip directed-broadcast

  注:在絕大部分情況下,是不需要使用路由器的定向廣播功能的,會使用定向廣播的特例也有,例如,如果一臺SMB或者NT伺服器需要讓一個遠端的LAN能夠看到自己,就必須向這個LAN傳送定向廣播,但對於這種應用可以透過使用WINS伺服器解決。

  禁止主機對ping廣播作出反應

  當前絕大部分的作業系統都可以透過特別的設定,使主機系統對於ICMP ECHO廣播不做出回應。

  透過阻止“放大器”網路上的主機對ICMP ECHO(ping)廣播做出回應,可以阻止該廣播網路成為攻擊的幫兇。

  限制icmp echo的流量

  當大量的資料湧入一個介面的時候,即使使用了訪問策略對ICMP包進行了刪除,介面還是可能會因為忙於不斷刪除大量資料而導致介面不能提供正常服務。

  與被動的刪除資料相比,一個主動的方法是,在介面上設定承諾速率限制(committed Access rate,簡稱CAR),將特定資料的流量限制在一個範圍之內,允許其適量的透過,同時保證了其它流量的正常透過。

  例:使用CAR限制ICMP echo flooding

  !建立訪問列表,分類要過濾的資料

  access-list 102 permit icmp any any echo

  access-list 102 permit icmp any any echo-reply

  !在介面上配置CAR,將ICMP echo流量

  !限制在256k,允許突發8k

  interface Serial3/0/0

  rate-limit input access-group 102 256000 8000 8000 conform-action transmit exceed-action drop

 二、受害者的策略

  由Smurf攻擊產生的攻擊資料流量在經過了“放大器網路“放大之後,當到達最終攻擊目標時,資料流量可能是非常巨大的。為了保護被攻擊的系統免於崩潰,我們可以採取以下兩種策略:

  使用控制訪問列表過濾資料

  在最終攻擊目標的網路邊界路由器上使用訪問控制列表,拒絕將ping攻擊資料包發往被攻擊的主機。但這是一個粗努的方法,因為當你在路由器上完全限制了發往被攻擊主機的ping資料包之後,其它希望正常透過的ping資料包也將無法透過。另外,在邊界路由器上使用訪問控制列表過濾ping資料之後,雖然可以保護路由器連線的內部網路免受攻擊,但攻擊的資料還是會大量湧入路由器,導致路由器介面的阻塞。

  使用CAR限制速率

  在最終攻擊目標的網路邊界路由器上使用CAR限制是一種更為可取的方法。透過CAR可以將流入網路的某一類資料包的總流量限制在一定的範圍,從而可以保證其它資料的正常透過。

  結論

  本文討論的基於路由器配置來防禦dos攻擊的方法在實際應用中有非常顯著的效果。當前絕大部分的網路仍然使用路由器作為邊界連線裝置,所以本文闡述的方法具有普遍實施的意義。

相關文章