Linux網路編程--洪水攻擊詳解,linux網路編程
洪水攻擊詳解
①註解:洪水攻擊(FLOOD ATTACK)是指利用電腦網路技術向目標主機發送大量無用的資料報文,使得目標主機忙於處理無用的資料報文而無法提供正常服務的網路行為。
主要原理:利用了網路通訊協定中安全機制或者直接用十分簡單的ping資源的方法來對主機造成影響。
攻擊手段:使用畸形報文讓目標機處於處理或者等待,使用原始通訊端進行程式設計。
分類:
ICMP回顯攻擊,利用原始通訊端發送大量回應要求或者回顯響應的資料,由於此資料協議棧預設是必須處理的,因此有影響
UDP,向目標主機UDP連接埠發送UDP報文,由於目標機需要對連接埠進行處理
SYN,利用TCP串連中三向交握,在發送一個SYN原始報文後,目標需要對發送的報文進行處理並等待逾時
洪水攻擊
ICMP洪水攻擊
原理:在ping基礎上形成
分類:
直接洪水攻擊:主機與目標的頻寬比拼,用效能砸死他。缺點:目標機可以根據源ip,屏蔽攻擊源,甚至可能被反向攻擊。
偽裝ip攻擊:將發送方ip用偽裝ip代替,將直接洪水攻擊改進
反射攻擊:並非自身攻擊,而是利用偽裝ip,讓其他主機誤認為目標機在向其發送ICMP請求,結果:目標主機需要對所有請求進行ICMP應答發送
UDP洪水攻擊UDPFlood防護
UDP協議與TCP協議不同,是無串連狀態的協議,並且UDP應用協議五花八門,差異極大,因此針對UDPFlood的防護非常困難。其防護要根據具體情況對待:
判斷包大小,如果是大包攻擊則使用防止UDP片段方法:根據攻擊包大小設定包片段重組大小,通常不小於1500。在極端情況下,可以考慮丟棄所有UDP片段。
攻擊連接埠為業務連接埠:根據該業務UDP最大包長設定UDP最大包大小以過濾異常流量。
攻擊連接埠為非業務連接埠:一個是丟棄所有UDP包,可能會誤傷正常業務;一個是建立UDP串連規則,要求所有去往該連接埠的UDP包,必須首先與TCP連接埠建立TCP串連。不過這種方法需要很專業的防火牆或其他防護裝置支援
SYN洪水攻擊
簡介:又稱拒絕服務的攻擊。是一種廣為人知的DoS(拒絕服務的攻擊)與DDoS(分散式阻斷服務攻擊)的方式之一,這是一種利用TCP協議缺陷,發送大量偽造的TCP串連請求,從而使得被攻擊方資源耗盡(CPU滿負荷或記憶體不足)的攻擊方式。
原理剖析:
TCP三向交握:
在TCP/IP協議中,TCP協議提供可靠的串連服務,採用三向交握建立一個串連。
第一次握手:建立串連時,用戶端發送syn包(syn=j)到伺服器,並進入SYN_SEND狀態,等待伺服器確認;
第二次握手:伺服器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時伺服器進入SYN_RECV狀態; 第三向交握:用戶端收到伺服器的SYN+ACK包,向伺服器發送確認包ACK(ack=k+1),此包發送完畢,用戶端和伺服器進入ESTABLISHED狀態,完成三向交握。 完成三向交握,用戶端與伺服器開始傳送資料.
攻擊手段:
主機A發送ICMP的SYN請求給主機B,主機A發送的報文源地址為偽造IP。主機B的第二次握手之後需要等待時間來接受A的確認包,在逾時時間內會一直佔用資源。如果B處理三向交握的資源不能滿足A發送數量,那麼B就會資源殆盡。主機A發送的是原始報文,發送速度應當是足夠高的,對B必然產生影響。
防護措施:
①縮短SYNtimeout逾時時間。也就是第二次握手到第三向交握之間的等待時間。
②為每一個請求ip設定cookie,如果連續時間內收到某個ip請求,那麼認為是攻擊,從而攔截