限制 TMG 伺服器的 SQL 記憶體用量

所有 Forefront TMG 2010 伺服器都隨之安裝了 SQL Server 2008 Express,作為本機防火牆與網頁代理紀錄用途,作為管理者的您可能會發現 SQL server 程序(sqlserver.exe) 正消耗了大量的主機記憶體。

這種情形其實是因為 SQL server 有自己的記憶體管理機制,依據它的設計,SQL Server 會佔據大量的記憶體並且將其保留住,因此造成類似 memory leak 的狀況,不過如果以較長時間的監視 SQL server 記憶體消耗, 其實它仍然會進行記憶體釋放的動作。

大多數的情況,維持 SQL Server 自己的記憶體使用行為並不會造成任何問題,不過如果您的 TMG 確實面臨記憶體不足的壓力,而且您確定系統上沒有其他的程序佔據大量的記憶體,那麼或許您可以嘗試本文中的方法來限制 SQL 記憶體用量,在開始之前,請參考這份微軟的技術文件中關於記憶體的建議值。

接下來,進入命令提示字元模式,輸入以下的命令:
osql –E –S .\msfw

這個命令將會連線 SQL 執行緒,再輸入下列命令:
USE master
GO

EXEC sp_configure ‘show advanced options’, 1
RECONFIGURE WITH OVERRIDE
GO

EXEC sp_configure ‘max server memory (MB)’, 1024 –configure 1GB limit, adjust as needed
GO

EXEC sp_configure ‘show advanced options’, 0
RECONFIGURE WITH OVERRIDE
GO
以上的 script 係設定 SQL server 記憶體限制為 1GB(1024MB),請根據您的需求自行調整,完成後重新啟動 SQL Server服務即可生效。

如果您想知道目前的記憶體限制值,可以下列命令:
EXEC sp_configure 'max server memory (MB)'

為企業陣列(Enterprise Array) 中的 Forefront TMG 2010 安裝 SP2

安裝 Service Pack 2 (SP2) for Forefront TMG 2010 的前提是已經安裝 Service Pack 1 (SP1) 與 Software Update 1 for SP1 (SP1U1),其他的 hotfix rollup 就不是必要,對於建立企業陣列(Enterprise Array) 的 TMG 管理者而言,必須依照指定的步驟進行安裝,才能順利升級整個陣列,正確的步驟如下:

首先,依照以下順序安裝 SP1 for Forefront TMG 2010

  1. Enterprise Management Server (EMS)
  2. 各陣列中的 Reporting server
  3. 各陣列中的其他成員伺服器

接著,依照以下順序安裝 Software Update 1 for Forefront TMG 2010 SP1

  1. Enterprise Management Server (EMS)
  2. 各陣列中的 Reporting server
  3. 各陣列中的其他成員伺服器

最後,依照以下順序安裝 SP2 for Forefront TMG 2010

  1. Enterprise Management Server (EMS)
  2. 各陣列中的 Reporting server
  3. 各陣列中的其他成員伺服器

如果您係獨立陣列(standalone array),而非企業陣列,將以上順序中的 EMS 換成陣列管理伺服器(array manager)即可;另外,如果您要新增 TMG 伺服器至陣列前,請務必先將新的 TMG 伺服器升級至與陣列相同的更新層級,建議您按照這篇文章的說明,隨時合併新的更新至安裝光碟,可以節省您的時間。

如何將Forefront TMG 2010 Service Pack 2 合併進安裝光碟中

微軟已經發佈 Microsoft Forefront Threat Management Gateway (TMG) 2010 Service Pack 2,將 Service Pack 2 合併到安裝光碟中,對於經常安裝 TMG 的管理者,可以更快速完成 TMG 佈署作業;如果您有需要在唯讀網域控制站伺服器上安裝 Forefront TMG,那麼事先將 Service Pack 2 合併到安裝光碟中更是件必要的準備動作。

進行合併的第一步就是先將 DVD 中的內容或是 ISO 檔解壓縮至暫存的資料夾中,由於 Forefront TMG 2010 Service Pack 2 的必要條件是 TMG SP1 Software update 1 for TMG SP1,所以我們將所需要的檔案下載完成,不過除了 TMG SP1 直接是 .msp 檔案之外,Software update 1 for Forefront TMG 2010 SP1 與 SP2 for Forefront TMG 2010 皆是 .exe檔案,我們必須將 .msp 檔案從 .exe 中取出來,請執行以下的命令:

取出 Software update 1 for Forefront TMG 2010 SP1 的 .msp 檔案
TMG-KB2288910-amd64-CHT.exe /t d:\temp\SP1U1

取出 SP2 for Forefront TMG 2010 的 .msp 檔案
TMG-KB2555840-amd64-CHT.exe /t d:\temp\SP2

接著,我們就要開始進行合併程序,請切換至 TMG 暫存資料夾下的 \FPC 資料夾,執行以下命令:

  1. 合併 SP1 for Forefront TMG 2010
    msiexec /a MS_FPC_Server.msi /p d:\temp\sp1\TMG-KB981324-AMD64-CHT.msp
  2. 合併 Software update 1 for Forefront TMG 2010 SP1
    msiexec /a MS_FPC_Server.msi /p d:\temp\sp1u1\TMG-KB2288910-amd64-CHT.msp
  3. 合併 Forefront TMG 2010 SP2
    msiexec /a MS_FPC_Server.msi /p d:\temp\sp2\TMG-KB2555840-amd64-CHT.msp

合併完成後,請自行燒錄成 DVD或利用工具製作 ISO 檔案。

請注意,如果您藉由合併過後的 DVD 或 ISO 檔案安裝 Forefront TMG 2010 firewall client,您仍然必須安裝 2011年10月所發佈的 Forefront TMG 2010 防火牆用戶端 Hotfix 彙總套件,這個 Hotfix 彙總套件解決了幾個防火牆用戶端的問題。

移轉 ISA Server 至 Forefront Threat Management Gateway

不論您是否接到微軟的通知,這個月(2012年1月10日)起,ISA Serer 2006 的主流支援就已經終止,詳如下表:


資料來源: http://support.microsoft.com/lifecycle/?p1=11928

主流支援終止意味著如果貴公司沒有與微軟簽訂『延伸支援合約』,微軟就不再為貴公司的 ISA Server提供任何形式的技術支援,因此規劃移轉至 Forefront Threat Management Gateway 勢必成為您的工作重點項目之一,以下就如何規劃移轉 ISA Server 至 Forefront Threat Management Gateway 做一完整說明。

首先您要了解,以現有執行 ISA Server 主機直接升級至 Forefront Threat Management Gateway (TMG) 2010 是不可行的,ISA Server 運行於 32位元 Windows,而 TMG 則是完全64位元化,由於作業系統無法以升級方式移轉至64位元,所以ISA 就無法直接升級為 TMG,唯一可行的方式是將 ISA 的設定移轉至 TMG,以下版本的 ISA Server 可以將設定移轉至 TMG:

  • ISA Server 2004 Standard/Enterprise with Service Pack 3
  • ISA Server 2006 Standard/Enterprise with Service Pack 1

根據您目前執行的 ISA Server 版本,有四種可行的移轉:

  • ISA Server 2004/2006 Standard Edition to TMG Standard Edition
  • ISA Server 2004/2006 Standard Edition to TMG Enterprise Edition (standalone)
  • ISA Server 2004/2006 Enterprise Edition (single array/single array member) to TMG Enterprise Edition (standalone)
  • ISA Server 2004/2006 Enterprise Edition (single or multi-array) to TMG Enterprise Edition (EMS-managed)

移轉前準備

Continue reading

如何為TMG陣列-NLB進行更新

通常會建立TMG陣列的主要原因就是為了使用NLB,透過這樣的機制就可以提供一個負載平衡與容錯的服務。

NLB依靠接聽陣列成員的心跳(heartbeat),藉以判斷陣列成員是否仍然正常服務,各陣列成員節點會劃定預計服務的 IP位址(實際上是 IP的雜湊值(hash)),同時將心跳發送給陣列其他成員,通知陣列成員自身是處於正常服務的狀態。

一旦某個成員無法提供服務(沒有發送心跳),其他成員會自動接收這些IP位址雜湊,以便為這些IP位址用戶端繼續提供服務。

這樣的機制與安裝更新有甚麼關係呢?

對於新的連線,這樣的機制可以有效地直接進行,不過若是我們將某部陣列節點伺服器的網路拔掉,那麼原先正在由該陣列節點伺服器處理中的連線會怎麼辦? 因為其他陣列節點無法得知該節點的連線狀態,所以這些連線的下場就是連線失敗。

如果您在TMG陣列節點安裝更新、重新開機,也會發生完全相同的情況,而這種情形會影響到使用者的連線,可能造成觀感不佳。

那麼有沒有辦法繞過這樣的問題? 有任何的 workaround不要影響使用者連線嗎?

有的,NLB 支援一種稱之為"drain mode";當某一陣列節點進入"drainstop"模式,該陣列節點將繼續對現有連線提供服務,但是不接受新的連線,任何新的連線都將由陣列中其他節點進行服務。

由以上的說明,相信您可以了解,如果您準備為陣列節點安裝更新或重新啟動,利用drainstop就不會發生連線失敗的情形。因此請依照以下的方式進行更新的安裝:

  1. 讓某一陣列節點進入"drain mode",等待連線數降至0(sessions標籤頁)
  2. suspend該節點(下次重新啟動時NLB不會自動啟動)
  3. 安裝更新
  4. 確認安裝的更新可以正常運作
  5. 啟動 NLB,讓該節點重新加入陣列運作

以下截圖是TMG管理主控台的NLB選項。

TMG SP2 錯誤頁面改進

在 TMG SP2 中,絕大部分屬於 bug 修正,讓 TMG 運作更穩定,不過也有少許功能改進,本文將介紹其中一個關於錯誤頁面的功能改進,並且告訴您如何自行修改錯誤頁面。

如果您需要更多關於如何自訂 HTML 錯誤訊息的資訊,請參考 TechNet 文件 – Customizing HTML error messages,這份文件已經更新,可以適用 TMG SP2。

首先,您可以自行選擇是否使用 TMG SP2 改進的錯誤頁面,新版本的錯誤頁面可以支援自訂圖片,例如將您的公司logo放到錯誤頁面中。

設定使用新版本的錯誤頁面,請執行 TMG 管理主控台MMC,以滑鼠右鍵點擊陣列,選擇『內容』。

您會發現有一個新的標籤頁『錯誤頁面』:

就像標籤頁的說明,您可以在 TMG 安裝目錄的 \Templates\WebObjectsTemplates\ISA 資料夾中,找到新版的錯誤頁面,如果您修改這裡的設定,TMG Firewall 服務必須重新啟動,設定才會生效。

原始沒有修改的新錯誤頁面如下:

現在讓我告訴您如何修改預設頁面,在 \Forefront Threat
Management Gateway\Templates\WebObjectsTemplates\ISA 資料夾下有兩個預設 HTML 錯誤訊息檔案,這兩個檔案分別是 Default.htm 用在內網用戶端,DefaultR.htm 用在外網用戶端,您可以利用這兩個檔案作為範本,建立客製的錯誤頁面。

在新版錯誤頁面資料夾中,您可以找到名為 HTML 的子資料夾,裡面有以下檔案:

這裡的圖檔將會在錯誤頁面中使用,如果您只是希望變更圖檔為公司logo,最簡單的做法是直接將圖檔置換,這種做法就不需要更動到範本。

另外一種做法,則是將錯誤頁面中所有要使用到的物件/圖檔複製到 HTML 資料夾中,然後將這些物件/圖檔的參照加入錯誤頁面 HTML 中,例如: <img
src="HTML/MyImage.gif"> </img>,您可以參考 這篇 技術文件找到更多資訊。

注意,修改 HTML 範本或物件/圖檔前,建議您務必先進行備份,同時變更之後,必須重新啟動 TMG Firewall 服務才會生效。

以下我的範例僅將 logo.png 檔案置換為我公司之logo。

我相信您可以比我做的更多更完美。

Forefront TMG 最常見不正確的網路設定

在使用並偵錯ISA與TMG的經驗中,我發現到對於系統管理者最大的挑戰是如何正確地設定網路,雖然微軟官方提供  Planning Forefront TMG network topology 技術文件,詳細描述 TMG 可以支援的網路拓樸型態,可是實務上企業網路拓樸是更為複雜,萬一您一開始並沒有參與網路拓樸的設計,現在 TMG 又剛好有些問題,那麼您正好可以利用這個機會開始瞭解 TMG 在貴公司網路中如何運作。

以下是一個我們在ISA/TMG上最常見不正確的網路設定,而這樣的設定會導致網路路由出現一些不可預知的狀況。

問題: 遠端網路用戶端無預警且隨機發生無法瀏覽網際網路。

說明: 下圖是這個案例的網路拓樸。

而從 TMG 管理主控台,您看到如下圖般的設定。

將 Networks 設定與網路拓樸圖比對,您會覺得這裡似乎沒有甚麼問題,但是實際上,問題就是在這裡! 原因是:

  • 在這個案例裡,TMG 只有兩張網路卡,一張連接網際網路,而另外一張則連接在 headquarter 網路
  • Forefront TMG 並不支援分別為每個遠端子網段定義獨立的網路物件

關於上述第二點,我要找出原始的說明文件如下。

Forefront TMG does not support defining separate network objects that represent remote subnetsIssue: Forefront TMG does not support defining separate network objects that represent remote subnets.Cause: When you define IP address ranges for a network, Forefront TMG checks all network adapters. When Forefront TMG finds an adapter with an IP address in the network range, it associates the network with that adapter. When a network includes remote subnets accessible by Forefront TMG through routers, the IP address of the remote subnets should be included in the network definition. If you define a separate network object for a remote subnet (instead of including it in the network definition), Forefront TMG tries to locate an adapter with an IP address of the network object, and fails. Forefront TMG assumes that the adapter is not available (disconnected or disabled), and sets network status to disconnected.Solution: For best practice when defining your network configuration in Forefront TMG, take note of the following:

  • Include all network ranges for subnets in a network object’s properties (for example, include subnet IP addresses in the IP address range for the internal network).
  • Apply rules to specific subnets by creating subnet objects in the Toolbox, and then using these subnet objects to specify the source and destination in access rules.

原始文件: http://technet.microsoft.com/en-us/library/ee796231.aspx#NetworkAndRoutingIssues

我已經看到這樣不正確的設定非常多次,而最常聽到的抱怨就是『本來網路還好好的,為什麼會突然就斷線』,不過這本來就已經列入不支援的情境,Microsoft 自然無法保證這樣的設定一定可以正常運作。

解決方案: 針對這樣的網路拓樸,應該以下列方法設定。

  • 將所有子網段 IP 位址(10.10.10.0/24, 10.10.11.0/24 , 10.10.12.0/24 , 10.10.13.0/24) 都設定為 Internal Network 之中
  • 由於 TMG 此時並不能設定內網路由器為內部網卡的default gateway,所以我們必須增加靜態路由,將各個遠端子網段的下一個躍點指向內網路由器
  • 確定每個路由器的路由表對於每個網段都有正確的設定,同時所有上網的流量都指向 TMG,包括各分公司的用戶端上網

最後隨時查看 TMG alert,通常TMG有問題發生時,您會看到相當多的警告出現。

設定 UAG 變更密碼權限

登入 UAG 應用程式入口網站的用戶可以透過網站變更 AD 的密碼,不過前提是 UAG 必須以主機名稱或 FQDN 設定網域控制站資訊,而不能夠以 IP 來設定,請參考 TechNet 文件 的說明。另外一項要求是必須將設定在 Server Access 欄位,提供 UAG 連線 AD 的帳號委派適當的權限,請依照以下步驟進行設定。

  1. 啟動 Active Directory Users and Computers 管理主控台(dsa.msc)
  2. 選取 UAG Server Access 使用帳號可以進行密碼變更的 OU
  3. 以滑鼠右鍵點選該 OU,由選單中並選取 Delegate Control
  4. 點選 Next 開始進行委派
  5. 點選 Add 將 UAG Server Access 帳號加入
  6. 點選 Next 繼續
  7. 接下來的 Tasks to Delegate,選取 Create a custom task to delegate,接下來點選 Next
  8. 接下來的 Active Directory Object Type,選取 Only the following objects in the folder,並勾選 User Objects 選項,接下來點選 Next
  9. 接著在 Permissions,先勾選 General,再勾選 Change Password,接下來點選 Next 完成精靈

UAG portal 與用戶端憑證

UAG portal 有幾個跟用戶端憑證(非 SSL 憑證)有關的主題,常讓很多人混淆,這篇文章做一個整理,希望能澄清一些常見的迷思。憑證在 UAG portal 有幾個情境包括:

  1. Client Certificate Authentication
  2. UAG Certified Endpoint
  3.  Computer Certificate inspection
  4. Privileged Endpoint

接下來,我們就這幾個用途詳細說明如下。

  1. UAG 預設採用表單式驗證(Forms-Based Authentication,FBA),Client Certificate Authentication可以『取代』表單式驗證,UAG 將用戶端憑證的內容抓取出來與 AD(或設定的認證來源) 比對,如果比對結果相符,就視為認證成功,這個方式用戶端不需要輸入密碼,不過這個方式只能認證使用者憑證,因為 IE 無法存取電腦憑證區,設定方式請參考:
    http://technet.microsoft.com/en-us/library/ee861163.aspx
    請注意,設定細節與憑證、目錄結構有很密切的關聯,因此實際的設定可能與文件內容不盡相同,甚至需要客製。
  2. UAG Certified Endpoint 可以說是表單式驗證的『補充』,用戶端連線時,仍然如標準作法,輸入帳號與密碼,驗證成功後,UAG 緊接著要求用戶端提供使用者憑證,不過這個動作並非像Client Certificate Authentication的強制性,這裡只是像 UAG 的其他用戶端偵測一樣,將憑證作為一個用戶端偵測回傳值,這種作法只是為了確保憑證是正確而且確實是由用戶端電腦所取得;啟用這個功能的方式,請由 trunk 的 advanced configuration 中,將 Session 標籤頁的 "use certified endpoint" 選項啟用,在相同的設定中還有個  verify username 選項,這個選項的目的是由用戶端輸入的使用者帳號與憑證內容進行比對, 同樣地這個情境只能使用使用者憑證,因為 IE 無法存取電腦憑證區。

    用戶端在憑證彈出時,可以放棄選取憑證,此舉就好比告訴 UAG 使用者並沒有憑證,用戶端仍然可以登入,不過就只能使用指定的應用程式,系統管理者可以利用用戶端偵測的 “Certified Endpoint”參數放入應用程式中進行判斷。
  3. Computer Certificate inspection 其實是有些問題的,原因跟前面一樣的安全性限制,但是我們仍然在某種程度上可以使用,不過作業系統限制在 XP X86 SP2+ 與 Vista X86。這項功能是利用用戶端偵測功能(就跟偵測防毒軟體或防火牆一樣),檢驗憑證的動作由UAG 用戶端元件執行,用戶端元件會嘗試讀取使用者、服務或電腦憑證區的憑證並驗證廢止清單 CRL;一個非常重要的不同點在於憑證並不會傳送到 UAG,所有檢查動作都在用戶端電腦上的用戶端元件,要導入這個檢查,必須客製用戶端檢查script與policy,這樣子 UAG 才能在用戶端偵測時接收結果值並進行判斷,不過並沒有文件提到詳細作法。
  4. Privileged Endpoint 其實跟憑證並沒有關係,但是因為經常被混淆,我們也就一併討論,Privileged Endpoint 並不是預先設定好的存取權限,Privileged Endpoint 也是經由用戶端偵測回傳結果進行判斷所得,預設內容是取得 "Privileged Endpoint" 運算式,而這個運算式內容預設為 "False",換句話說,在 UAG 安裝完成後,並不會有任何用戶端電腦會視為 "Privileged Endpoint",您可以利用所有內建用戶端偵測結果或運算式,甚至自訂的檢查script,來訂定何種條件的電腦可以視為"Privileged Endpoint";這種做法的目的是可以把使用者分成兩類,第一種擁有固定的逾時設定與某些行為,而符合 "Privileged Endpoint" 的使用者可以有較寬鬆的設定,設定這兩類使用者的行為可由 trunk 的 advanced configuration 中的Session 標籤頁。

    Privileged Endpoint 也可以用在 Application Access Policy 中,作為決定應用程式存取使用。 

TMG 獨立陣列的憑證

當您以 TMG 企業版建立獨立陣列時,各 TMG 伺服器並沒有加入 AD 網域,僅是 workgroup 成員,彼此之間無法互相認證,因此需要伺服器憑證;通常的建議是使用企業內部的 PKI(CA),但是若企業內部並沒有這樣的環境呢?

首要選擇是啟用 ADCS(Active directory certificate services),但是喝杯牛奶是否要養一頭牛呢? 以下的方法可以建立自我簽發的憑證,不僅如此,還可以在沒有 CA 的情形下建立憑證結構,進而簽發其他的憑證。

首先下載windows 7 SDK,我們會使用到其中的一個工具 makcert。下載連結是: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=35aeda01-421d-4ba5-b44b-543dc8c33a20

如果您要了解該下載的完整資訊,請參考 http://msdn.microsoft.com/en-us/library/bfsktky3(VS.80).aspx

安裝完成後,請點選開始功能表中連結。

請確定目前的資料夾是位於 c:\program files\Microsoft sdks\windows\v7.1\bin\

執行以下命令
makecert -pe -n "CN=TMGArrayRootCA" -ss my -sr LocalMachine -a sha1 -sky signature -r "TMG Array Root CA"
這個命令可以建立根憑證,並且在往後以此根憑證為基礎簽發憑證。


接下來,執行以下命令簽發兩架 TMG 伺服器使用的憑證(請記得依據您的環境變更伺服器名稱)。

makecert -pe -n "CN=TMG1.TMG.local" -ss my -sr LocalMachine -a sha1 -sky exchange -eku 1.3.6.1.5.5.7.3.1  -in "TMGArrayRootCA" -is MY -ir LocalMachine -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 "TMG1.cer"

makecert -pe -n "CN=TMG2.TMG.local" -ss my -sr LocalMachine -a sha1 -sky exchange -eku 1.3.6.1.5.5.7.3.1  -in "TMGArrayRootCA" -is MY -ir LocalMachine -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 "TMG2.cer"

其實第二架 TMG 伺服器是不需要建立憑證的,但是為了日後 DR 之用,第二架伺服器也有機會成為 array manager,所以預先準備總是好的。







根憑證不需要匯出 private key。

接下來將各憑證匯入至各 TMG 主機,請記得將跟憑證安裝到『信任的根憑證』中。

完成後,就可以開始建立獨立陣列了。