Apache 預防 Slow HTTP DoS Attack


Slow HTTP DoS Attack 是一種針對 Web Server 的 DoS 攻擊手法, 而且對於使用 thread based 的伺服器 (Apache 預設是使用 thread) 尤其有效。做法是向 Web Server 發出連線請求, 但一直不回應 HTTP Header, 或者該回應的時間盡量拉長, 讓 Web Server 一直等待 HTTP Header 回應, 直至連線超過 timeout 時間為止, 而預設的 timeout 時間是 300 秒, 這樣就可以一直佔用連線。

如果攻擊者製造大量這些沒有回應的連線, 佔據了全部或大部份 Web Server 的連線, 正常使用者便不能連到網頁, 造成 DoS 的效果。而且攻擊者不需使用大量的頻寬便可以限斷服務。

在 Apache 2.2.15 開始, 預設已經安裝了 mod_reqtimeout, 它可以設定接收 HTTP Header 的 timeout 時間, 先開啟 httpd.conf, 在 CentOS httpd.conf 的預設位置是 /etc/httpd/conf/httpd.conf:

# vi /etc/httpd/conf/httpd.conf

在最後的位置加入以下內容:


RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500

在 vi 儲存檔案及離開:

:wq

以上設定是只會等待 HTTP Header 20 秒, 而連個 HTTP Header 傳送過程只容許在 40 秒內完成.

然後重新啟動 Apache:

# systemctl restart http

Leave a Reply