如何緩解Slowloris 攻擊?
對於易受Slowloris 攻擊的Web 服務器,有一些方法可以減輕某些影響。易受攻擊的服務器的緩解措施可以分為3 大類:
增加服務器可用性- 增加服務器在任何時間允許的最大客戶端數量,這將增加攻擊者使服務器過載前必須建立的連接數。實際上,無論增加多少,攻擊者都可以擴展攻擊數量以攻克服務器容量。
限制傳入請求的速率- 基於某些使用因素限制訪問,這將有助於緩解Slowloris 攻擊。限制單個IP 地址允許建立的最大連接數,限制慢速傳輸速度,以及限制客戶端允許保持連接的最長時間,這些技巧都是限制慢速攻擊的有效方法。
在 Apache 2.4 中已經內建 mod_reqtimeout,只需要先在 httpd.conf 中把 # 拿掉啟用即可
LoadModule reqtimeout_module modules/mod_reqtimeout.so
例子
等待5秒以完成TLS握手,等待10秒以接收請求標頭,等待30秒以接收請求正文:
RequestReadTimeout handshake=5 header=10 body=30
至少等待10秒鐘以接收請求正文。如果客戶端發送數據,則每接收1000個字節,將超時增加1秒,沒有超時上限(除非間接限制為 LimitRequestBody):
RequestReadTimeout body=10,MinRate=1000
至少等待10秒鐘以接收請求標頭。如果客戶端發送數據,則每接收500個字節將超時增加1秒。但請求標頭的時間不得超過30秒:
RequestReadTimeout header=10-30,MinRate=500
通常,服務器應同時配置標頭超時和主體超時。如果將通用配置用於http和https虛擬主機,則超時不應設置得太低:
RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500
接下來就是設定
<IfModule reqtimeout_module>
RequestReadTimeout header=20-30,MinRate=256 body=100-120,MinRate=512
</IfModule>