1. 程式人生 > >防大流量的DDOS攻擊,DDOS應該怎麼防禦

防大流量的DDOS攻擊,DDOS應該怎麼防禦

DDOS的產生
 DDOS 最早可追述到1996年最初,在中國2002年開始頻繁出現,2003年已經初具規模。近幾年由於寬頻的普及,很多網站開始盈利,其中很多非法網站利潤巨大,造成同行之間互相攻擊,還有一部分人利用網路攻擊來敲詐錢財。同時windows 平臺的漏洞大量的被公佈, 流氓軟體,病毒,木馬大量充斥著網路,有些技術的人可以很容易非法入侵控制大量的個人計算機來發起DDOS攻擊從中謀利。攻擊已經成為網際網路上的一種最直接的競爭方式,而且收入非常高,利益的驅使下,攻擊已經演變成非常完善的產業鏈。通過在大流量網站的網頁裡注入病毒木馬,木馬可以通過windows平臺的漏洞感染瀏覽網站的人,一旦中了木馬,這臺計算機就會被後臺操作的人控制,這臺計算機也就成了所謂的肉雞,每天都有人專門收集肉雞然後以幾毛到幾塊的一隻的價格出售,因為利益需要攻擊的人就會購買,然後遙控這些肉雞攻擊伺服器。


被DDoS攻擊時的現象
 被攻擊主機上有大量等待的TCP連線

 網路中充斥著大量的無用的資料包,源地址為假

 製造高流量無用資料,造成網路擁塞,使受害主機無法正常和外界通訊

 利用受害主機提供的服務或傳輸協議上的缺陷,反覆高速的發出特定的服務請求,使受害主機無法及時處理所有正常請求

 嚴重時會造成系統宕機

大級別攻擊執行原理
 一個比較完善的DDoS攻擊體系分成四大部分,先來看一下最重要的第2和第3部分:它們分別用做控制和實際發起攻擊。請注意控制機與攻擊機的區別,對第4部分的受害者來說,DDoS的實際攻擊包是從第3部分攻擊傀儡機上發出的,第2部分的控制機只發布命令而不參與實際的攻擊。對第2和第3部分計算機,黑客有控制權或者是部分的控制權,並把相應的DDoS程式上傳到這些平臺上,這些程式與正常的程式一樣執行並等待來自黑客的指令,通常它還會利用各種手段隱藏自己不被別人發現。在平時,這些傀儡機器並沒有什麼異常,只是一旦黑客連線到它們進行控制,併發出指令的時候,攻擊傀儡機就成為害人者去發起攻擊了。


 有的朋友也許會問道:"為什麼黑客不直接去控制攻擊傀儡機,而要從控制傀儡機上轉一下呢?"。這就是導致DDoS攻擊難以追查的原因之一了。做為攻擊者的角度來說,肯定不願意被捉到,而攻擊者使用的傀儡機越多,他實際上提供給受害者的分析依據就越多。在佔領一臺機器後,高水平的攻擊者會首先做兩件事:1. 考慮如何留好後門!2. 如何清理日誌。這就是擦掉腳印,不讓自己做的事被別人查覺到。比較不敬業的黑客會不管三七二十一把日誌全都刪掉,但這樣的話網管員發現日誌都沒了就會知道有人幹了壞事了,頂多無法再從日誌發現是誰幹的而已。相反,真正的好手會挑有關自己的日誌專案刪掉,讓人看不到異常的情況。這樣可以長時間地利用傀儡機。


 但是在第3部分攻擊傀儡機上清理日誌實在是一項龐大的工程,即使在有很好的日誌清理工具的幫助下,黑客也是對這個任務很頭痛的。這就導致了有些攻擊機弄得不是很乾淨,通過它上面的線索找到了控制它的上一級計算機,這上級的計算機如果是黑客自己的機器,那麼他就會被揪出來了。但如果這是控制用的傀儡機的話,黑客自身還是安全的。控制傀儡機的數目相對很少,一般一臺就可以控制幾十臺攻擊機,清理一臺計算機的日誌對黑客來講就輕鬆多了,這樣從控制機再找到黑客的可能性也大大降低。

DDOS的主要幾個攻擊
SYN變種攻擊
 傳送偽造源IP的SYN資料包但是資料包不是64位元組而是上千位元組這種攻擊會造成一些防火牆處理錯誤鎖死,消耗伺服器CPU記憶體的同時還會堵塞頻寬。
TCP混亂資料包攻擊
 傳送偽造源IP的 TCP資料包,TCP頭的TCP Flags 部分是混亂的可能是syn ,ack ,syn+ack ,syn+rst等等,會造成一些防火牆處理錯誤鎖死,消耗伺服器CPU記憶體的同時還會堵塞頻寬。
針對用UDP協議的攻擊
 很多聊天室,視訊音訊軟體,都是通過UDP資料包傳輸的,攻擊者針對分析要攻擊的網路軟體協議,傳送和正常資料一樣的資料包,這種攻擊非常難防護,一般防護牆通過攔截攻擊資料包的特徵碼防護,但是這樣會造成正常的資料包也會被攔截,
針對WEB Server的多連線攻擊
 通過控制大量肉雞同時連線訪問網站,造成網站無法處理癱瘓,這種攻擊和正常訪問網站是一樣的,只是瞬間訪問量增加幾十倍甚至上百倍,有些防火牆可以通過限制每個連線過來的IP連線數來防護,但是這樣會造成正常使用者稍微多開啟幾次網站也會被封,
針對WEB Server的變種攻擊
 通過控制大量肉雞同時連線訪問網站,一點連線建立就不斷開,一直髮送傳送一些特殊的GET訪問請求造成網站資料庫或者某些頁面耗費大量的CPU,這樣通過限制每個連線過來的IP連線數就失效了,因為每個肉雞可能只建立一個或者只建立少量的連線。這種攻擊非常難防護,後面給大家介紹防火牆的解決方案
針對WEB Server的變種攻擊
 通過控制大量肉雞同時連線網站埠,但是不傳送GET請求而是亂七八糟的字元,大部分防火牆分析攻擊資料包前三個位元組是GET字元然後來進行http協議的分析,這種攻擊,不傳送GET請求就可以繞過防火牆到達伺服器,一般伺服器都是共享頻寬的,頻寬不會超過10M 所以大量的肉雞攻擊資料包就會把這臺伺服器的共享頻寬堵塞造成伺服器癱瘓,這種攻擊也非常難防護,因為如果只簡單的攔截客戶端傳送過來沒有GET字元的資料包,會錯誤的封鎖很多正常的資料包造成正常使用者無法訪問,後面給大家介紹防火牆的解決方案
針對遊戲伺服器的攻擊
 因為遊戲伺服器非常多,這裡介紹最早也是影響最大的傳奇遊戲,傳奇遊戲分為登陸註冊埠7000,人物選擇埠7100,以及遊戲執行埠7200,7300,7400等,因為遊戲自己的協議設計的非常複雜,所以攻擊的種類也花樣倍出,大概有幾十種之多,而且還在不斷的發現新的攻擊種類,這裡介紹目前最普遍的假人攻擊,假人攻擊是通過肉雞模擬遊戲客戶端進行自動註冊、登陸、建立人物、進入遊戲活動從資料協議層面模擬正常的遊戲玩家,很難從遊戲資料包來分析出哪些是攻擊哪些是正常玩家。

 以上介紹的幾種最常見的攻擊也是比較難防護的攻擊。一般基於包過濾的防火牆只能分析每個資料包,或者有限的分析資料連線建立的狀態,防護SYN,或者變種的SYN,ACK攻擊效果不錯,但是不能從根本上來分析tcp,udp協議,和針對應用層的協議,比如http,遊戲協議,軟體視訊音訊協議,現在的新的攻擊越來越多的都是針對應用層協議漏洞,或者分析協議然後傳送和正常資料包一樣的資料,或者乾脆模擬正常的資料流,單從資料包層面,分析每個資料包裡面有什麼資料,根本沒辦法很好的防護新型的攻擊。

SYN攻擊解析
 SYN攻擊屬於DOS攻擊的一種,它利用TCP協議缺陷,通過傳送大量的半連線請求,耗費CPU和記憶體資源。TCP協議建立連線的時候需要雙方相互確認資訊,來防止連線被偽造和精確控制整個資料傳輸過程資料完整有效。所以TCP協議採用三次握手建立一個連線。

 第一次握手:建立連線時,客戶端傳送syn包到伺服器,並進入SYN_SEND狀態,等待伺服器確認; 

 第二次握手:伺服器收到syn包,必須確認客戶的SYN 同時自己也傳送一個SYN包 即SYN+ACK包,此時伺服器進入SYN_RECV狀態;

 第三次握手:客戶端收到伺服器的SYN+ACK包,向伺服器傳送確認包ACK此包傳送完畢,客戶端和伺服器進入ESTABLISHED狀態,完成三次握手。

 SYN攻擊利用TCP協議三次握手的原理,大量傳送偽造源IP的SYN包也就是偽造第一次握手資料包,伺服器每接收到一個SYN包就會為這個連線資訊分配核心記憶體並放入半連線佇列,如果短時間內接收到的SYN太多,半連線佇列就會溢位,作業系統會把這個連線資訊丟棄造成不能連線,當攻擊的SYN包超過半連線佇列的最大值時,正常的客戶傳送SYN資料包請求連線就會被伺服器丟棄, 每種作業系統半連線佇列大小不一樣所以抵禦SYN攻擊的能力也不一樣。那麼能不能把半連線佇列增加到足夠大來保證不會溢位呢,答案是不能,每種作業系統都有方法來調整TCP模組的半連線佇列最大數,例如Win2000作業系統在登錄檔 HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters裡 TcpMaxHalfOpen,TcpMaxHalfOpenRetried ,Linux作業系統用變數tcp_max_syn_backlog來定義半連線佇列的最大數。但是每建立一個半連線資源就會耗費系統的核心記憶體,作業系統的核心記憶體是專門提供給系統核心使用的記憶體不能進行虛擬記憶體轉換是非常緊缺的資源windows2000 系統當實體記憶體是4g的時候 核心記憶體只有不到300M,系統所有核心模組都要使用核心記憶體所以能給半連線佇列用的核心記憶體非常少。Windows 2003 預設安裝情況下,WEB SERVER的80埠每秒鐘接收5000個SYN資料包一分鐘後網站就打不開了。標準SYN資料包64位元組 5000個等於 5000*64 *8(換算成bit)/1024=2500K也就是 2.5M頻寬 ,如此小的頻寬就可以讓伺服器的埠癱瘓,由於攻擊包的源IP是偽造的很難追查到攻擊源,,所以這種攻擊非常多。

如何防止和減少DDOS攻擊的危害
拒絕服務攻擊的發展
 從拒絕服務攻擊誕生到現在已經有了很多的發展,從最初的簡單Dos到現在的DdoS。那麼什麼是Dos和DdoS呢?DoS是一種利用單臺計算機的攻擊方式。而DdoS(Distributed Denial of Service,分散式拒絕服務)是一種基於DoS的特殊形式的拒絕服務攻擊,是一種分佈、協作的大規模攻擊方式,主要瞄準比較大的站點,比如一些商業公司、搜尋引擎和政府部門的站點。DdoS攻擊是利用一批受控制的機器向一臺機器發起攻擊,這樣來勢迅猛的攻擊令人難以防備,因此具有較大的破壞性。如果說以前網路管理員對抗Dos可以採取過濾IP地址方法的話,那麼面對當前DdoS眾多偽造出來的地址則顯得沒有辦法。所以說防範DdoS攻擊變得更加困難,如何採取措施有效的應對呢?下面我們從兩個方面進行介紹。
預防為主保證安全
 DdoS攻擊是黑客最常用的攻擊手段,下面列出了對付它的一些常規方法。

 (1)定期掃描

 要定期掃描現有的網路主節點,清查可能存在的安全漏洞,對新出現的漏洞及時進行清理。骨幹節點的計算機因為具有較高的頻寬,是黑客利用的最佳位置,因此對這些主機本身加強主機安全是非常重要的。而且連線到網路主節點的都是伺服器級別的計算機,所以定期掃描漏洞就變得更加重要了。

 (2)在骨幹節點配置防火牆

 防火牆本身能抵禦DdoS攻擊和其他一些攻擊。在發現受到攻擊的時候,可以將攻擊導向一些犧牲主機,這樣可以保護真正的主機不被攻擊。當然導向的這些犧牲主機可以選擇不重要的,或者是linux以及unix等漏洞少和天生防範攻擊優秀的系統。

 (3)用足夠的機器承受黑客攻擊

 這是一種較為理想的應對策略。如果使用者擁有足夠的容量和足夠的資源給黑客攻擊,在它不斷訪問使用者、奪取使用者資源之時,自己的能量也在逐漸耗失,或許未等使用者被攻死,黑客已無力支招兒了。不過此方法需要投入的資金比較多,平時大多數裝置處於空閒狀態,和目前中小企業網路實際執行情況不相符。

 (4)充分利用網路裝置保護網路資源

 所謂網路裝置是指路由器、防火牆等負載均衡裝置,它們可將網路有效地保護起來。當網路被攻擊時最先死掉的是路由器,但其他機器沒有死。死掉的路由器經重啟後會恢復正常,而且啟動起來還很快,沒有什麼損失。若其他伺服器死掉,其中的資料會丟失,而且重啟伺服器又是一個漫長的過程。特別是一個公司使用了負載均衡裝置,這樣當一臺路由器被攻擊宕機時,另一臺將馬上工作。從而最大程度的削減了DdoS的攻擊。

 (5)過濾不必要的服務和埠

 過濾不必要的服務和埠,即在路由器上過濾假IP……只開放服務埠成為目前很多伺服器的流行做法,例如WWW伺服器那麼只開放80而將其他所有埠關閉或在防火牆上做阻止策略。

 (6)檢查訪問者的來源

 使用Unicast Reverse Path Forwarding等通過反向路由器查詢的方法檢查訪問者的IP地址是否是真,如果是假的,它將予以遮蔽。許多黑客攻擊常採用假IP地址方式迷惑使用者,很難查出它來自何處。因此,利用Unicast Reverse Path Forwarding可減少假IP地址的出現,有助於提高網路安全性。

 (7)過濾所有RFC1918 IP地址

 RFC1918 IP地址是內部網的IP地址,像10.0.0.0、192.168.0.0 和172.16.0.0,它們不是某個網段的固定的IP地址,而是Internet內部保留的區域性IP地址,應該把它們過濾掉。此方法並不是過濾內部員工的訪問,而是將攻擊時偽造的大量虛假內部IP過濾,這樣也可以減輕DdoS的攻擊。

 (8)限制SYN/ICMP流量

 使用者應在路由器上配置SYN/ICMP的最大流量來限制SYN/ICMP封包所能佔有的最高頻寬,這樣,當出現大量的超過所限定的SYN/ICMP流量時,說明不是正常的網路訪問,而是有黑客入侵。早期通過限制SYN/ICMP流量是最好的防範DOS的方法,雖然目前該方法對於DdoS效果不太明顯了,不過仍然能夠起到一定的作用。
尋找機會應對攻擊
 如果使用者正在遭受攻擊,他所能做的抵禦工作將是非常有限的。因為在原本沒有準備好的情況下有大流量的災難性攻擊衝向使用者,很可能在使用者還沒回過神之際,網路已經癱瘓。但是,使用者還是可以抓住機會尋求一線希望的。

 (1)檢查攻擊來源,通常黑客會通過很多假IP地址發起攻擊,此時,使用者若能夠分辨出哪些是真IP哪些是假IP地址,然後瞭解這些IP來自哪些網段,再找網網管理員將這些機器關閉,從而在第一時間消除攻擊。如果發現這些IP地址是來自外面的而不是公司內部的IP的話,可以採取臨時過濾的方法,將這些IP地址在伺服器或路由器上過濾掉。

 (2)找出攻擊者所經過的路由,把攻擊遮蔽掉。若黑客從某些埠發動攻擊,使用者可把這些埠遮蔽掉,以阻止入侵。不過此方法對於公司網路出口只有一個,而又遭受到來自外部的DdoS攻擊時不太奏效,畢竟將出口埠封閉後所有計算機都無法訪問internet了。

 (3)最後還有一種比較折中的方法是在路由器上濾掉ICMP。雖然在攻擊時他無法完全消除入侵,但是過濾掉ICMP後可以有效的防止攻擊規模的升級,也可以在一定程度上降低攻擊的級別。

 不知道身為網路管理員的你是否遇到過伺服器因為拒絕服務攻擊(DDOS攻擊)都癱瘓的情況呢?就網路安全而言目前最讓人擔心和害怕的入侵攻擊就要算是DDOS攻擊了。他和傳統的攻擊不同,採取的是模擬多個客戶端來連線伺服器,造成伺服器無法完成如此多的客戶端連線,從而無法提供服務。

目前網路安全界對於DdoS的防範有效的防禦辦法:
 可以採用因爾特網路資料中心推出的TNT防禦防攻擊系統:本系統對於攻擊採用智慧識別實時進行攻擊流量的轉移,讓攻擊者的流量作用在伺服器上的流量控制在最小的程度從而到達防禦防攻擊的目的,無論是G口發包還是肉雞攻擊,使用我們TNT防禦防攻擊系統在保障您個人伺服器或者資料安全的狀態下,隻影響瞬間某個地區某部分使用者的使用,保證其他使用者的正常使用。並且系統會在較短時間內恢復已經癱瘓的使用者訪問.還可以讓G口發包的伺服器或者肉雞發出的資料包全部浪費與耗盡完.試想如果攻擊的流量在白白浪費和消耗掉,黑客也不能真實把流量作用在你的網站或伺服器上,那黑客用什麼來攻擊您的網站呢?

如果按照系統的方法和思路去防範DdoS的話,收到的效果還是非常明顯的,可以將攻擊帶來的損失降低到最小。