ISA Server 2004 或 ISA Server 2006 的下游伺服器不會重複使用 TCP 連線,到協力廠商的上游伺服器

文章翻譯 文章翻譯
文章編號: 934022 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

徵狀

考慮下列案例。下游伺服器正在執行 Microsoft 網際網路安全性和加速 ISA Server 2004 或 Microsoft 網際網路安全性加速 ISA Server 2006。這個下游伺服器鏈結至協力廠商上游的伺服器,透過 Web 鏈結的組態。在這種情況下 ISA Server 並不重複使用已建立到上游伺服器的 TCP 連線。而是,ISA Server 接收 HTTP 回應後會關閉每個 TCP 連線。

當網路重度負載下時這種行為可能會導致 ISA Server 耗盡所有可用的 TCP 連接埠。

發生的原因

某些協力廠商 Proxy 伺服器傳送包含兩個以下的標頭之 HTTP 回應:
  • 內容長度
  • 傳輸編碼方式: 區塊
根據到 RFC 2616 規格區段 4.4,這些兩個標頭都互相排斥和必須不使用它們在一起。這個 HTTP 回應表示潛在的 HTTP smuggling 攻擊。因此,ISA Server 會將忽略內容長度標頭處理回應。然後,ISA Server 關閉 TCP 連線,以避免潛在的攻擊。

解決方案

解決方案

如果要解決這個問題,取得最新的 ISA Server Service Pack。 如需詳細資訊按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中 「 文件]:
954258如何取得最新網際網路安全性與加速 ISA Server 2006 Service Pack
891024如何取得最新的 ISA Server 2004 Service Pack
重要這些步驟可能會增加您的安全性風險。這些步驟也可能會使電腦或網路更容易遭受惡意使用者或惡意軟體 (例如病毒) 的攻擊。我們建議處理程序,本文將告訴您,若要啟用程式如同它們設計用來操作,或是實作特定的程式功能。進行這些變更之前,我們建議您先評估在特定環境中實作這個程序相關聯的風險。如果決定實作這個程序採用任何其他的適當步驟,以協助保護系統。建議您只有您真正需要此程序時,才使用此程序。
警告TCP 連線,即使,在您依照這一節中的步驟執行之後將不關閉 ISA Server 2004 這兩個內容長度標頭和 」 傳遞編碼: 區塊 」 標頭都存在 HTTP 回應中。此解決方案可降低由 ISA Server 所提供的保護。因此,我們不建議您套用此變更,除非上游伺服器提供 HTTP smuggling 攻擊的保護。

若要變更預設 ISA 行為,請依照下列步驟執行:
  1. 如果要解決這個問題,取得最新的 ISA Server Service Pack。 如需詳細資訊,請按一下下列的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
    954258如何取得最新網際網路安全性與加速 ISA Server 2006 Service Pack
    891024如何取得最新的 ISA Server 2004 Service Pack
  2. 啟動 [記事本]。
  3. 複製下列程式碼,然後將它貼到 「 記事本 」:
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '
    ' Copyright (c) Microsoft Corporation. All rights reserved.
    ' THIS CODE IS MADE AVAILABLE AS IS, WITHOUT WARRANTY OF ANY KIND. THE ENTIRE
    ' RISK OF THE USE OR THE RESULTS FROM THE USE OF THIS CODE REMAINS WITH THE
    ' USER. USE AND REDISTRIBUTION OF THIS CODE, WITH OR WITHOUT MODIFICATION, IS
    ' HEREBY PERMITTED.
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    	
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' This script sets whether ISA will keep connections open after it receives an HTTP 
    ' response that contains both a Content-Length header and a Transfer-Encoding: Chunked header.
    '
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    
    Const SE_VPS_GUID = "{143F5698-103B-12D4-FF34-1F34767DEabc}"
    Const SE_VPS_NAME = "EnableKb934022"
    Const SE_VPS_VALUE = true
    
    Sub SetValue()
    
        ' Create the root object.
        Dim root  ' The FPCLib.FPC root object
        Set root = CreateObject("FPC.Root")
    
        'Declare the other objects needed.
        Dim array       ' An FPCArray object
        Dim VendorSets  ' An FPCVendorParametersSets collection
        Dim VendorSet   ' An FPCVendorParametersSet object
    
        ' Get references to the array object
        ' and to the network rules collection.
        Set array = root.GetContainingArray
        Set VendorSets = array.VendorParametersSets
    
        On Error Resume Next
        Set VendorSet = VendorSets.Item( SE_VPS_GUID )
    
        If Err.Number <> 0 Then
            Err.Clear
    
            ' Add the item.
            Set VendorSet = VendorSets.Add( SE_VPS_GUID )
            CheckError
            WScript.Echo "New VendorSet added... " & VendorSet.Name
    
        Else
            WScript.Echo "Existing VendorSet found... value- " &  VendorSet.Value(SE_VPS_NAME)
        End If
    
        if VendorSet.Value(SE_VPS_NAME) <> SE_VPS_VALUE Then
    
            Err.Clear
            VendorSet.Value(SE_VPS_NAME) = SE_VPS_VALUE
    
            If Err.Number <> 0 Then
                CheckError
            Else
                VendorSets.Save false, true
                CheckError
    
                If Err.Number = 0 Then
                    WScript.Echo "Done with " & SE_VPS_NAME & ", saved!"
                End If
            End If
        Else
            WScript.Echo "Done with " & SE_VPS_NAME & ", no change!"
        End If
    
    End Sub
    
    Sub CheckError()
    
        If Err.Number <> 0 Then
            WScript.Echo "An error occurred: 0x" & Hex(Err.Number) & " " & Err.Description
            Err.Clear
        End If
    
    End Sub
    
    SetValue
    
  4. 將文字檔案儲存為"Enable934022]。
  5. 開啟命令提示字元,切換至在其中儲存指令碼,位置,然後在命令提示字元執行下列命令:
    cscript Enable934022.vbs
附註若要還原為預設設定,編輯指令碼藉由變更 「 Const SE_VPS_VALUE = true"to"Const SE_VPS_VALUE = 設定為 False 時則"儲存指令碼,然後再執行一次。

狀況說明

Microsoft 已確認<適用於>一節所列之 Microsoft 產品確實有此問題。

其他相關資訊

如需有關如何安裝 ISA Server Hotfix 及更新的詳細資訊,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
885957如何安裝 ISA Server Hotfix 及更新

屬性

文章編號: 934022 - 上次校閱: 2008年10月24日 - 版次: 2.0
這篇文章中的資訊適用於:
  • Microsoft Internet Security and Acceleration Server 2004 Standard Edition
  • Microsoft Internet Security and Acceleration Server 2004 Enterprise Edition
  • Microsoft Internet Security and Acceleration Server 2006 Standard Edition
  • Microsoft Internet Security and Acceleration Server 2006 Enterprise Edition
關鍵字:?
kbmt kbtshoot kbexpertiseinter kbprb KB934022 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:934022
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com