如何檢測 Slowloris?

如何檢測 Slowloris?

我很確定我受到了 Slowloris 的攻擊。我設定了 iptables 規則來限制與我的網頁伺服器的最大連接數,但我想知道如何確定這是否確實是 Slowloris 攻擊,如果是,我如何找到攻擊者的 IP 位址。我真的很想將日誌傳給他的 ISP。

謝謝

答案1

Slowloris 攻擊的原理是盡可能慢地發送請求資料。因此,如果您可以測量每個 IP 位址的頻寬使用情況,如果它低於某個閾值(透過測量已知的 Slowloris 攻擊中的頻寬來發現),那麼您就知道自己受到了攻擊。

為了防止攻擊,我建議切換您的網頁伺服器軟體。我使用切諾基,它的預設配置具有抵抗力。我無法確定 nginx 是否易受攻擊,但 lighttpd 是。我也不能確定使用抗性網路伺服器作為代理會產生任何影響。

以下是更多資訊:http://ha.ckers.org/blog/20090617/slowloris-http-dos/

答案2

第一級:簡單的slowloris DOS


為了查找 Slowloris 攻擊者的 IP 位址,我使用以下命令列:

netstat -ntu -4 -6 |  awk '/^tcp/{ print $5 }' | sed -r 's/:[0-9]+$//' |  sort | uniq -c | sort -n

這將為您提供每個已連接 IP 的活動連線數

如果您受到簡單的 DOS 攻擊,一個擁有一個或幾個 IP 的孩子,一個擁有 50-100 個連接(或更多)的人很可能是您可以刪除的 Slowloris 攻擊者。

如果您在攻擊期間連接到伺服器,這是為了「即時」偵測並刪除(使用 iptables 或您首選的 hlfw )它們。

在 apache 日誌中添加處理時間( %D 或 %T 參數)也可能有助於透過分析日誌來檢測「事後」slowloris 攻擊,如果您的日誌中沒有此信息,您將無法找到任何有趣的內容。看http://httpd.apache.org/docs/current/mod/mod_log_config.html對於日誌配置。

2級:真正的大slowloris DDOS


netstat(使用 watch netstat 進行刷新)仍然可以幫助您查看某些 IP 始終處於連線狀態

要對抗 Slowloris,請在 apache 上安裝 reqtimeout 模組並進行設置,例如:

http://pastebin.com/3BNNwfyb

之後,您在 access_log 中看到的每一個 408 都可以 99.999% 確定是 Slowloris 攻擊者 IP。

使用 reqtimeout apache 模組,您可以輕鬆地在一個像樣的專用伺服器上對抗數千個 ip 和每秒數千個資料包

Iptables 還可以提供一些幫助,例如:

iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j DROP

相關內容