研究 緩慢的http拒絕服務攻擊

2022-03-18 18:07:52 字數 2935 閱讀 3224

緩慢的http拒絕服務攻擊是一種專門針對於web的應用層拒絕服務攻擊,攻擊者操縱網路上的肉雞,對目標web伺服器進行海量http request攻擊,直到伺服器頻寬被打滿,造成了拒絕服務。

慢速http拒絕服務攻擊經過不斷的演變和發展,主要有三種攻擊型別,分別是slow headers、slow body、slow read。以slow headers為例,web應用在處理http請求之前都要先接收完所有的http頭部,因為http頭部中包含了一些web應用可能用到的重要的資訊。攻擊者利用這點,發起乙個http請求,一直不停的傳送http頭部,消耗伺服器的連線和記憶體資源。抓包資料可見,攻擊客戶端與伺服器建立tcp連線後,每40秒才向伺服器傳送乙個http頭部,而web伺服器再沒接收到2個連續的\r\n時,會認為客戶端沒有傳送完頭部,而持續的等等客戶端傳送資料。如果惡意攻擊者客戶端持續建立這樣的連線,那麼伺服器上可用的連線將一點一點被佔滿,從而導致拒絕服務。這種攻擊型別稱為慢速http拒絕服務攻擊。

是以極低的速度往伺服器傳送http請求。由於web server對於併發的連線數都有一定的上限,因此若是惡意地占用住這些連線不釋放,那麼web server的所有連線都將被惡意連線占用,從而無法接受新的請求,導致拒絕服務。

要保持住這個連線,rsnake構造了乙個畸形的http請求,準確地說,是乙個不完整的http請求。

在正常的http包頭中,是以兩個clrf表示http headers部分結束的。

由於web server只收到了乙個\r\n,因此將認為http headers部分沒有結束,並保持此連線不釋放,繼續等待完整的請求。此時客戶端再傳送任意http頭,保持住連線即可。

x-a: b\r\n

當構造多個連線後,伺服器的連線數很快就會達到上限。

1 安裝openssl和libssl-dev

安裝libssl如果失敗,執行apt-get update,然後再執行sudo apt-get install libssl-dev

2 安裝slowhttptest

測試http緩慢攻擊可以這樣,把url換成自己的:

針對不同的server其對慢速http拒絕服務攻擊防範方法也不同,建議使用以下措施防範慢速http拒絕服務攻擊:

websphere

任何單個 http 頭的預設最大大小為 32768 位元組。可以將它設定為不同的值。

http 頭的預設最大數量為 50。可以將它設定為不同的限制值。

設定限制任何請求正文的最大大小。詳見參考鏈結。

開啟ibm http server安裝目錄,開啟資料夾conf,開啟檔案httpd.conf,查詢keepalive值,改on為off,其預設為on。

這個值說明是否保持客戶與http server的連線,如果設定為on,則請求數到達maxkeepaliverequests設定值時請求將排隊,導致響應變慢。

weblogic

1、在配置管理介面中的協議->一般資訊下設定 完成訊息超時時間小於400

2、在配置管理介面中的協議->http下設定 post 超時、持續時間、最大 post 大小為安全值範圍。

nginx

1、通過調整$request_method,配置伺服器接受http包的操作限制;

2、在保證業務不受影響的前提下,調整client_max_body_size, client_body_buffer_size, client_header_buffer_size,large_client_header_buffersclient_body_timeout, client_header_timeout的值,必要時可以適當的增加;

3、對於會話或者相同的ip位址,可以使用httplimitreqmodule and httplimitzonemodule引數去限制請求量或者併發連線數;

4、根據cpu和負載的大小,來配置worker_processes 和 worker_connections的值,公式是:max_clients = worker_processes * worker_connections。

apache

建議使用mod_reqtimeout和mod_qos兩個模組相互配合來防護。

1、mod_reqtimeout用於控制每個連線上請求傳送的速率。配置例如:

#請求頭部分,設定超時時間初始為10秒,並在收到客戶端傳送的資料後,每接收到500位元組資料就將超時時間延長1秒,但最長不超過40秒。可以防護slowloris型的慢速攻擊。

requestreadtimeout header=10-40,minrate=500

#請求正文部分,設定超時時間初始為10秒,並在收到客戶端傳送的資料後,每接收到500位元組資料就將超時時間延長1秒,但最長不超過40秒。可以防護slow message body型的慢速攻擊。

requestreadtimeout body=10-40,minrate=500

需注意,對於https站點,需要把初始超時時間上調,比如調整到20秒。

2、mod_qos用於控制併發連線數。配置例如:

當伺服器併發連線數超過600時,關閉keepalive

qs_srvmaxconnclose 600

限制每個源ip最大併發連線數為50

qs_srvmaxconnperip 50

這兩個數值可以根據伺服器的效能調整。

ihs伺服器

請您先安裝最新補丁包,然後啟用mod_reqtimeout模組,在配置檔案中加入:

loadmodule reqtimeout_module modules/mod_reqtimeout.so

為mod_reqtimeout模組新增配置:

requestreadtimeout header=10-40,minrate=500 body=10-40,minrate=500

對於https站點,建議header=20-40,minrate=500。

參見:f5負載均衡修復建議

緩慢的HTTP拒絕服務攻擊

slow http dos解決方案 解決方案 1 設定tomcat server.xml檔案 connectiontimeout 值,預設為20000ms,修改為8000ms tomcat 自身安全漏洞 2 設定ajax的全域性timeout時間 預設為30000ms ajaxsetup 3 if ...

拒絕服務攻擊

dos denial of service 指拒絕服務,是一種常用來使伺服器或網路癱瘓的網路攻擊手段。在平時更多提到的是分布式拒絕服務 ddos,distributed denial of service 攻擊,該攻擊是指利用足夠數量的傀儡計算機產生數量巨大的攻擊資料報,對網路上的一台或多台目標實施...

拒絕服務攻擊 DOS)

拒絕服務攻擊 dos dos是denial of service的簡稱,即拒絕服務,造成dos的攻擊行為被稱為dos攻擊,其目的是使計算機或網路無法提供正常的服務。最常見的dos攻擊有計算機網路頻寬攻擊和連通性攻擊。頻寬攻擊指以極大的通訊量衝擊網路,使得所有可用網路資源都被消耗殆盡,最後導致合法的使...