Dynamic IP Restrictions: 保護 IIS 網站的流量守門員

灰暗的星星灰暗的星星灰暗的星星灰暗的星星灰暗的星星
 

本文將介紹一個可以防止 IIS 網站受到 DDoS(分散式阻斷服務)或是惡意產生大量並行流量的用戶端攻擊的一個擴充套件:Dynamic IP Restrictions,它可以設定強制將大量並行流量的用戶的要求捨棄,並且在發生 DDoS 時將特定的 IP 網段的要求全部捨棄,以保護網站不因為這種大量流量的攻擊而中斷服務。

 

阻斷服務攻擊:網站經營者的夢魘

顧名思義,阻斷服務攻擊(Denied of Service, DoS)是一種讓目標服務(或伺服器)無法正常提供服務的一種攻擊手段,它的目的只有一個,即讓目標服務停擺。DoS 攻擊的案例非常多,台灣的很多知名網站以及主機供應商都吃過 DoS 的苦頭,現階段 DoS 的防治仍然非常困難,因為攻擊的來源可能有很多,DoS 是只有一台電腦或一個群組的電腦發動的攻擊,另一種 DDoS(Distributed Denied of Service)則是由網路上無法估計的許多電腦一起發動的,而這些電腦的使用者通常對自己被當做攻擊者是渾知不知的,實際發動攻擊封包的電腦被稱為殭屍(Zombie),它們通常都被駭客(cracker)植入了具有遠端遙控(remote control)性質的木馬程式,當駭客下指令發動攻擊時,這些殭屍電腦即會針對特定的目標發動巨大流量的封包,當目標伺服器沒有做防護(防火牆流量偵測、入侵防禦系統等)時,通常都是照單全收,當封包要求超出伺服器負荷時,伺服器會呈現 CPU 100% 或是記憶體被佔滿的現象,導致服務速度變慢甚至於整個服務完全中斷。

當 DDoS 發生時,受影響的可能不只是目標伺服器,若受攻擊的目標是主機供應商的其中一個客戶的網站時,其他掛在相同網段中的主機服務也會因為網路流量過大而受到影響,雖然伺服器沒有被攻擊,但是因網路頻寬被大量吃光而速度變慢,回應的封包也可能會因為網路壅塞而被路由器捨棄,用戶端收不到回應的封包,以為服務被遠端中斷。

DDoS 攻擊的手法有很多,其中知名的兩種是死亡之 ping(Death of ping)以及 SYN 洪流(SYN Flood),這兩種攻擊手段都是利用TCP的三方交握機制(3-way handshake)的流量發動的。

DDoS 目前因為駭客不是實際的發動攻擊者,所以在追查上困難很多,因此各大廠商在防治 DDoS 的攻擊上大多都是採取消極的防禦措施,例如異常流量的偵測以及可能的攻擊因素發生時將連線中斷的方式,來防止 DDoS 攻擊成功。本文所要介紹的,就是內置於 IIS 7.0 中,防止大量異常流量進入 IIS 處理的套件:Dynamic IP Restrictions。

Dynamic IP Restrictions 介紹

Dynamic IP Restrictions 是一個基於 IIS 核心層次上的一個模組,提供 IIS 核心針對網路上的異常通訊與要求進行封鎖處理,它會和 IIS 本身的『IP 與網域限制』的功能整合,以支援管理人員所需要的網站安全原則管理。讀者也可以將它視為 『IP 與網域限制』的加強版本,內建的『IP 與網域限制』是靜態的,不會針對用戶端的活動做動態的監控,只能被動的在 IP 與網域封鎖清單中加入要封裝的IP與網域,但 Dynamic IP Restrictions 模組可以實施動態的用戶端流量監測,只要用戶端發出的要求超過 Dynamic IP Restrictions 設定的限制時,它就會將要求擋下來,並且回傳指定的 HTTP 錯誤碼,讓用戶端在一段時間內無法再向 IIS 提出要求。

Dynamic IP Restrictions 具有下列功能:

  • 以並行要求次數為主的 IP 流量管理原則(Blocking of IP addresses based on number of concurrent requests),若用戶端 IP 位址發出了太多的並行要求(concurrent requests),IIS 會將它封鎖。
  • 以週期時間為主的 IP 流量管理原則(Blocking of IP address based on number of requests over a period of time),若在一定的週期時間內有大量的用戶端連線要求時,IIS 會將超過的用戶端要求封鎖,並且在一定時間內解除鎖定,這樣可以保證至少有一定數量的用戶端可以存取服務。
  • 允許管理人員自訂回應的方式,目前支援 HTTP 403, 404 以及捨棄連線三種。
  • 在發生封鎖的狀況時,會將當時被封鎖的 IP 顯示在 IIS 上,並且會產生 W3C 的記錄檔。
  • 支援 IPv6。

目前 Dynamic IP Restrictions 模組是處於 Beta 測試狀態,微軟希望它可以在符合可阻絕大多數惡意的大流量攻擊時,才會將它正式釋出,未來當然也有可能包裝在 Service Pack 或是下一個版本的 IIS 中釋出。

使用 Dynamic IP Restrictions

Dynamic IP Restrictions 可以透過 Web Platform Installer 2.0 來安裝,安裝完成後在 IIS 中會產生一個「Dynamic IP and Domain Restriction」的項目,在該圖示上按兩下即可進入主畫面:

 

在預設的情況下,Dynamic IP Restriction 的功能是不啟用的,必須要勾選要封鎖的類型的核取方塊,並且套用其設定後它才會生效,而設定的欄位說明如下:

欄位 說明
Deny IP address based on the number of concurrent requests
Maximum number of concurrent requests 設定用戶端的最大並行要求,若超出時執行Action Type所指定的動作。
Deny IP addresses based on number of requests over a period of time
Maximum number of requests 設定要求允許進入IIS的最大數量。
Time period (in seconds) 設定要求最大數量的監測週期時間。
Deny for time period (in seconds) 設定超出要求最大數量時,封鎖要求的時間週期。
Deny Action
Action type 當發生必須封鎖的動作時,要執行的動作。

首先,我們先來模擬並行要求過多的用戶端,以測試 Dynamic IP Restrictions 的功能。我們在預設的網站上建立一個 Concurrence.aspx,並加入下列的內容:

[HTML] <%@ Page Language="C#" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(3000);
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Dynamic IP Restrictions Test</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h1>Hello World!</h1>
</div>
</form>
</body>
</html>

然後在 Dynamic IP Restrictions 的限制設定中,設定只允許 2 個並行要求:

 

所謂的並行要求(concurrence requests)是指同一個用戶端在伺服器尚未回傳結果前又再次發出的服務要求,如果伺服器程式會執行長時間時,用戶端未被處理完的要求會一直累積,可能會造成資料錯誤或是伺服器記憶體耗盡(要求暫存需要花費記憶體空間)的問題。

接著將瀏覽器打開,並且瀏覽預設網站的 Concurrence.aspx,此時應該是正常的,但若連續按重新整理 3 次,就會看到下列的錯誤訊息:

 

這表示 Dynamic IP Restrictions 偵測到了用戶端發出了超過2次的要求訊息,因此發出 HTTP 403 的回應,以拒絕用戶端的存取要求。

接著我們再來展示另外一個封鎖行為,就是在週期時間(Time period)內如果連線要求超出設定的範圍時,就會將拒絕連入要求一定的時間。為了要展現這個效果,我們先將 Concurrence requests 的部份關閉,並且開啟 Requests over the period time 的設定,將要求數設為 2,週期時間設為 10 秒:

所謂的要求(request)泛指向伺服器要求各種資源的 HTTP 指令,不論是要求 HTML 網頁,或是 CSS、圖檔、JavaScript 或其他連結在網頁上的資源都一樣,所以可能用戶端瀏覽網頁時可能會引發數十個要求,端看網頁的複雜程度以及是否有快取而決定。

 

接著一樣使用前面說明的測試方式,只要在 10 秒鐘內重新整理超過 2 次時就會出現下列錯誤訊息:

 

而當 IIS 進行封鎖行為的時候,管理人員可以利用在 Dynamic IP Restrictions 功能區右方的『Show Blocked Addresses…』來瀏覽目前被封鎖的 IP 位址清單:

 

在封鎖的同時,Dynamic IP Restrictions 會將封鎖的 IP 資料寫入到記錄檔中(預設路徑是 %SYSTEMDRIVE%\inetpub\logs\IPRestrictions),以利管理人員的後續追踪:

 

結語

Dynamic IP Restrictions 模組提供了動態的用戶端流量監控服務,以防止來自網路不明的大流量讓網站停擺的問題,管理人員可以善用這個模組來保護 IIS 網站或伺服器,以解除來自網路上可能的 DDoS 的威脅。

提交评论


安全码
刷新

 

自1996年以来,公司一直专注于域名注册、虚拟主机、服务器托管、网站建设、电子商务等互联网服务,不断践行"提供企业级解决方案,奉献个性化服务支持"的理念。作为戴尔"授权解决方案提供商",同时提供与公司服务相关联的硬件产品解决方案。
 

联系方式

地址:河南省郑州市经五路2号

电话:0371-63520088 

QQ:76257322

网站:800188.com

电邮:该邮件地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。

微信:用企业微信联系