2017年2月7日 星期二

小試 IIS 的簡易 DoS 防護-動態 IP 限制

這幾天,DDoS 攻擊事件在台灣鬧得沸沸揚揚。
DoS 攻擊可約略分為頻寬消耗型(找一大群鄉民擠在餐廳門口)及資源消耗型(召喚服務生過來點菜連點兩鐘頭,或一口氣點兩百盤紅燒獅子頭),從網站管理者的角度,對頻寬消耗型攻擊完全無能為力,只能靠 ISP 或網管單位防禦;但對於資源消耗型攻擊,倒是有些因應對策。(例如:把十分鐘還沒點完菜的客人攆出去或把點兩百盤獅子頭的客人打成豬頭)
我知道有一些 ASP.NET 設定就與 DoS 防護有關,例如:每次搞檔案上傳時都要手動調大的 MaxRequestLength 參數,選用偏小的 4MB 預設值,用意就在防止惡意程式透過 POST Request 傳送大量資料耗盡頻寬、記憶體或執行緒。而這陣子詢問度很高則是另一項 IIS功能-「動態 IP 限制」(在 IIS 7 時代為額外模組需透過 Web PI 安裝,IIS 8 起改為內建,詳情可參考小朱的文章), 過去曾聽過有此功能,但沒實際玩過,把握這個機會弄個小 Lab 觀察驗證也好。

以 IIS 8 為例,先從 IIS 管理員開啟「IP位址及網域限制」:

點選「編輯動態限制設定…」即可叫出設定畫面:

動態 IP 限制可從兩個方向下手:限制同一 IP 同時開啟連線數或限制同一 IP 在一段期間內發送的最大要求數量, 一旦超過上限,IIS 便直接回傳錯誤,不再耗費頻寬或 CPU、記憶體處理要求。
預設建議值為每個 IP 同時連線數不超過 5 條,每 0.2 秒要求數不得超過 20 個,超過這個數字 IIS 就暫時不處理來自該 IP 的請求,直接傳回 HTTP 錯誤以節省資源。





原始介紹文章出自於此

沒有留言:

張貼留言