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