天天看點

http慢速攻擊原理和防護方法http慢速攻擊簡介 示例防護手段

http慢速攻擊簡介 

http慢速攻擊是利用Http現有合法機制,在建立了與Http伺服器的連接配接後,盡量長時間保持該連接配接,不釋放,達到對http伺服器的攻擊。

發展到今天,慢速攻擊也多種多樣可分為以下幾種:

slow post:攻擊者通過發送post封包向伺服器請求送出資料,将總封包長度設定為一個很大是數值,但是在随後的資料發送中,每次隻發送很小的白問,這樣導緻伺服器端一直等待攻擊者發送資料。

Slow headers:Web應用在處理HTTP請求之前都要先接收完所有的HTTP頭部,因為HTTP頭部中包含了一些Web應用可能用到的重要的資訊。攻擊者利用這點,發起一個HTTP請求,一直不停的發送HTTP頭部,消耗伺服器的連接配接和記憶體資源。抓包資料可見,攻擊用戶端與伺服器建立TCP連接配接後,每30秒才向伺服器發送一個HTTP頭部,而Web伺服器再沒接收到2個連續的\r\n時,會認為用戶端沒有發送完頭部,而持續的等等用戶端發送資料。

Slow read:用戶端與伺服器建立連接配接并發送了一個HTTP請求,用戶端發送完整的請求給伺服器端,然後一直保持這個連接配接,以很低的速度讀取Response,比如很長一段時間用戶端不讀取任何資料,通過發送Zero Window到伺服器,讓伺服器誤以為用戶端很忙,直到連接配接快逾時前才讀取一個位元組,以消耗伺服器的連接配接和記憶體資源。抓包資料可見,用戶端把資料發給伺服器後,伺服器發送響應時,收到了用戶端的ZeroWindow提示(表示自己沒有緩沖區用于接收資料),伺服器不得不持續的向用戶端發出ZeroWindowProbe包,詢問用戶端是否可以接收資料。

示例

與任何一個開放了HTTP通路的伺服器HTTP伺服器,先建立了一個連接配接,指定一個比較大的content-length,然後以非常低的速度發包。

比如1-10s發一個位元組,然後維持住這個連接配接不斷開。

如果用戶端持續建立這樣的連接配接,那麼伺服器上可用的連接配接将一點一點被占滿,進而導緻拒絕服務。

和CC攻擊一樣,隻要Web伺服器開放了Web服務,那麼它就可以是一個靶子,HTTP協定在接收到request之前是不對請求内容作校驗的,是以即使你的Web應用沒有可用的form表單,這個攻擊一樣有效。

在用戶端以單線程方式建立較大數量的無用連接配接,并保持持續發包的代價非常的低廉。實際試驗中一台普通PC可以建立的連接配接在3000個以上。這對一台普通的Web server,将是緻命的打擊。更不用說結合殭屍電腦群做分布式DoS了。

常見的慢速攻擊工具:Slowhttptest和Slowloris

抓包分析如下:

http慢速攻擊原理和防護方法http慢速攻擊簡介 示例防護手段
http慢速攻擊原理和防護方法http慢速攻擊簡介 示例防護手段
http慢速攻擊原理和防護方法http慢速攻擊簡介 示例防護手段
http慢速攻擊原理和防護方法http慢速攻擊簡介 示例防護手段
http慢速攻擊原理和防護方法http慢速攻擊簡介 示例防護手段

防護手段

真對http慢速攻擊的特點,防護時可對每秒鐘http并發連接配接數進行檢查。

當每秒種http并發連接配接數超過設定值時,會觸發http封包檢查,檢查出一下任意一種情況,都認定受到http慢速連接配接攻擊。

    1.連續多個httppost封包的總長度都很大,但是其http載荷長度都很小。

    2.連續多個httpget/post封包的封包頭都沒有結束辨別。

将該源ip判定為攻擊源加入黑名單,同時斷開此ip位址與http伺服器的連接配接。

對web伺服器的http頭部傳輸的最大許可時間進行限制,修改成最大許可時間為20秒。

統計每個TCP連接配接的時長并計算機關時間内通過的封包數量即可做精确識别。一個TCP連接配接中,HTTP封包太少和封包太多都是不正常的,過少可能是慢速連接配接攻擊。

過多可能是使用HTTP 1.1協定進行deHTTP Flood攻擊,在一個TCP連接配接中發送多個HTTP請求。

周期内統計封包數量。一個TCP連接配接,HTTP請求的封包中,封包過多或者封包過少都是有問題的,如果一個周期内封包數量非常少,那麼它就可能是慢速攻擊;如果一個周期内封包數量非常多,那麼它就可能是一個CC攻擊。

限制HTTP請求頭的最大許可時間。超過最大許可時間,如果資料還沒有傳輸完成,那麼它就有可能是一個慢速攻擊。

繼續閱讀