2011-04-15 59 views
3

爲了保護自己免受slowloris型攻擊,我們在我們的Apache 2.2.17安裝(在Solaris上運行,MPM編譯)上配置了mod_reqtimeout模塊。該mod_reqtimeout配置如下:Apache mod_reqtimeout不會丟失長請求

RequestReadTimeout頭= 10-20,MinRate = 500 =身體10-20,MinRate = 500

我們使用OWASP http_dos_cli工具和測試仍然能夠使網站在幾秒鐘內無法達到。在日誌中,我們看到請求在20秒後被截斷,然後被處理。由於該URL指的是實際資源,因此將返回200狀態碼。這可以防止我們的mod_security規則設置爲檢測408狀態碼,收集基於IP的統計信息並阻止來自此IP的更多請求。

關於爲什麼mod_reqtimeout截斷請求而不是丟棄它並返回408的任何想法?

非常感謝!

+0

實際上,由於httpd-vhosts.conf文件中的RedirectMatch指令,Apache正在發送302重定向。但是,該請求應該超時並返回408,而不是302。 – Spiff 2011-04-26 15:09:30

回答

4

我已經開了一個bug報告,並得到確認,在HTTPD核心問題是造成了以下問題:

  • 阿帕奇當檢測到一個請求超時(各種情況)並不總是返回一個408
  • Apache不處理請求超時的情況下正確的URL對應一個RedirectMatch指令

更多細節在這裏:https://issues.apache.org/bugzilla/show_bug.cgi?id=51103

希望最終幫助別人。