Apache-2.2
如何避免這樣的洪水?
我將發布 Apache 伺服器狀態頁面的螢幕截圖,而不是描述正在發生的事情:
這是尼日利亞的IP。
我多年來一直遇到這個問題,除了禁止攻擊者的 IP 並等待混蛋通過另一個返回之外,我從未找到可行的解決方案。
這裡有一點進一步的解釋。該站點是定制開發的,只有在使用者登錄該站點時才能訪問該下載頁面,否則會重定向到登錄頁面。如果使用者已登錄,它會提供相當大的文件。但是,在服務過一次之後,該網站有一種類似於 RapidShare 的策略,這意味著使用者必須等待。所以第二次訪問它時,它只會提供一條錯誤消息,告訴使用者等待。然而,看起來攻擊者以某種方式成功地打開了一個連接,然後是另一個,然後又是另一個,直到我伺服器上的 MySQL 阻塞並開始拋出錯誤。
如果這種攻擊是已知的,有一個名稱,並且有已知的解決方案來避免它重定向我。非常歡迎任何回饋或想法,因為我在這裡慢慢發瘋。
您可以使用幾種方法:
mod_evasive是一種用於在這種情況下提供幫助的特定工具:
您可以按照以下標準阻止:
- 每秒多次請求同一頁面
- 每秒對同一個子節點發出超過 50 個並發請求
- 在臨時列入黑名單(在阻止列表中)時發出任何請求
另一種選擇是自己滾動一些東西,從命令行刮掉 apache 狀態(很簡單,我以前做過),然後按 IP 和 URL 排序,然後你放棄它,
否則,我認為唯一的其他“好”解決方案類似於上面提到的解決方案,將 IP 活動記錄到該頁面,比如 5 分鐘,然後如果您超過該門檻值,則讓腳本刮過並將其放入防火牆。您也不必阻止它,您可以執行以下操作,這將阻止 30 次嘗試後的新連接(根據正確的 eth 設備進行調整):
iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 5 --hitcount 20 -j DROP