定義
首先從一個比方來深入理解什麼是DDOS 。一群惡霸試圖讓對面那家有著競爭關係的商鋪無法正常營業,他們會採取什麼手段呢?(只為舉例,切勿模仿)惡霸們扮作普通客戶一直擁擠在對手的商鋪,賴著不走,真正的購物者卻無法進入;或者總是和營業員有一搭沒一搭的東扯西扯,讓工作人員不能正常服務客戶;也可以為商鋪的經營者提供虛假信息,商鋪的上上下下忙成一團之後卻發現都是一場空,最終跑了真正的大客戶,損失慘重。此外惡霸們完成這些壞事有時憑單幹難以完成,需要叫上很多人一起。嗯,網路安全領域中DoS和DDoS攻擊就遵循著這些思路。
在信息安全的三要素——“保密性”、“完整性”和“可用性”中,DoS(DenialofService),即拒絕服務攻擊,針對的目標正是“可用性”。該攻擊方式利用目標系統網路服務功能缺陷或者直接消耗其系統資源,使得該目標系統無法提供正常的服務。
DdoS的攻擊方式有很多種,最基本的DoS攻擊就是利用合理的服務請求來占用過多的服務資源,從而使合法用戶無法得到服務的回響。單一的DoS攻擊一般是採用一對一方式的,當攻擊目標CPU速度低、記憶體小或者網路頻寬小等等各項指標不高的性能,它的效果是明顯的。隨著計算機與網路技術的發展,計算機的處理能力迅速增長,記憶體大大增加,同時也出現了千兆級別的網路,這使得DoS攻擊的困難程度加大了-目標對惡意攻擊包的"消化能力"加強了不少。這時候分散式的拒絕服務攻擊手段(DDoS)就應運而生了。DDoS就是利用更多的傀儡機(肉雞)來發起進攻,以比從前更大的規模來進攻受害者
攻擊方式
DDoS攻擊通過大量合法的請求占用大量網路資源,以達到癱瘓網路的目的。 這種攻擊方式可分為以下幾種:
1、通過使網路過載來干擾甚至阻斷正常的網路通訊;
2、通過向伺服器提交大量請求,使伺服器超負荷;
3、阻斷某一用戶訪問伺服器;
4、阻斷某服務與特定系統或個人的通訊。
IP Spoofing
IP欺騙攻擊是一種黑客通過向服務端傳送虛假的包以欺騙伺服器的
做法。具體說,就是將包中的源IP位址設定為不存在或不合法的值。伺服器一旦接受到該包便會返回接受請求包,但實際上這個包永遠返回不到來源處的計算機。這種做法使伺服器必需開啟自己的監聽連線埠不斷等待,也就浪費了系統各方面的資源。
LAND attack
這種攻擊方式與SYN floods類似,不過在LAND attack攻擊包中的原地址和目標地址都是攻擊對象的IP。這種攻擊會導致被攻擊的機器死循環,最終耗盡資源而當機。
ICMP floods
ICMPfloods是通過向未良好設定的路由器傳送廣播信息占用系統資源的做法。
Application
與前面敘說的攻擊方式不同,Application level floods主要是針對套用軟體層的,也就是高於OSI的。它同樣是以大量消耗系統資源為目的,通過向IIS這樣的網路服務程式提出無節制的資源申請來迫害正常的網路服務。
攻擊現象
1、被攻擊主機上有大量等待的TCP連線
2、網路中充斥著大量的無用的數據包,源地址為假
3、製造高流量無用數據,造成網路擁塞,使受害主機無法正常和外界通訊
4、利用受害主機提供的服務或傳輸協定上的缺陷,反覆高速的發出特定的服務請求,使受害主機無法及時處理所有正常請求
5、嚴重時會造成系統當機
攻擊特點
分散式拒絕服務攻擊採取的攻擊手段就是分散式的,在攻擊的模式改變了傳統的點對點的攻擊模式,使攻擊方式出現了沒有規律的情況,而且在進行攻擊的時候,通常使用的也是常見的協定和服務,這樣只是從協定和服務的類型上是很難對攻擊進行區分的。在進行攻擊的時候,攻擊數據包都是經過偽裝的,在源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的攻擊。
基於套用層
套用層包括SMTP,HTTP,DNS等各種套用協定。其中SMTP定義了如何在兩個主機間傳輸郵件的過程,基於標準SMTP的郵件伺服器,在客戶端請求傳送郵件時,是不對其身份進行驗證的。另外,許多郵件伺服器都允許郵件中繼。攻擊者利用郵件伺服器持續不斷地向攻擊目標傳送垃圾郵件,大量侵占伺服器資源。
流程
DDoS並不象入侵一台主機那樣簡單。了解這些原理之後,你便會更加明白入侵者的意圖,從此便掌握了預防的技巧。一般來說,黑客進行DDoS攻擊時會經過這樣的步驟:
蒐集資料
下列情況是黑客非常關心的情報:被攻擊目標主機數目、地址情況、目標主機的配置、性能、目標的頻寬
對於DDoS攻擊者來說,攻擊網際網路上的某個站點,如http://www.mytarget.com,有一個重點就是確定到底有多少台主機在支持這個站點,一個大的網站可能有很多台主機利用負載均衡技術提供同一個網站的www服務。以yahoo為例,一般會有下列地址都是提供http://www.yahoo.com服務的:
66.218.71.87
66.218.71.88
66.218.71.89
66.218.71.80
66.218.71.81
66.218.71.83
66.218.71.84
66.218.71.86
如果要進行DDoS攻擊的話,應該攻擊哪一個地址呢?使66.218.71.87這台機器癱掉,但其他的主機還是能向外提供www服務,所以想讓別人訪問不到http://www.yahoo.com 的話,要所有這些IP位址的機器都癱掉才行。在實際的套用中,一個IP位址往往還代表著數台機器:網站維護者使用了四層或七層交換機來做負載均衡,把對一個IP位址的訪問以特定的算法分配到下屬的每個主機上去。這時對於DDoS攻擊者來說情況就更複雜了,他面對的任務可能是讓幾十台主機的服務都不正常。
所以說事先蒐集情報對DDoS攻擊者來說是非常重要的,這關係到使用多少台傀儡機才能達到效果的問題。簡單地考慮一下,在相同的條件下,攻擊同一站點的2台主機需要2台傀儡機的話,攻擊5台主機可能就需要5台以上的傀儡機。有人說做攻擊的傀儡機越多越好,不管你有多少台主機我都用儘量多的傀儡機來攻就是了,反正傀儡機超過了時候效果更好。
但在實際過程中,有很多黑客並不進行情報的蒐集而直接進行DDoS的攻擊,這時候攻擊的盲目性就很大了,效果如何也要靠運氣。其實做黑客也象網管員一樣,是不能偷懶的。一件事做得好與壞,態度最重要,水平還在其次。
占領傀儡機
黑客最感興趣的是有下列情況的主機:鏈路狀態好的主機、性能好的主機、安全管理水平差的主機
這一部分實際上是使用了另一大類的攻擊手段:利用形攻擊。這是和DDoS並列的攻擊方式。簡單地說,就是占領和控制被攻擊的主機。取得最高的管理許可權,或者至少得到一個有許可權完成DDoS攻擊任務的帳號。對於一個DDoS攻擊者來說,準備好一定數量的傀儡機是一個必要的條件,下面說一下他是如何攻擊並占領它們的。
首先,黑客做的工作一般是掃描,隨機地或者是有針對性地利用掃描器去發現網際網路上那些有漏洞的機器,象程式的溢出漏洞、cgi、Unicode、ftp、資料庫漏洞…(簡直舉不勝舉啊),都是黑客希望看到的掃描結果。隨後就是嘗試入侵了,具體的手段就不在這裡多說了,感興趣的話網上有很多關於這些內容的文章。
總之黑客現在占領了一台傀儡機了!然後他做什麼呢?除了上面說過留後門擦腳印這些基本工作之外,他會把DDoS攻擊用的程式上載過去,一般是利用ftp。在攻擊機上,會有一個DDoS的發包程式,黑客就是利用它來向受害目標傳送惡意攻擊包的。
實際攻擊
經過前2個階段的精心準備之後,黑客就開始瞄準目標準備發射了。前面的準備做得好的話,實際攻擊過程反而是比較簡單的。就象圖示里的那樣,黑客登錄到做為控制台的傀儡機,向所有的攻擊機發出命令:"預備~ ,瞄準~,開火!"。這時候埋伏在攻擊機中的DDoS攻擊程式就會回響控制台的命令,一起向受害主機以高速度傳送大量的數據包,導致它當機或是無法回響正常的請求。黑客一般會以遠遠超出受害方處理能力的速度進行攻擊,他們不會"憐香惜玉"。
老到的攻擊者一邊攻擊,還會用各種手段來監視攻擊的效果,在需要的時候進行一些調整。簡單些就是開個視窗不斷地ping目標主機,在能接到回應的時候就再加大一些流量或是再命令更多的傀儡機來加入攻擊。
防範
主機設定
所有的主機平台都有抵禦DoS的設定,總結一下,基本的有幾種:
關閉不必要的服務
限制同時打開的Syn半連線數目
縮短Syn半連線的time out時間
及時更新系統補丁
網路設定
網路設備可以從防火牆與路由器上考慮。這兩個設備是到外界的接口設備,在進行防DDoS設定的同時,要注意一下這是以多大的效率犧牲為代價的,對你來說是否值得。
1.防火牆
禁止對主機的非開放服務的訪問 限制同時打開的SYN最大連線數 限制特定IP位址的訪問 啟用防火牆的防DDoS的屬性 嚴格限制對外開放的伺服器的向外訪問 第五項主要是防止自己的伺服器被當做工具去害人。
2.路由器
設定SYN數據包流量速率 升級版本過低的ISO 為路由器建立log server
系統防禦
對於windows系統來說,可以從以下幾個方面來進行防禦:
一. 啟用 SYN 攻擊保護
啟用 SYN 攻擊保護的命名值位於此註冊表項的下面:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services。
值名稱: SynAttackProtect
建議值: 2
有效值: 0 – 2
說明:使 TCP 調整 SYN-ACK 的重傳。配置此值後,在遇到 SYN 攻擊時,對連線逾時的回響將更快速。在超過 TcpMaxHalfOpen 或 TcpMaxHalfOpenRetried 的值後,將觸發 SYN 攻擊保護。
設定 SYN 保護閾值
下列值確定觸發 SYN 保護的閾值。這一部分中的所有註冊表項和值都位於註冊表項 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 的下面。這些註冊表項和值是:
值名稱: TcpMaxPortsExhausted
建議值: 5
有效值: 0 – 65535
說明:指定觸發 SYN 洪水攻擊保護所必須超過的 TCP 連線請求數的閾值。
值名稱: TcpMaxHalfOpen
建議的數值數據: 500
有效值: 100 – 65535
說明:在啟用 SynAttackProtect 後,該值指定處於 SYN_RCVD 狀態的 TCP 連線數的閾值。在超過 SynAttackProtect 後,將觸發 SYN 洪水攻擊保護。
值名稱: TcpMaxHalfOpenRetried
建議的數值數據: 400
有效值: 80 – 65535
說明:在啟用 SynAttackProtect 後,該值指定處於至少已傳送一次重傳的 SYN_RCVD 狀態中的 TCP 連線數的閾值。在超過 SynAttackProtect 後,將觸發 SYN 洪水攻擊保護。
設定其他保護
這一部分中的所有註冊表項和值都位於註冊表項 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 的下面。這些註冊表項和值是:
值名稱: TcpMaxConnectResponseRetransmissions
建議的數值數據: 2
有效值: 0 – 255
說明:控制在回響一次 SYN 請求之後、在取消重傳嘗試之前 SYN-ACK 的重傳次數。
值名稱: TcpMaxDataRetransmissions
建議的數值數據: 2
有效值: 0 – 65535
說明:指定在終止連線之前 TCP 重傳一個數據段(不是連線請求段)的次數。
值名稱: EnablePMTUDiscovery
建議的數值數據: 0
有效值: 0, 1
說明:將該值設定為 1(默認值)可強制 TCP 查找在通向遠程主機的路徑上的最大傳輸單元或最大數據包大小。攻擊者可能將數據包強制分段,這會使堆疊不堪重負。對於不是來自本地子網的主機的連線,將該值指定為 0 可將最大傳輸單元強制設為 576 位元組。
值名稱: KeepAliveTime
建議的數值數據: 300000
有效值: 80 – 4294967295
說明:指定 TCP 嘗試通過傳送持續存活的數據包來驗證空閒連線是否仍然未被觸動的頻率。
值名稱: NoNameReleaseOnDemand
建議的數值數據: 1
有效值: 0, 1
說明:指定計算機在收到名稱發布請求時是否發布其 NetBIOS 名稱。
使用表 1 中匯總的值可獲得最大程度的保護。
表 1:建議值
值名稱 | 值 (REG_DWORD) |
SynAttackProtect | 2 |
TcpMaxPortsExhausted | 1 |
TcpMaxHalfOpen | 500 |
TcpMaxHalfOpenRetried | 400 |
TcpMaxConnectResponseRetransmissions | 2 |
TcpMaxDataRetransmissions | 2 |
EnablePMTUDiscovery | 0 |
KeepAliveTime | 300000(5 分鐘) |
NoNameReleaseOnDemand | 1 |
二. 抵禦 ICMP 攻擊
這一部分的命名值都位於註冊表項 HK
LM\System\CurrentControlSet\Services\AFD\Parameters 的下面
值: EnableICMPRedirect
建議的數值數據: 0
有效值:0(禁用),1(啟用)
說明:通過將此註冊表值修改為 0,能夠在收到 ICMP 重定向數據包時禁止創建高成本的主機路由。
使用表 2 中匯總的值可以獲得最大程度的保護:
表 2:建議值
值名稱 | 值 (REG_DWORD) |
EnableICMPRedirect | 0 |
三. 抵禦 SNMP 攻擊
這一部分的命名值位於註冊表項HKLM\System\CurrentControlSet\Services\Tcpip\Parameters 的下面。
值: EnableDeadGWDetect
建議的數值數據: 0
有效值:0(禁用),1(啟用)
說明:禁止攻擊者強制切換到備用網關
使用表 3 中匯總的值可以獲得最大程度的保護:
表 3:建議值
值名稱 | 值 (REG_DWORD) |
EnableDeadGWDetect | 0 |
四. AFD.SYS 保護
下面的註冊表項指定核心模式驅動程式 Afd.sys 的參數。Afd.sys 用於支持 Windows Sockets 應用程式。這一部分的所有註冊表項和值都位於註冊表項 HKLM\System\CurrentControlSet\Services\AFD\Parameters 的下面。這些註冊表項和值是:
值 EnableDynamicBacklog
建議的數值數據: 1
有效值:0(禁用),1(啟用)
說明:指定 AFD.SYS 功能,以有效處理大量的 SYN_RCVD 連線。有關詳細信息,請參閱“Internet Server Unavailable Because of Malicious SYN Attacks”,
值名稱: MinimumDynamicBacklog
建議的數值數據: 20
有效值: 0 – 4294967295
說明:指定在偵聽的終結點上所允許的最小空閒連線數。如果空閒連線的數目低於該值,執行緒將被排隊,以創建更多的空閒連線
值名稱:MaximumDynamicBacklog
建議的數值數據: 20000
有效值: 0 – 4294967295
說明:指定空閒連線以及處於 SYN_RCVD 狀態的連線的最大總數。
值名稱: DynamicBacklogGrowthDelta
建議的數值數據: 10
有效值: 0 – 4294967295
默認情況下是否出現:否
說明:指定在需要增加連線時將要創建的空閒連線數。
使用表 4 中匯總的
值可以獲得最大程度的保護。
表 4:建議值
值名稱 | 值 (REG_DWORD) |
EnableDynamicBacklog | 1 |
MinimumDynamicBacklog | 20 |
MaximumDynamicBacklog | 20000 |
DynamicBacklogGrowthDelta | 10 |
其他保護
這一部分的所有註冊表項和值都位於註冊表項HKLM\System\CurrentControlSet\Services\Tcpip\Parameters 的下面。
保護禁止的網路細節
網路地址轉換 (NAT) 用於將網路與傳入連線禁止開來。攻擊者可能規避此禁止,以便使用 IP 源路由來確定網路拓撲。
值: DisableIPSourceRouting
建議的數值數據: 1
有效值:0(轉發所有數據包),1(不轉發源路由數據包),2(丟棄所有傳入的源路由數據包)。
說明:禁用 IP 源路由,後者允許傳送者確認數據報在網路中應採用的路由。
避免接受數據包片段
處理數據包片段可以是高成本的。雖然拒絕服務很少來自外圍網路內,但此設定能防止處理數據包片段。
值: EnableFragmentChecking
建議的數值數據: 1
有效值:0(禁用),1(啟用)
說明:禁止 IP 堆疊接受數據包片段。
切勿轉發去往多台主機的數據包
多播數據包可能被多台主機回響,從而導致回響淹沒網路。
值: EnableMulticastForwarding
建議的數值數據: 0
有效範圍:0 (false),1 (true)
說明:路由服務使用此參數來控制是否轉發 IP 多播。此參數由路由和遠程訪問服務創建。
只有防火牆可以在網路間轉發數據包
多主機伺服器切勿在它所連線的網路之間轉發數據包。明顯的例外是防火牆。
值: IPEnableRouter
建議的數值數據: 0
有效範圍:0 (false),1 (true)
說明:將此參數設定為 1 (true) 會使系統在它所連線的網路之間路由 IP 數據包。
禁止網路拓撲結構細節
可以使用 ICMP 數據包請求主機的子網掩碼。只泄漏此信息是無害的;但是,可以利用多台主機的回響來了解內部網路的情況。
值: EnableAddrMaskReply
建議的數值數據: 0
有效範圍:0 (false),1 (true)
說明:此參數控制計算機是否回響 ICMP 地址禁止請求。
使用表 5 中匯總的值可以獲得最大程度的保護。
表 5:建議值
值名稱 | 值 (REG_DWORD) |
DisableIPSourceRouting | 1 |
EnableFragmentChecking | 1 |
EnableMulticastForwarding | 0 |
IPEnableRouter | 0 |
EnableAddrMaskReply | 0 |
缺陷
在測試這些值的變化時,請參照在產品中所期望的網路流量進行測試。這些設定會修改被認為正常並偏離了測試默認值的項目的閾值。一些閾值可能由於範圍太小而無法在客戶端的連線速度劇烈變化時可靠地支持客戶端。
攻擊原理
拒絕服務攻擊即攻擊者想辦法讓目標機器停止提供服務或資源訪問。這些資源包括磁碟空間、記憶體、進程甚至網路頻寬,從而阻止正常用戶的訪問。其實對網路頻寬進行的消耗性攻擊只是拒絕服務攻擊的一小部分,只要能夠對目標造成麻煩,使某些服務被暫停甚至主機當機,都屬於拒絕服務攻擊。拒絕服務攻擊問題也一直得不到合理的解決,究其原因是因為這是由於網路協定本身的安全缺陷造成的,從而拒絕服務攻擊也成為了攻擊者的終極手法。攻擊者進行拒絕服務攻擊,實際上讓伺服器實現兩種效果:一是迫使伺服器的緩衝區滿,不接收新的請求;二是使用IP欺騙,迫使伺服器把合法用戶的連線復位,影響合法用戶的連線。
DDOS(分散式拒絕服務):凡是能導致合法用戶不能夠訪問正常網路服務的行為都算是拒絕服務攻擊。 也就是說拒絕服務攻擊的目的非常明確,就是要阻止合法用戶對正常網路資源的訪問,從而達成攻擊者不可告人的目的。
雖然同樣是拒絕服務攻擊,但是DDOS 和DOS 還是有所不同,DDOS的攻擊策略側重於通過很多“殭屍主機”(被攻擊者入侵過或可間接利用的主機)向受害主機傳送大量看似合法的網路包, 從而造成網路阻塞或伺服器資源耗盡而導致拒絕服務, 分散式拒絕服務攻擊一旦被實施, 攻擊網路包就會猶如洪水般湧向受害主機, 從而把合法用戶的網路包淹沒, 導致合法用戶無法正常訪問伺服器的網路資源, 因此, 拒絕服務攻擊又被稱之為 “洪水式攻擊” ,常見的 DDOS 攻擊手段有 SYN Flood、ACK Flood、UDP Flood、ICMP Flood、TCP Flood、Connections Flood、Script Flood、Proxy Flood 等;而 DOS 則側重於通過對主機特定漏洞的利用攻擊導致網路棧失效、系統崩潰、 主機當機而無法提供正常的網路服務功能, 從而造成拒絕服務, 常見的 DOS 攻擊手段有 T earDrop、 Land、 Jolt、 IGMP Nuker、 Boink、 Smurf、 Bonk、OOB 等。就這兩種拒絕服務攻擊而言,危害較大的主要是 DDOS 攻擊,原因是很難防範,至於 DOS 攻擊,通過給主機伺服器打補丁或安裝防火牆軟體就可以很好地防範DDOS 的表現形式主要有兩種,一種為流量攻擊,主要是針對網路頻寬的攻擊,即大量攻擊包導致網路頻寬被阻塞, 合法網路包被虛假的攻擊包淹沒而無法到達主機; 另一種為資源耗盡攻擊,主要是針對伺服器主機的攻擊,即通過大量攻擊包導致主機的記憶體被耗盡或CPU 被核心及應用程式占完,造成的無法提供網路服務。
如何判斷網站是否遭受了流量攻擊可通過 Ping 命令來測試,若發現 Ping 逾時或丟包嚴重(假定平時是正常的),則可能遭受了流量攻擊,此時若發現和你的主機接在同一交換機上的伺服器也訪問不了, 基本可以確定是遭受了流量攻擊。 當然, 這樣測試的前提是你到伺服器主機之間的 ICMP 協定沒有被路由器和防火牆等設備禁止, 否則可採取 T elnet 主機伺服器的網路服務連線埠來測試,效果是一樣的。不過有一點可以肯定,假如平時 Ping 你的主機伺服器和接在同一交換機上的主機伺服器都是正常的,突然都 Ping 不通了或者是嚴重丟包,那么假如可以排除網路故障因素的話則肯定是遭受了流量攻擊,再一個流量攻擊的典型現象是,一旦遭受流量攻擊,會發現用遠程終端連線網站伺服器會失敗。
相對於流量攻擊而言, 資源耗盡攻擊要容易判斷一些, 假如平時 Ping 網站主機和訪問網站都是正常的,發現突然網站訪問非常緩慢或無法訪問了,而 Ping 還可以 Ping 通,則很可能遭受了資源耗盡攻擊 ,此時若在伺服器上用Nistat -na命令觀察到有大量的SYN_RECEIVED、TIME_W AIT、FIN_W AIT_1 等狀態存在,而EST BLISHED 很少,則可判定肯定是遭受了資源耗盡攻擊。還有一種屬於資源耗盡攻擊的現象是,Ping自己的網站主機 Ping 不通或者是丟包嚴重,而 Ping 與自己的主機在同一交換機上的伺服器則正常,造成這種原因是網站主機遭受攻擊後導致系統核心或某些應用程式 CPU 利用率達到 100%無法回應 Ping 命令,其實頻寬還是有的,否則就 Ping 不通接在同一交換機上的主機了。
攻擊手段
當前主要有三種流行的 DDOS:
SYN/ACK Flood 攻擊
這種攻擊方法是經典最有效的 DDOS 方法, 可通殺各種系統的網路服務, 主要是通過向
受害主機傳送大量偽造源 IP 和源連線埠的 SYN 或ACK包,導致主機的快取資源被耗盡或忙
於傳送回應包而造成拒絕服務, 由於源都是偽造的故追蹤起來比較困難, 缺點是實施起來有
一定難度, 需要高頻寬的殭屍主機支持。 少量的這種攻擊會導致主機伺服器無法訪問, 但卻
可以 Ping 的通, 在伺服器上用 Netstat -na 命令會觀察到存在大量的 SYN_RECEIVED 狀態,
大量的這種攻擊會導致 Ping 失敗、TCP/IP 棧失效,並會出現系統凝固現象,即不回響鍵盤
和滑鼠。普通防火牆大多無法抵禦此種攻擊。
TCP 全連線攻擊
這種攻擊是為了繞過常規防火牆的檢查而設計的,一般情況下,常規防火牆大多具備過
濾 T earDrop、Land 等 DOS 攻擊的能力,但對於正常的 TCP 連線是放過的,殊不知很多網
絡服務程式(如:IIS、Apache 等 W eb 伺服器)能接受的 TCP 連線數是有限的,一旦有大
量的 TCP 連線,即便是正常的,也會導致網站訪問非常緩慢甚至無法訪問,TCP 全連線攻
擊就是通過許多殭屍主機不斷地與受害伺服器建立大量的 TCP連線,直到伺服器的記憶體等
資源被耗盡而被拖跨, 從而造成拒絕服務, 這種攻擊的特點是可繞過一般防火牆的防護而達
到攻擊目的,缺點是需要找很多殭屍主機,並且由於殭屍主機的 IP 是暴露的,因此容易被
追蹤。
刷 Script 腳本攻擊
這種攻擊主要是針對存在 ASP、JSP、PHP、CGI 等腳本程式,並調用 MSSQLServer、
MySQLServer、Oracle 等資料庫的網站系統而設計的,特徵是和伺服器建立正常的 TCP 連
接, 並不斷的向腳本程式提交查詢、 列表等大量耗費資料庫資源的調用, 一般來說, 提交一
個 GET 或 POST 指令對客戶端的耗費和頻寬的占用是幾乎可以忽略的,而伺服器為處理此
請求卻可能要從上萬條記錄中去查出某個記錄, 這種處理過程對資源的耗費是很大的, 常見
的資料庫伺服器很少能支持數百個查詢指令同時執行,而這對於客戶端來說卻是輕而易舉
的, 因此攻擊者只需通過 Proxy 代理向主機伺服器大量遞交查詢指令, 只需數分鐘就會把服
務器資源消耗掉而導致拒絕服務,常見的現象就是網站慢如蝸牛、ASP 程式失效、PHP 連
接資料庫失敗、資料庫主程式占用 CPU 偏高。這種攻擊的特點是可以完全繞過普通的防火
牆防護, 輕鬆找一些 Proxy 代理就可實施攻擊, 缺點是對付只有靜態頁面的網站效果會大打
折扣,並且有些 Proxy 會暴露攻擊者的 IP 地址。
怎么抵禦 DDOS僅僅依靠某種系統或產品防住 DDOS 是不現實的, 可以肯定的是, 完全杜絕 DDOS
是不可能的,但通過適當的措施抵禦 90%的 DDOS 攻擊是可以做到的,基於攻擊和防禦都
有成本開銷的緣故,若通過適當的辦法增強了抵禦 DDOS 的能力,也就意味著加大了攻擊
者的攻擊成本,那么絕大多數攻擊者將無法繼續下去而放棄,也就相當於成功的抵禦了
DDOS 攻擊。
防禦基礎
總體來說,對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%屬於惡意行為。