拒絕服務攻擊即攻擊者想辦法讓目標機器停止提供服務或資源訪問,是駭客常用的攻擊手段之一。這些資源包括磁碟空間、記憶體、程序甚至網路頻寬,從而阻止正常使用者的訪問。其實對網路頻寬進行的消耗性攻擊只是拒絕服務攻擊的一小部分,只要能夠對目標造成麻煩,使某些服務被暫停甚至主機宕機,都屬於拒絕服務攻擊。拒絕服務攻擊問題也一直得不到合理的解決,究其原因是因為這是由於網路協議本身的安全缺陷造成的,從而拒絕服務攻擊也成為了攻擊者的終極手法。攻擊者進行拒絕服務攻擊,實際上讓伺服器實現兩種效果:一是迫使伺服器的緩衝區滿,不接收新的請求;二是使用IP欺騙,迫使伺服器把合法使用者的連線復位,影響合法使用者的連線。拒絕服務攻擊的原理1.SYN FooldSYN Flood是當前最流行的DoS(拒絕服務攻擊)與DDoS(Distributed Denial Of Service分散式拒絕服務攻擊)的方式之一,這是一種利用TCP協議缺陷,傳送大量偽造的TCP連線請求,使被攻擊方資源耗盡(CPU滿負荷或記憶體不足)的攻擊方式。 SYN Flood攻擊的過程在TCP協議中被稱為三次握手(Three-way Handshake),而SYN Flood拒絕服務攻擊就是透過三次握手而實現的。(1) 攻擊者向被攻擊伺服器傳送一個包含SYN標誌的TCP報文,SYN(Synchronize)即同步報文。同步報文會指明客戶端使用的埠以及TCP連線的初始序號。這時同被攻擊伺服器建立了第一次握手。(2) 受害伺服器在收到攻擊者的SYN報文後,將返回一個SYN+ACK的報文,表示攻擊者的請求被接受,同時TCP序號被加一,ACK(Acknowledgment)即確認,這樣就同被攻擊伺服器建立了第二次握手。(3) 攻擊者也返回一個確認報文ACK給受害伺服器,同樣TCP序列號被加一,到此一個TCP連線完成,三次握手完成。具體原理是:TCP連線的三次握手中,假設一個使用者向伺服器傳送了SYN報文後突然宕機或掉線,那麼伺服器在發出SYN+ACK應答報文後是無法收到客戶端的ACK報文的(第三次握手無法完成),這種情況下伺服器端一般會重試(再次傳送SYN+ACK給客戶端)並等待一段時間後丟棄這個未完成的連線。這段時間的長度我們稱為SYN Timeout,一般來說這個時間是分鐘的數量級(大約為30秒~2分鐘);一個使用者出現異常導致伺服器的一個執行緒等待1分鐘並不是什麼很大的問題,但如果有一個惡意的攻擊者大量模擬這種情況(偽造IP地址),伺服器端將為了維護一個非常大的半連線列表而消耗非常多的資源。即使是簡單的儲存並遍歷也會消耗非常多的CPU時間和記憶體,何況還要不斷對這個列表中的IP進行SYN+ACK的重試。實際上如果伺服器的TCP/IP棧不夠強大,最後的結果往往是堆疊溢位崩潰—— 即使伺服器端的系統足夠強大,伺服器端也將忙於處理攻擊者偽造的TCP連線請求而無暇理睬客戶的正常請求(畢竟客戶端的正常請求比率非常之小),此時從正常客戶的角度看來,伺服器失去響應,這種情況就稱作:伺服器端受到了SYN Flood攻擊(SYN洪水攻擊)。 2.IP欺騙DOS攻擊 這種攻擊利用RST位來實現。假設現在有一個合法使用者(61.61.61.61)已經同伺服器建立了正常的連線,攻擊者構造攻擊的TCP資料,偽裝自己的IP為61.61.61.61,並向伺服器傳送一個帶有RST位的TCP資料段。伺服器接收到這樣的資料後,認為從61.61.61.61傳送的連線有錯誤,就會清空緩衝區中建立好的連線。這時,如果合法使用者61.61.61.61再發送合法資料,伺服器就已經沒有這樣的連線了,該使用者就必須從新開始建立連線。攻擊時,攻擊者會偽造大量的IP地址,向目標傳送RST資料,使伺服器不對合法使用者服務,從而實現了對受害伺服器的拒絕服務攻擊。
拒絕服務攻擊即攻擊者想辦法讓目標機器停止提供服務或資源訪問,是駭客常用的攻擊手段之一。這些資源包括磁碟空間、記憶體、程序甚至網路頻寬,從而阻止正常使用者的訪問。其實對網路頻寬進行的消耗性攻擊只是拒絕服務攻擊的一小部分,只要能夠對目標造成麻煩,使某些服務被暫停甚至主機宕機,都屬於拒絕服務攻擊。拒絕服務攻擊問題也一直得不到合理的解決,究其原因是因為這是由於網路協議本身的安全缺陷造成的,從而拒絕服務攻擊也成為了攻擊者的終極手法。攻擊者進行拒絕服務攻擊,實際上讓伺服器實現兩種效果:一是迫使伺服器的緩衝區滿,不接收新的請求;二是使用IP欺騙,迫使伺服器把合法使用者的連線復位,影響合法使用者的連線。拒絕服務攻擊的原理1.SYN FooldSYN Flood是當前最流行的DoS(拒絕服務攻擊)與DDoS(Distributed Denial Of Service分散式拒絕服務攻擊)的方式之一,這是一種利用TCP協議缺陷,傳送大量偽造的TCP連線請求,使被攻擊方資源耗盡(CPU滿負荷或記憶體不足)的攻擊方式。 SYN Flood攻擊的過程在TCP協議中被稱為三次握手(Three-way Handshake),而SYN Flood拒絕服務攻擊就是透過三次握手而實現的。(1) 攻擊者向被攻擊伺服器傳送一個包含SYN標誌的TCP報文,SYN(Synchronize)即同步報文。同步報文會指明客戶端使用的埠以及TCP連線的初始序號。這時同被攻擊伺服器建立了第一次握手。(2) 受害伺服器在收到攻擊者的SYN報文後,將返回一個SYN+ACK的報文,表示攻擊者的請求被接受,同時TCP序號被加一,ACK(Acknowledgment)即確認,這樣就同被攻擊伺服器建立了第二次握手。(3) 攻擊者也返回一個確認報文ACK給受害伺服器,同樣TCP序列號被加一,到此一個TCP連線完成,三次握手完成。具體原理是:TCP連線的三次握手中,假設一個使用者向伺服器傳送了SYN報文後突然宕機或掉線,那麼伺服器在發出SYN+ACK應答報文後是無法收到客戶端的ACK報文的(第三次握手無法完成),這種情況下伺服器端一般會重試(再次傳送SYN+ACK給客戶端)並等待一段時間後丟棄這個未完成的連線。這段時間的長度我們稱為SYN Timeout,一般來說這個時間是分鐘的數量級(大約為30秒~2分鐘);一個使用者出現異常導致伺服器的一個執行緒等待1分鐘並不是什麼很大的問題,但如果有一個惡意的攻擊者大量模擬這種情況(偽造IP地址),伺服器端將為了維護一個非常大的半連線列表而消耗非常多的資源。即使是簡單的儲存並遍歷也會消耗非常多的CPU時間和記憶體,何況還要不斷對這個列表中的IP進行SYN+ACK的重試。實際上如果伺服器的TCP/IP棧不夠強大,最後的結果往往是堆疊溢位崩潰—— 即使伺服器端的系統足夠強大,伺服器端也將忙於處理攻擊者偽造的TCP連線請求而無暇理睬客戶的正常請求(畢竟客戶端的正常請求比率非常之小),此時從正常客戶的角度看來,伺服器失去響應,這種情況就稱作:伺服器端受到了SYN Flood攻擊(SYN洪水攻擊)。 2.IP欺騙DOS攻擊 這種攻擊利用RST位來實現。假設現在有一個合法使用者(61.61.61.61)已經同伺服器建立了正常的連線,攻擊者構造攻擊的TCP資料,偽裝自己的IP為61.61.61.61,並向伺服器傳送一個帶有RST位的TCP資料段。伺服器接收到這樣的資料後,認為從61.61.61.61傳送的連線有錯誤,就會清空緩衝區中建立好的連線。這時,如果合法使用者61.61.61.61再發送合法資料,伺服器就已經沒有這樣的連線了,該使用者就必須從新開始建立連線。攻擊時,攻擊者會偽造大量的IP地址,向目標傳送RST資料,使伺服器不對合法使用者服務,從而實現了對受害伺服器的拒絕服務攻擊。