DDoS攻击与防御
一、DDOS介紹
要了解DDOS攻擊是什么,首先要了解DOS攻擊的基本原理是至關重要的。
DoS攻擊是最早出現的,它的攻擊方法說白了就是單挑,是比誰的機器性能好、速度快。但是現在的科技飛速發展,一般的網站主機都有十幾臺主機,而且各個主機的處理能力、內存大小和網絡速度都有飛速的發展,有的網絡帶寬甚至超過了千兆級別。這樣我們的一對一單挑式攻擊就沒有什么作用了,搞不好自己的機子就會死掉。舉個這樣的攻擊例子,假如你的機器每秒能夠發送10個攻擊用的數據包,而被你攻擊的機器(性能、網絡帶寬都是頂尖的)每秒能夠接受并處理100攻擊數據包,那樣的話,你的攻擊就什么用處都沒有了,而且非常有死機的可能。要知道,你若是發送這種1Vs1的攻擊,你的機器的CPU占用率是90%以上的,你的機器要是配置不夠高的話,那你就死定了。
不過,科技在發展,黑客的技術也在發展。正所謂道高一尺,魔高一仗。經過無數次當機,黑客們終于又找到一種新的DoS攻擊方法,這就是DDoS攻擊。它的原理說白了就是群毆,用好多的機器對目標機器一起發動DoS攻擊,但這不是很多黑客一起參與的,這種攻擊只是由一名黑客來操作的。這名黑客不是擁有很多機器,他是通過他的機器在網絡上占領很多的“肉雞”,并且控制這些“肉雞”來發動DDoS攻擊,要不然怎么叫做分布式呢。還是剛才的那個例子,你的機器每秒能發送10攻擊數據包,而被攻擊的機器每秒能夠接受100的數據包,這樣你的攻擊肯定不會起作用,而你再用10臺或更多的機器來對被攻擊目標的機器進行攻擊的話,嘿嘿!結果我就不說了。
DDOS(Distributed Denial of Service),中文全稱分布式拒絕服務(大量分布式的攻擊導致服務器不堪重負拒絕服務),就是借助多臺計算機作為平臺來攻擊服務器的一種方式的統稱,DDOS攻擊還包括 CC攻擊、NTP攻擊、SYN攻擊、DNS攻擊等。遭受DDOS攻擊的網站會出現:網站無法訪問、訪問提示“server unavailable”、服務器CPU使用率100%、內存高占用率。
被DDoS攻擊時的現象:
-
被攻擊主機上有大量等待的TCP連接。
-
網絡中充斥著大量的無用的數據包,源地址為假。
-
制造高流量無用數據,造成網絡擁塞,使受害主機無法正常和外界通訊。
-
利用受害主機提供的服務或傳輸協議上的缺陷,反復高速的發出特定的服務請求,使受害主機無法及時處理所有正常請求。
-
嚴重時會造成系統死機。
2、DDoS的類型及原理
DDOS攻擊主要分為三類:流量型攻擊;連接型攻擊;特殊協議缺陷。
2.1 Ip lood
攻擊原理:此攻擊以多個隨機的源主機地址向目的主機發送超大量的隨機或特定的IP包,造成目標主機不能處理其他正常的IP報文。
原理圖:
2.1 Syn Flood
攻擊原理:依據tcp建立連接的三次握手。此攻擊以多個隨機的源主機地址向目的主機發送syn包,而在收到目的主機的syn+ack包后并不回應,目的主機就為這些源主機建立大量的連接隊列,由于沒有收到ack一直維護這些連接隊列,造成資源的大量消耗而不能向正常的請求提供服務。與之類似的攻擊方式還有ackflood、s-ackflood、finflood、rstflood、tcpflood 。
原理圖:
2.3 Udp 反射 Flood
攻擊原理:有時被保護服務器也有同外部服務器進行udp交互的需求,攻擊者就會利用此交互對被保護服務器進行udp反射放大攻擊。此攻擊在短時間那冒充被攻擊地址向外部公用的服務器發送大量的udp請求包,外部服務器收到虛假的udp請求就會回復大量的回應包給被攻擊服務器地址,造成目標主機被保護服務器不能處理其他正常的交互流。
原理圖:
2.4 Dns Query Flood
攻擊原理:通過發起大量的DNS請求,導致DNS服務器無法響應正常用戶的請求,正常用戶不能解析DNS,從而不能獲取服務。
原理圖:
2.5 Dns Reply Flood
攻擊原理:攻擊者通過發起大量偽造的DNS回應包,導致DNS服務器帶寬擁塞無法響應正常用戶的請求,正常用戶不能解析DNS,從而不能獲取服務。
原理圖:
2.6 Http Flood
攻擊原理:此攻擊類型主要攻擊目標為Web服務器上的網頁訪問服務,當發生攻擊時攻擊者向被攻擊服務器大量高頻的發送一個網頁或多個網頁的請求服務,使服務器忙于向攻擊者提供響應資源從而導致不能想正常的合法用戶提供請求響應服務。
2.7 Https Flood
攻擊原理:此攻擊類型主要攻擊目標是使用https協議的Web服務器上的訪問服務,當發生攻擊時攻擊者向被攻擊服務器大量高頻的發送請求服務,使服務器忙于向攻擊者提供https響應資源從而導致不能想正常的合法用戶提供請求響應服務。
2.8 Sip Invite Flood
攻擊原理:Sip協議為網絡視頻電話會議的udp協議,攻擊者通過發起大量的Sip invite請求,導致網絡視頻電話會議Sip服務器無法響應正常用戶的請求報文,占用服務器帶寬使其阻塞,達到SIP報文洪水攻擊的目的。
原理圖:
2.9 Sip Register Flood
攻擊原理:Sip協議為網絡視頻電話會議的udp協議,攻擊者通過發起大量的Sip register注冊信息,導致網絡視頻電話會議Sip服務器無法響應正常用戶的注冊報文信息,占用服務器帶寬使其阻塞,達到SIP注冊報文洪水攻擊的目的。
原理圖:
2.10 Connection Flood
攻擊原理:利用真實 IP 地址(代理服務器、廣告頁面)在服務器上建立大量連接服務器上殘余連接(WAIT狀態)過多,效率降低,甚至資源耗盡,無法響應; 蠕蟲傳播過程中會出現大量源IP地址相同的包,對于 TCP 蠕蟲則表現為大范圍掃描行為; 消耗骨干設備的資源,如防火墻的連接數。
原理圖:
2.11 CC攻擊
攻擊原理:利用代理服務器向受害者發起大量HTTP Get請求;主要請求動態頁面,涉及到數據庫訪問操作;數據庫負載以及數據庫連接池負載極高,無法響應正常請求
原理圖:
2.12 http slow header慢速攻擊
攻擊原理:在http協議中規定,http的頭部以連續的“\r\n\r\n”作為結束標志。許多web服務器在處理http請求的頭部信息時,會等待頭部傳輸結束后再進行處理。因此,如果web服務器沒有接收到連續的“\r\n\r\n”,就會一直接收數據并保持與客戶端的連接。Slow-header的工作原理是攻擊者在發送http get請求時,緩慢的發送無用的header字段,并且一直不發送“\r\n\r\n”結束標志。Web服務器能夠處理的并發連接數是有限的,如果攻擊者利用大量的主機發送這種不完整的http get請求把那個持續占用這些連接,就會耗盡web服務器的資源。
原理圖:
2.13 http slow post慢速攻擊
攻擊原理:在post提交方式中,允許在http的頭中聲明content-length,也就是指定http消息實體的傳輸長度。當web服務器接收到請求頭部中含有content-length字段時,服務器會將該字段的值作為http body的長度,持續接收數據并達到content-length值時對實體的數據內容進行處理。slow post會傳送包括整個header的http請求,在提交了頭以后,將后面的body部分卡住不發送,這時候服務器在接受了post長度以后,在處理數據之前會等待客戶端發送post的內容,攻擊者保持連接并且以10s-100s一個字節的速度去發送,就達到了消耗資源的效果,因此不斷增加這樣的連接會使得服務器的資源被消耗
原理圖:
2.14 Https-ssl-dos攻擊
攻擊原理:在進行SSL數據傳輸之前,通信雙方首先要進行ssl握手,以協商加密算法交換加密密鑰,進行身份認證。通常情況下,這樣的ssl握手過程只需要進行一次即可,但是在ssl協議中有一個renegotiation選項,通過它可以進行密鑰的重新協商以建立新的密鑰。在ssl握手的過程中,服務器會消耗較多的CPU資源來進行加解密,并進行數據的有效性驗證。SSL-dos攻擊方式的本質是消耗服務器的CPU資源,在協商加密算法的時候,服務器CPU的開銷是客戶端的15倍左右。攻擊者在一個TCP連接中不停地快速重新協商,如果建立多個連接,給服務器端造成的壓力會更加明顯,從而達到攻擊目的。
原理圖完整的SSL連接過程:
原理圖
2.15 Dns NX攻擊
攻擊原理:Dns NX攻擊是dns query flood攻擊的一個變種攻擊方式,區別是后者向dns服務器查詢的是一個真實存在的域名,而前者向dns服務器查詢的是一個不存在的域名。在進行dns nx攻擊時,dns服務器會進行多次域名查詢,其獲取不到域名的解析結果時,還會再次進行遞歸查詢,向上一級的dns服務器發送解析請求并等待應答,這進一步增加了dns服務器的資源消耗。同時,dns服務器的緩存會被大量nx domian記錄所填滿,導致響應正常用戶的dns解析請求變慢。
原理圖:
2.16 DNS投毒
攻擊原理:一臺dns服務器只記錄本地資源的所有授權主機,若要查詢的是非本地的主機信息,則向信息持有者(授權dns服務器)發送查詢請求。為了避免每次查詢都發送請求,dns服務器會把授權服務器返回的查詢結果保存在緩存中,并保持一段時間,這就構成了dns緩存。dns緩存投毒攻擊就是通過污染dns cache,用虛假的IP地址信息替換cache中主機記錄的真實IP地址信息來制造破壞。這種類型的攻擊的目的是將依賴于此dns服務器的受害者重定向到其它的地址,例如重定向搜索引擎到廣告網站。這種類型的典型攻擊就是釣魚方式的攻擊,例如將一個銀行的訪問重定向到黑客偽造的網站。
原理圖:
3、DNS的防御
3.1 基本防御
首先,建議企業實施基礎架構的風險分析,這是一個很好的開始。例如,匿名攻擊在對許多企業的攻擊中獲得很大成功,這并不是因為攻擊者的工具如何高級,而是因為他們所攻擊的基礎架構本身就漏洞百出。
其次,禁止任何未用的服務,目的是將開放端口的數量最小化,從而減少攻擊者進入和利用已知漏洞的機會。
第三,為所有的軟件打上補丁,保持所有軟件的最新有助于漏洞數量的最少化。
第四,不要太依賴防火墻。防火墻只能阻止來自某些端口的洪水攻擊,但它卻無法防止基于Web的通信進入。
此外,如果禁用了IP廣播,就可以阻止基于ICMP的攻擊,如死亡之ping攻擊。
這些僅是從大體上保護網絡,抵御一般DDoS攻擊的方法,對于一些高級DDoS攻擊,這些措施遠遠不夠。說到專門的DDoS防御,企業不妨使用IP包過濾技術。
3.2 包過濾
描述過濾這種技術還是很容易的:判斷進入的數據包,看其是來自合法用戶,還是來自攻擊機器,若來自后者,則丟棄。但實際上實施這種方案并非易事。
企業往往建立能夠阻止非法通信的過濾器。但這種做法的困難在于,如何將攻擊包與合法請求區分開來,而且因為攻擊的目的是摧毀正在掃描通信的設備,數據包的數目如此多,從而造成保護網絡的設備無法應對。建議采用阻止假冒IP包的技術,如基于路由器的過濾,它可以跟蹤進入通信的源地址,一旦發現異常,就認為是欺詐而丟棄。事實上,很容易阻止欺詐,如今的高級攻擊不再使用這種伎倆。現在阻止假冒通信僅是一種簡單技術。
3.3 抵制僵尸網絡的攻擊
但新威脅卻更為危險:在受感染的計算機作為僵尸網絡的一部分而協同動作時,數據包的源地址就不再是假冒的了,而是真實的IP地址。
針對僵尸攻擊,有一種更科學的IP過濾方法。這種技術試圖先記住曾經訪問過網站的善意數據包,然后找出惡意數據包,僅準許來自已知源的數據包進入。此時,邊緣路由器參照常用訪問者的IP地址數據庫,如果在通信源中找不到匹配的IP,就丟棄包。
基于歷史記錄的過濾有一個關鍵問題,就是地址數據庫是如何工作的。如果邊緣路由器花費太多的時間才能得到善意地址的列表,而攻擊又正在進行,網絡響應速度就會減少,其造成的效果與攻擊自身又有什么區別呢?
這種過濾還有一個問題:如果攻擊者知道了基于歷史的過濾,為了使僵尸計算機的IP地址合法化,僵尸控制系統很容易在真實攻擊發生之前將僵尸計算機指引到目標網站。這會欺騙過濾系統,使其信任更多的DDoS包,因為攻擊來自“熟悉的”地址。
3.4 虛擬路由器和安全設備
除過濾之外,新的DDoS防御技術還可以使用虛擬路由器和基于設備的系統,以此作為接收通信的基本方式,并應用清潔技術來過濾通信。這種自動化的系統將來勢必成為對付DDoS攻擊的重要防御工具,因為可以對基于云和基于虛擬化的系統進行調整,以滿足海量的通信要求。
根除DDoS之路漫漫而修遠,因為互聯網上有太多不安全的機器正在被“僵尸化”。雖然目前對付DDoS攻擊的防御已經很強大,但其針對性往往太強,而DDoS攻擊采取的是“群起而攻之”的戰術。因而,防御必須依靠綜合治理、協同努力。DDoS是IT管理者時刻需要關注的嚴重威脅。
3.5 其它方法
還有其它兩種技術可用來保護公司網絡。首先,可以增加網絡帶寬,使其可以簡單地“接收”小型DDoS攻擊的通信。其次,準備第二個網絡連接,你可以將它作為災難恢復計劃的一部分,在遭受攻擊期間,仍可以維持互聯網訪問。
3.6 小結
DDoS攻擊正在不斷演化,變得日益強大、隱密,更具針對性且更復雜,它已成為從事電子商務公司的重大威脅。真正有效地對付這種攻擊是一個系統工程,它需要全方位地綜合治理、協同努力,如從法律、技術(不限于IT)、ISP、公司、個人用戶等角度,多管齊下。特別是加強對個人用戶、雇員的教育,養成良好的上網習慣,防止其成為僵尸網絡的幫兇。
總結
- 上一篇: 常用加密算法(Java实现)总结
- 下一篇: 忘记电脑启动密码怎么办电脑密码丢失如何打