1樓:有點無聊
拒絕服務攻擊(denial of service,dos)是目前比較有效而又非常難於防禦的一種網路攻擊方式,它的目的就是使伺服器不能夠為正常訪問的使用者提供服務。所以,dos對一些緊密依靠網際網路開展業務的企業和組織帶來了致命的威脅。
syn flood是最為有效和流行的一種dos攻擊形式。它利用tcp三次握手協議的缺陷,向目標主機傳送大量的偽造源地址的syn連線請求,消耗目標主機的資源,從而不能夠為正常使用者提供服務。
1.1 tcp連線建立的過程
要掌握syn flood攻擊的基本原理,必須先介紹tcp的三次握手機制。
tcp三次握手過程如下:
1)客戶端向伺服器端傳送一個syn置位的tcp報文,包含客戶端使用的埠號和初始序列號x;
2)伺服器端收到客戶端傳送來的syn報文後,向客戶端傳送一個syn和ack都置位的tcp報文,包含確認號為x+1和伺服器的初始序列號y;
3)tcp客戶端
客戶端埠
(1024-65535)
tcp伺服器端
伺服器埠
(1-1023)
synsyn/ack
ack客戶端收到伺服器返回的syn+ack報文後,向伺服器返回一個確認號為y+1序號為x+1的ack報文,一個標準的tcp連線完成。如圖1所示:
1.2 攻擊原理
在syn flood攻擊中,黑客機器向受害主機傳送大量偽造源地址的tcp syn報文,受害主機分配必要的資源,然後向源地址返回syn+ack包,並等待源端返回ack包,如圖2所示。由於源地址是偽造的,所以源端永遠都不會返回ack報文,受害主機繼續傳送syn+ack包,並將半連線放入埠的積壓佇列中,雖然一般的主機都有超時機制和預設的重傳次數,但是由於埠的半連線佇列的長度是有限的,如果不斷的向受害主機傳送大量的tcp syn報文,半連線佇列就會很快填滿,伺服器拒絕新的連線,將導致該埠無法響應其他機器進行的連線請求,最終使受害主機的資源耗盡。
tcp客戶端
客戶端埠
(1024-65535)
tcp伺服器端
伺服器埠
(1-1023)
synsyn/ack
偽造源地址
2 幾種防禦技術
syn flood攻擊給網際網路造成重大影響後,針對如何防禦syn flood攻擊出現了幾種比較有效的技術。
2.1 syn-cookie技術
一般情況下,當伺服器收到一個tcp syn報文後,馬上為該連線請求分配緩衝區,然後返回一個syn+ack報文,這時形成一個半連線。syn flood正是利用了這一點,傳送大量的偽造源地址的syn連線請求,而不完成連線。這樣就大量的消耗的伺服器的資源。
syn-cookie技術針對標準tcp連線建立過程資源分配上的這一缺陷,改變了資源分配的策略。當伺服器收到一個syn報文後,不立即分配緩衝區,而是利用連線的資訊生成一個cookie,並將這個cookie作為將要返回的syn+ack報文的初始序列號。當客戶端返回一個ack報文時,根據包頭資訊計算cookie,與返回的確認序列號(初始的序列號+1)的前24位進行對比,如果相同,則是一個正常連線,然後,分配資源,建立連線。
該技術的巧妙之點在於避免了在連線資訊未完全到達前進行資源分配,使syn flood攻擊的資源消耗失效。實現的關鍵之處在於cookie的計算。cookie的計算應該做到包含本次連線的狀態資訊,使攻擊者不能偽造cookie。
cookie的計算過程如下:
1)伺服器收到一個syn包後,計算一個訊息摘要mac:
mac = mac(a,k);
mac是密碼學中的一個訊息認證碼函式,也就是滿足某種安全性質的帶金鑰的hash函式,它能夠提供cookie計算中需要的安全性。
a為客戶和伺服器雙方的ip地址和埠號以及引數t的串聯組合:
a = source_ip || source_port || dst_ip || dst_port || t
k為伺服器獨有的金鑰;
時間引數t為32位元長的時間計數器,每64秒加1;
2)生成cookie:
cookie = mac(0:24):表示取mac值的第0到24位元位;
3)設定將要返回的syn+ack報文的初始序列號,設定過程如下:
i. 高24位用cookie代替;
ii. 接下來的3位元位用客戶要求的最大報文長度mms代替;
iii. 最後5位元位為t mod 32。
客戶端收到來自伺服器syn+ack報文後,返回一個ack報文,這個ack報文將帶一個cookie(確認號為伺服器傳送過來的syn ack報文的初始序列號加1,所以不影響高24位),在伺服器端重新計算cookie,與確認號的前24位比較,如果相同,則說明未被修改,連線合法,然後,伺服器完成連線的建立過程。
syn-cookie技術由於在連線建立過程中不需要在伺服器端儲存任何資訊,實現了無狀態的三次握手,從而有效的防禦了syn flood攻擊。但是該方法也存在一些弱點。由於cookie的計算只涉及了包頭的部分信心,在連線建立過程中不在伺服器端儲存任何資訊,所以失去了協議的許多功能,比如,超時重傳。
此外,由於計算cookie有一定的運算量,增加了連線建立的延遲時間,因此,syn-cookie技術不能作為高效能伺服器的防禦手段。通常採用動態資源分配機制,當分配了一定的資源後再採用cookie技術,linux就是這樣實現的。還有一個問題是,當我們避免了syn flood攻擊的同時,同時也提供了另一種拒絕服務攻擊方式,攻擊者傳送大量的ack報文,使伺服器忙於計算驗證。
儘管如此,在預防syn flood攻擊方面,syn-cookie技術仍然是一種有效的技術。
2.2 地址狀態監控的解決方法
地址狀態監控的解決方法是利用監控工具對網路中的有關tcp連線的資料包進行監控,並對監聽到的資料包進行處理。處理的主要依據是連線請求的源地址。
每個源地址都有一個狀態與之對應,總共有四種狀態:
初態:任何源地址剛開始的狀態;
new狀態:第一次出現或出現多次也不能斷定存在的源地址的狀態;
good狀態:斷定存在的源地址所處的狀態;
bad狀態:源地址不存在或不可達時所處的狀態。
具體的動作和狀態轉換根據tcp頭中的位碼值決定:
1)監聽到syn包,如果源地址是第一次出現,則置該源地址的狀態為new狀態;如果是new狀態或bad狀態;則將該包的rst位置1然後重新發出去,如果是good狀態不作任何處理。
2)監聽到ack或rst包,如果源地址的狀態為new狀態,則轉為good狀態;如果是good狀態則不變;如果是bad狀態則轉為new狀態;如果是bad狀態則轉為new狀態。
3)監聽到從伺服器來的syn ack報文(目的地址為addr),表明伺服器已經為從addr發來的連線請求建立了一個半連線,為防止建立的半連線過多,向伺服器傳送一個ack包,建立連線,同時,開始計時,如果超時,還未收到ack報文,證明addr不可達,如果此時addr的狀態為good則轉為new狀態;如果addr的狀態為new狀態則轉為bad狀態;如果為addr的狀態為bad狀態則不變。
狀態的轉換圖如圖3所示:
初態good
newbad
ack/rst
synack/rst
ack包確認超時
ack/rst
ack包確認超時
下面分析一下基於地址狀態監控的方法如何能夠防禦syn flood攻擊。
1)對於一個偽造源地址的syn報文,若源地址第一次出現,則源地址的狀態為new狀態,當監聽到伺服器的syn+ack報文,表明伺服器已經為該源地址的連線請求建立了半連線。此時,監控程式代源地址傳送一個ack報文完成連線。這樣,半連線佇列中的半連線數不是很多。
計時器開始計時,由於源地址是偽造的,所以不會收到ack報文,超時後,監控程式傳送rst資料包,伺服器釋放該連線,該源地址的狀態轉為bad狀態。之後,對於每一個來自該源地址的syn報文,監控程式都會主動傳送一個rst報文。
2)對於一個合法的syn報文,若源地址第一次出現,則源地址的狀態為new狀態,伺服器響應請求,傳送syn+ack報文,監控程式傳送ack報文,連線建立完畢。之後,來自客戶端的ack很快會到達,該源地址的狀態轉為good狀態。伺服器可以很好的處理重複到達的ack包。
從以上分析可以看出,基於監控的方法可以很好的防禦syn flood攻擊,而不影響正常使用者的連線。
3 小結
本文介紹了syn flood攻擊的基本原理,然後詳細描述了兩種比較有效和方便實施的防禦方法:syn-cookie技術和基於監控的源地址狀態技術。syn-cookie技術實現了無狀態的握手,避免了syn flood的資源消耗。
基於監控的源地址狀態技術能夠對每一個連線伺服器的ip地址的狀態進行監控,主動採取措施避免syn flood攻擊的影響。這兩種技術是目前所有的防禦syn flood攻擊的最為成熟和可行的技術。
2樓:匿名使用者
1.要麼還個機房,還個硬防高點的機房
2.要麼在開個伺服器,放到一個硬防高點的機房,然後兩個伺服器繫結到一起。
我的伺服器一直被攻擊伺服器被攻擊怎麼解決
3樓:**安全伺服器安全
具體是什麼症狀呢 是流量攻擊還是cc攻擊 如果是這兩種的話 建議聯絡機房開啟硬防 或使用 高防cdn來處理
如果是伺服器被入侵被篡改的話 建議找專業做安全的來處理。
怎麼防止伺服器遭受黑客攻擊,伺服器受到黑客攻擊怎麼辦?
許曉萱 隨著資訊化的快速發展,各企事業的伺服器都很脆弱,即使裝了防毒軟體,部署了防火牆,並定時打補丁,但仍然會有各種風險,各種中毒,各種被入侵,核心資料還是會被 被破壞 被篡改 被偷走。推薦使用伺服器資料保護鎖 mck,是通過安全容器接管作業系統,讓應用在容器內執行,資料儲存在容器內,容器內通過映象...
如何防範伺服器被攻擊,伺服器經常被攻擊,如何防範
360安全衛士 伺服器攻擊一般都利用了弱口令漏洞和系統漏洞等方式遠端登入你的伺服器,然後執行勒索病毒或暗藏挖礦病毒等 防範措施 a.高強度密碼 8位以上,採用大寫字母 小寫小寫 數字 符號 舉例 hanl936582 b.不要使用弱口令密碼 顧名思義弱口令就是沒有嚴格和準確的定義,通常認為容易被別人...
伺服器被ddos攻擊了怎麼辦,伺服器被ddos攻擊應該怎麼辦?
資料灣 1.減少公開暴露 對於企業來說,減少公開暴露是防禦 ddos 攻擊的有效方式,對 psn 網路設定安全群組和私有網路,及時關閉不必要的服務等方式,能夠有效防禦網路黑客對於系統的窺探和入侵。具體措施包括禁止對主機的非開放服務的訪問,限制同時開啟的 syn 最大連線數,限制特定 ip 地址的訪問...