DDos攻擊

分布式拒絕服務(DDoS:Distributed Denial of Service)攻擊指借助於客戶/服務器技術,將多個計算機聯合起來作為攻擊平臺,對一個或多個目標發動DDoS攻擊,從而成倍地提高拒絕服務攻擊的威力。通常,攻擊者使用一個偷竊帳號將DDoS主控程序安裝在一個計算機上,在一個設定的時間主控程序將與大量代理程序通訊,代理程序已經被安裝在網絡上的許多計算機上。代理程序收到指令時就發動攻擊。利用客戶/服務器技術,主控程序能在幾秒鐘內激活成百上千次代理程序的運行。


首先從一個比方來深入理解什麽是DDOS。

一群惡霸試圖讓對面那家有著競爭關系的商鋪無法正常營業,他們會采取什麽手段呢?(只為舉例,切勿模仿)惡霸們扮作普通客戶一直擁擠在對手的商鋪,賴著不走,真正的購物者卻無法進入;或者總是和營業員有一搭沒一搭的東扯西扯,讓工作人員不能正常服務客戶;也可以為商鋪的經營者提供虛假信息,商鋪的上上下下忙成一團之後卻發現都是一場空,最終跑了真正的大客戶,損失慘重。此外惡霸們完成這些壞事有時憑單幹難以完成,需要叫上很多人一起。嗯,網絡安全領域中DoS和DDoS攻擊就遵循著這些思路。

在信息安全的三要素——“保密性”、“完整性”和“可用性”中,DoS(Denial of Service),即拒絕服務攻擊,針對的目標正是“可用性”。該攻擊方式利用目標系統網絡服務功能缺陷或者直接消耗其系統資源,使得該目標系統無法提供正常的服務。

DdoS的攻擊方式有很多種,最基本的DoS攻擊就是利用合理的服務請求來占用過多的服務資源,從而使合法用戶無法得到服務的響應。單一的DoS攻擊一般是采用一對一方式的,當攻擊目標CPU速度低、內存小或者網絡帶寬小等等各項指標不高的性能,它的效果是明顯的。隨著計算機與網絡技術的發展,計算機的處理能力迅速增長,內存大大增加,同時也出現了千兆級別的網絡,這使得DoS攻擊的困難程度加大了-目標對惡意攻擊包的"消化能力"加強了不少。這時候分布式的拒絕服務攻擊手段(DDoS)就應運而生了。DDoS就是利用更多的傀儡機(肉雞)來發起進攻,以比從前更大的規模來進攻受害者

DDoS攻擊通過大量合法的請求占用大量網絡資源,以達到癱瘓網絡的目的。 這種攻擊方式可分為以下幾種:

通過使網絡過載來幹擾甚至阻斷正常的網絡通訊;

通過向服務器提交大量請求,使服務器超負荷;

阻斷某一用戶訪問服務器;

阻斷某服務與特定系統或個人的通訊。

IP Spoofing

IP欺騙攻擊是一種黑客通過向服務端發送虛假的包以欺騙服務器的

做法。具體說,就是將包中的源IP地址設置為不存在或不合法的值。服務器一旦接受到該包便會返回接受請求包,但實際上這個包永遠返回不到來源處的計算機。這種做法使服務器必需開啟自己的監聽端口不斷等待,也就浪費了系統各方面的資源。

LAND attack

這種攻擊方式與SYN floods類似,不過在LAND attack攻擊包中的源地址和目標地址都是攻擊對象的IP。這種攻擊會導致被攻擊的機器死循環,最終耗盡資源而死機。

ICMP floods

ICMPfloods是通過向未良好設置的路由器發送廣播信息占用系統資源的做法。

Application

與前面敘說的攻擊方式不同,Application level floods主要是針對應用軟件層的,也就是高於OSI的。它同樣是以大量消耗系統資源為目的,通過向IIS這樣的網絡服務程序提出無節制的資源申請來迫害正常的網絡服務。

被攻擊主機上有大量等待的TCP連接;

網絡中充斥著大量的無用的數據包;

源地址為假 制造高流量無用數據,造成網絡擁塞,使受害主機無法正常和外界通訊;

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

嚴重時會造成系統死機。

分布式拒絕服務攻擊采取的攻擊手段就是分布式的,在攻擊的模式改變了傳統的點對點的攻擊模式,使攻擊方式出現了沒有規律的情況,而且在進行攻擊的時候,通常使用的也是常見的協議和服務,這樣只是從協議和服務的類型上是很難對攻擊進行區分的。在進行攻擊的時候,攻擊數據包都是經過偽裝的,在源IP 地址上也是進行偽造的,這樣就很難對攻擊進行地址的確定,在查找方面也是很難的。這樣就導致了分布式拒絕服務攻擊在檢驗方法上是很難做到的。

對分布式攻擊進行必要的分析,就可以得到這種攻擊的特性。分布式拒絕服務在進行攻擊的時候,要對攻擊目標的流量地址進行集中,然後在攻擊的時候不會出現擁塞控制。在進行攻擊的時候會選擇使用隨機的端口來進行攻擊,會通過數千端口對攻擊的目標發送大量的數據包,使用固定的端口進行攻擊的時候,會向同一個端口發送大量的數據包。

  按照TCP/IP協議的層次可將DDOS攻擊分為基於ARP的攻擊、基於ICMP的攻擊、基於IP的攻擊、基於UDP的攻擊、基於TCP的攻擊和基於應用層的攻擊。
基於ARP

  ARP是無連接的協議,當收到攻擊者發送來的ARP應答時。它將接收ARP應答包中所提供的信息。更新ARP緩存。因此,含有錯誤源地址信息的ARP請求和含有錯誤目標地址信息的ARP應答均會使上層應用忙於處理這種異常而無法響應外來請求,使得目標主機喪失網絡通信能力。產生拒絕服務,如ARP重定向攻擊。
基於ICMP

  攻擊者向一個子網的廣播地址發送多個ICMP Echo請求數據包。並將源地址偽裝成想要攻擊的目標主機的地址。這樣,該子網上的所有主機均對此ICMP Echo請求包作出答復,向被攻擊的目標主機發送數據包,使該主機受到攻擊,導致網絡阻塞。
基於IP

  TCP/IP中的IP數據包在網絡傳遞時,數據包可以分成更小的片段。到達目的地後再進行合並重裝。在實現分段重新組裝的進程中存在漏洞,缺乏必要的檢查。利用IP報文分片後重組的重疊現象攻擊服務器,進而引起服務器內核崩潰。如Teardrop是基於IP的攻擊。

基於TCP

[2] SYN Flood攻擊的過程在TCP協議中被稱為三次握手(Three-way Handshake),而SYN Flood拒絕服務攻擊就是通過三次握手而實現的。TCP連接的三次握手中,假設一個用戶向服務器發送了SYN報文後突然死機或掉線,那麽服務器在發出SYN+ACK應答報文後是無法收到客戶端的ACK報文的(第三次握手無法完成),這種情況下服務器端一般會重試(再次發送SYN+ACK給客戶端)並等待一段時間後丟棄這個未完成的連接。服務器端將為了維護一個非常大的半連接列表而消耗非常多的資源。

基於應用層

應用層包括SMTP,HTTP,DNS等各種應用協議。其中SMTP定義了如何在兩個主機間傳輸郵件的過程,基於標準SMTP的郵件服務器,在客戶端請求發送郵件時,是不對其身份進行驗證的。另外,許多郵件服務器都允許郵件中繼。攻擊者利用郵件服務器持續不斷地向攻擊目標發送垃圾郵件,大量侵占服務器資源。

DDoS並不象入侵一臺主機那樣簡單。了解這些原理之後,你便會更加明白入侵者的意圖,從此便掌握了預防的技巧。一般來說,黑客進行DDoS攻擊時會經過這樣的步驟:

搜集資料

下列情況是黑客非常關心的情報:被攻擊目標主機數目、地址情況 目標主機的配置、性能 目標的寬帶。

對於DDoS攻擊者來說,攻擊互聯網上的某個站點,有一個重點就是確定到底有多少臺主機在支持這個站點,一個大的網站可能有很多臺主機利用負載均衡技術提供同一個網站的www服務。

如果要進行DDoS攻擊的話,應該攻擊哪一個地址呢?使這臺機器癱瘓,但其他的主機還是能向外提供www服務,所以想讓別人訪問不到網站的話,要所有這些IP地址的機器都癱掉才行。在實際的應用中,一個IP地址往往還代表著數臺機器:網站維護者使用了四層或七層交換機來做負載均衡,把對一個IP地址的訪問以特定的算法分配到下屬的每個主機上去。這時對於DDoS攻擊者來說情況就更復雜了,他面對的任務可能是讓幾十臺主機的服務都不正常。

所以說事先搜集情報對DDoS攻擊者來說是非常重要的,這關系到使用多少臺傀儡機才能達到效果的問題。簡單地考慮一下,在相同的條件下,攻擊同一站點的2臺主機需要2臺傀儡機的話,攻擊5臺主機可能就需要5臺以上的傀儡機。有人說做攻擊的傀儡機越多越好,不管你有多少臺主機我都用盡量多的傀儡機來攻就是了,反正傀儡機超過了時候效果更好。

但在實際過程中,有很多黑客並不進行情報的搜集而直接進行DDoS的攻擊,這時候攻擊的盲目性就很大了,效果如何也要靠運氣。其實做黑客也象網管員一樣,是不能偷懶的。一件事做得好與壞,態度最重要,水平還在其次。

占領

黑客最感興趣的是有下列情況的主機:網絡狀態好的主機 性能好的主機 安全管理水平差的主機

這一部分實際上是使用了另一大類的攻擊手段:利用形攻擊。這是和DDoS並列的攻擊方式。簡單地說,就是占領和控制被攻擊的主機。取得最高的管理權限,或者至少得到一個有權限完成DDoS攻擊任務的帳號。對於一個DDoS攻擊者來說,準備好一定數量的傀儡機是一個必要的條件,下面說一下他是如何攻擊並占領它們。

首先,黑客做的工作一般是掃描,隨機地或者是有針對性地利用掃描器去發現互聯網上那些有漏洞的機器,像程序的溢出漏洞、cgi、Unicode、ftp、數據庫漏洞…(簡直舉不勝舉啊),都是黑客希望看到的掃描結果。隨後就是嘗試入侵了,具體的手段就不在這裏多說了,感興趣的話網上有很多關於這些內容的文章。

總之黑客占領了一臺傀儡機了!然後他做什麽呢?除了上面說過留後門擦腳印這些基本工作之外,他會把DDoS攻擊用的程序上載過去,一般是利用ftp。在攻擊機上,會有一個DDoS的發包程序,黑客就是利用它來向受害目標發送惡意攻擊包的。

實際攻擊

經過前2個階段的精心準備之後,黑客就開始瞄準目標準備發射了。前面的準備做得好的話,實際攻擊過程反而是比較簡單的。就象圖示裏的那樣,黑客登錄到做為控制臺的傀儡機,向所有的攻擊機發出命令:"預備~ ,瞄準~,開火!"。這時候埋伏在攻擊機中的DDoS攻擊程序就會響應控制臺的命令,一起向受害主機以高速度發送大量的數據包,導致它死機或是無法響應正常的請求。黑客一般會以遠遠超出受害方處理能力的速度進行攻擊,他們不會"憐香惜玉"。

老道的攻擊者一邊攻擊,還會用各種手段來監視攻擊的效果,在需要的時候進行一些調整。簡單些就是開個窗口不斷地ping目標主機,在能接到回應的時候就再加大一些流量或是再命令更多的傀儡機來加入攻擊。

總體來說,對DoS和DDoS的防範主要從下面幾個方面考慮:

盡可能對系統加載最新補丁,並采取有效的合規性配置,降低漏洞利用風險;

采取合適的安全域劃分,配置防火墻、入侵檢測和防範系統,減緩攻擊。

采用分布式組網、負載均衡、提升系統容量等可靠性措施,增強總體服務能力。

可參考措施如下:

1、采用高性能的網絡設備引

首先要保證網絡設備不能成為瓶頸,因此選擇路由器、交換機、硬件防火墻等設備的時候要盡量選用知名度高、 口碑好的產品。 再就是假如和網絡提供商有特殊關系或協議的話就更好了,當大量攻擊發生的時候請他們在網絡接點處做一下流量限制來對抗某些種類的DDOS 攻擊是非常有效的。

2、盡量避免 NAT 的使用

無論是路由器還是硬件防護墻設備要盡量避免采用網絡地址轉換 NAT 的使用, 因為采用此技術會較大降低網絡通信能力,其實原因很簡單,因為 NA T 需要對地址來回轉換,轉換過程中需要對網絡包的校驗和進行計算,因此浪費了很多 CPU 的時間,但有些時候必須使用 NA T,那就沒有好辦法了。

3、充足的網絡帶寬保證

網絡帶寬直接決定了能抗受攻擊的能力, 假若僅僅有 10M 帶寬的話, 無論采取什麽措施都很難對抗當今的 SYNFlood 攻擊, 至少要選擇 100M 的共享帶寬,最好的當然是掛在1000M 的主幹上了。但需要註意的是,主機上的網卡是 1000M 的並不意味著它的網絡帶寬就是千兆的, 若把它接在 100M 的交換機上, 它的實際帶寬不會超過 100M, 再就是接在 100M的帶寬上也不等於就有了百兆的帶寬, 因為網絡服務商很可能會在交換機上限制實際帶寬為10M,這點一定要搞清楚。

4、升級主機服務器硬件

在有網絡帶寬保證的前提下,請盡量提升硬件配置,要有效對抗每秒 10 萬個 SYN 攻擊包,服務器的配置至少應該為:P4 2.4G/DDR512M/SCSI-HD,起關鍵作用的主要是 CPU 和內存, 若有誌強雙 CPU 的話就用它吧, 內存一定要選擇 DDR 的高速內存, 硬盤要盡量選擇SCSI 的,別只貪 IDE 價格不貴量還足的便宜,否則會付出高昂的性能代價,再就是網卡一定要選用 3COM 或 Intel 等名牌的,若是 Realtek 的還是用在自己的 PC 上吧。

5、把網站做成靜態頁面

大量事實證明,把網站盡可能做成靜態頁面,不僅能大大提高抗攻擊能力,而且還給黑客入侵帶來不少麻煩,至少到為止關於 HTML 的溢出還沒出現,新浪、搜狐、網易等門戶網站主要都是靜態頁面, 若你非需要動態腳本調用, 那就把它弄到另外一臺單獨主機去,免的遭受攻擊時連累主服務器, 當然, 適當放一些不做數據庫調用腳本還是可以的, 此外,最好在需要調用數據庫的腳本中拒絕使用代理的訪問, 因為經驗表明使用代理訪問你網站的80%屬於惡意行為。