2012-02-24 102 views
1

我試圖模擬一個緩慢的http讀取攻擊對我的本地主機上運行的Apache服務器。 但似乎是,服務器沒有抱怨,只是等待客戶端閱讀。Http服務器 - 緩慢讀取

這是我做的:

  1. 請求一個巨大的文件(比如說〜1MB)從HTTP服務器
  2. 從服務器讀取的循環中,等待100秒的響應連續讀取

由於文件很大並且客戶端接收緩衝區很小,服務器必須以多個塊發送文件。但是,在客戶端,我在連續讀取之間等待100秒。因此,服務器經常輪詢客戶端,並發現客戶端的接收窗口大小爲零,因爲客戶端尚未讀取接收緩衝區。

但它看起來像服務器不打擾打破連接,它默默地繼續輪詢客戶端。服務器在客戶機窗口大小> 0時發送數據,並再次返回等待客戶機。

我想知道是否有任何apache配置參數可以設置爲在等待客戶端讀取數據之後從服務器端斷開連接。

回答

1

也許這對你更有用(簡單並節省你的時間):http://ha.ckers.org/slowloris/這是一個發送部分HTTP請求的Perl腳本,Apache服務器讓連接保持打開狀態(現在對新用戶不可用)並且如果執行在Linux環境下(Linux不會限制硬件功能以外的線程),您可以有效地阻止所有打開的套接字,從而防止其他用戶訪問服務器。它使用最小的帶寬,因爲它不會將請求氾濫到服務器,它只是緩慢地將套接字作爲人質。你可以在這裏下載文件:http://ha.ckers.org/slowloris/slowloris.pl

爲了防止這樣的攻擊(當然,減輕)在這裏看到:https://serverfault.com/questions/32361/how-to-best-defend-against-a-slowloris-dos-attack-against-an-apache-web-server

您也可以使用負載平衡器或循環設置。

+0

謝謝@mesh。我看到了這次攻擊,但我特別關注了我描述的攻擊。讓我知道你是否知道服務器配置選項來重置連接。 – sachin2182 2012-02-24 06:54:51

+0

@ sachin2182 - 不確定這是否適用於您的目的,http://httpd.apache.org/docs/2.0/mod/core.html#timeout在httpd.conf或.htaccess中放置'TimeOut xyz'其中xyz是在殺死連接之前最多要等待的秒數。如果您有快速連接,我建議大概10秒鐘。 – ionFish 2012-02-24 07:01:36

+0

timeout指令用於客戶端發送的請求。假設服務器在一段時間內沒有收到客戶端的請求(它期望的),那麼如果我們想要中斷連接,那麼可以使用這個選項。 – sachin2182 2012-02-24 07:16:36

0

嘗試slowhttptest測試您描述的緩慢讀取攻擊。 (它也可以用於測試頭緩慢發送。)