Windows 系統管理

Windows Vista 的 ActiveX Installer 服務

Rob Campbell and Joel Yoker

 

摘要:

  • ActiveX 控制項的常見難題
  • 如何安裝 ActiveX 控制項
  • 具危險性的使用權限
  • Windows Vista 中較安全的處理程序

這是永遠不變的事。若要大幅提升您的安全性,就必須犧牲部分自由度或彈性。如果您的環境和多數企業相同,您一定會熱切希望強化電腦的作業系統,以便提供更安全的運算

環境給終端使用者。IT 系統管理員強化電腦安全性的方法,通常會組合安全性原則設定、使用者權限、檔案和登錄存取控制清單 (ACL),以及系統服務限制。

在開發安全電腦環境的過程中,有一個常見的困難,就是如何一面減緩惡意 ActiveX® 控制項週遭的威脅,同時仍為環境提供適當的應用程式相容性等級。多年來,這一直是電腦作業系統的一道難題。幸好,Windows Vista™ 中有全新的 ActiveX control Installer Service (AxIS),可以在企業環境中解決特屬 ActiveX 控制項管理的問題。AxIS 可以為標準使用者提供簡單且可管理的方法,從允許的網站安裝 ActiveX 控制項 (通常並不會允許使用者安裝 ActiveX 控制項)。可控制 AxIS 的群組原則,能夠讓 IT 系統管理員判斷使用者 (不論其權限) 可安裝哪些控制項。

在本文中,我們將討論 Active X 控制項相關的系統管理難題,在舊版 Windows® 中如何解決這些問題,以及 Windows Vista 的 AxIS 如何以獨特、更有效的方式來管理 ActiveX 控制項的安裝作業。

什麼是 ActiveX 控制項?

ActiveX 控制項是可執行的程式碼 (通常是封裝在 CAB 檔內的 OCX 檔),由使用者透過 Internet Explorer® 安裝和叫用。Web 開發人員建立 ActiveX 控制項,以便於 Web 應用程式中加入功能,這是使用標準 HTML 或簡易指令碼所難以達到的目標。

ActiveX 控制項的主要特性,在於簡單的「下載並執行」部署模式。ActiveX 控制項會透過 HTML 物件標記安裝和叫用,此標記有一種名為 CODEBASE 的屬性,若使用者電腦上尚未安裝控制項,便會告知 Internet Explorer (使用 URL) 到何處取得。在這種情況下,Internet Explorer 會下載安裝套件,為物件執行信任驗證,並且透過 Internet Explorer 資訊列 (如 [圖 1] 所示) 詢問使用者是否授與安裝權限。在安裝期間,會註冊控制項並由呈現頁面叫用。安裝完成後,任何一般使用者皆可叫用該控制項。這項簡單的散佈與執行機制,目的在提供開發人員簡便的方式,將元件散佈給 Web 應用程式使用者。此散佈方法的問題是,標準使用者無法直接安裝 ActiveX 控制項,因為必須有系統管理權限才能完成安裝程序。

圖 1 ActiveX 控制項安裝資訊列

圖 1** ActiveX 控制項安裝資訊列 **

Internet Explorer 4.0 中首次推出 ActiveX 控制項功能時,網路就變得更好用了。現在,透過 Web 發佈的可執行程式碼都可能會有安全性的威脅,因此 Windows 只允許具有本機系統管理員權限的使用者安裝 ActiveX 控制項,也只允許符合原則設定的安裝。ActiveX 控制項一旦由系統管理員安裝後,系統上的任何使用者皆可叫用。此行為由一組檔案和 Windows 中的登錄 ACL 促成。雖然這可以避免標準使用者安裝 ActiveX 控制項,但是無法將風險移轉至安裝這些控制項的本機系統管理員和標準使用者 (預設權限已修改)。

然而 Windows 的預設保護 (只允許具有系統管理員權限的使用者進行安裝) 可解決個別電腦上的 ActiveX 控制項,卻無法在大型組織內管理這些控制項。企業環境中常見的難題,是如何允許受 IT 組織信任的 ActiveX 控制項的使用,同時又能保護電腦不受外部、不信任的控制項的威脅。最終決定要安裝特定 ActiveX 控制項究竟是好是壞,通常還是得根據個別使用者的權限來論定。為了抵抗這些威脅,有些公司會阻擋所有的 ActiveX 控制項,有些則允許終端使用者安裝控制項,但是會另外設法管理可能安裝的惡意程式。

另一種避免安裝惡意控制項的方式,是強制賦予標準使用者限制權限,並且由 IT 系統管理員預先將所有需要的控制項安裝在電腦平台上。若需要使用的 ActiveX 控制項較為靜態、會以固定排程搭配電腦的更新進行修改,或者企業有使用如 Systems Management Server 的軟體發佈機制時,此方法就十分有效。然而,長期的管理、不斷變化的內部應用程式開發人員需求,以及對外部控制項的依賴,仍是這些方法的主要難題。

若使用者具有系統管理員權限,問題則大不相同;其中涉及如何不讓這些使用者安裝未經核准的控制項。在這種情況下,由於使用者具有系統管理員權限,因而會假設終端使用者具有安裝 ActiveX 控制項的權利 (請注意,若終端使用者以本機系統管理員身分執行,企業就會陷入高風險情形,通常都不建議企業環境如此做)。

解決方法之一,是採用裝載已核准控制項的內部網際網路元件下載伺服器。這個方法需要修改用戶端登錄中的 CodeBaseSearchPath 字串。一般而言,若於要求的 HTML 頁面中找到包含 CODEBASE 屬性的物件標記,Windows 用戶端會導向 CodeBaseSearchPath 資料中指定的位置。根據預設,此登錄字串會包含 CODEBASE 關鍵字以及 ActiveX 控制項檔案庫的網際網路 URL。若要實作網際網路元件下載伺服器,必須將 CodeBaseSearchPath 的預設資料,置換為企業核准用來裝載控制項之內部伺服器的 URL。如同上一個方法,此解決方案仍需要長期管理,且尚需負擔裝載 ActiveX 控制項內部伺服器的成本與複雜度。

還有其他解決方案,諸如修改 Internet Explorer 區域 URLActions、透過群組原則指定系統管理員核准控制項,以及利用防火牆規則阻擋所有週邊控制項的安裝程序。但是正如您所見,這些方法全都有其問題,且許多方法最後都會因為缺乏彈性而被廢棄。更糟的是,有部分解決方法仍要求使用者具備系統管理員權限。這些修改方法只能解決部分問題 (例如控制 (或阻擋) ActiveX 控制項的來源、可叫用的位置等),然而到最後,這些解決方案仍無法減輕最根本的問題:沒有系統管理員權限的使用者不得安裝 ActiveX 控制項。

AxIS 有哪些用途?

Windows Vista 的 AxIS 可以讓企業系統管理員有效管理 ActiveX 控制項,同時維護安全狀態,因為使用者將以預設檔案系統的設定加上標準使用者的身分執行。AxIS 提供的群組原則選項,能夠設定 ActiveX 控制項的信任來源和代理程序,以便從這些信任來源為標準使用者安裝控制項。主要的優勢在於能夠在使用者工作站上,維持非系統管理員的安全狀態,同時配合集中式系統管理控制。AxIS 會仰賴 IT 系統管理人員識別出 ActiveX 控制項的信任來源 (一般為網際網路或內部網路)。當物件標記引導 Internet Explorer 叫用控制項時,AxIS 會採取下列步驟:

  1. 檢查控制項是否已安裝。若尚未安裝,則必須先行安裝方可使用。
  2. 檢查 AxIS 原則設定,以驗證控制項是否來自信任來源。檢查時會對照原則中指定的信任位置清單,與物件標記之 CODEBASE 屬性中所指定 URL 的主機名稱,確認兩者符合。
  3. 為使用者下載和安裝控制項。

若來源 URL 的主機名稱並未列在 AxIS 原則設定中,則會叫用正常使用者帳戶控制 (UAC) 提示,要求系統管理員權限來完成安裝。此外,AxIS 會從來源 AxInstallService 於應用程式事件記錄中以 ID 4097 記錄事件,概述嘗試安裝 ActiveX 控制項的過程,以及控制項的特定下載路徑。4097 事件的範例顯示於 [圖 2] 中。此事件記錄項目的資料可由企業系統管理員用來修改群組原則,以允許後續造訪網站時由 AxIS 安裝控制項。

圖 2 4097 AxInstallService 事件

圖 2** 4097 AxInstallService 事件 **

AxIS 是選擇性元件,隨附於 Windows Vista 的 Business、Enterprise 及 Ultimate SKU 版本中,可以經由自動選項或者透過 [控制台] 對話方塊 ([所有程式] | [程式和功能] | [開啟或關閉 Windows 功能]),如 [圖 3] 所示。啟用之後,每次 Internet Explorer 要求控制項時,AxIS 就會逐步進行上述步驟。

圖 3 在 [控制台] 中啟用 AxIS

圖 3** 在 [控制台] 中啟用 AxIS **

在 Windows Vista 中附加工作到事件的功能,是系統管理員從 AxIS 服務接收通知的簡便方式,例如 ActiveX 控制項安裝受阻的通知。必須注意的一點是,不得假設 ActiveX 控制項永遠都會透過終端使用者所存取網站的相同 URL 主機名稱進行安裝。基於此原因,AxInstallService 4097 (嘗試安裝) 事件所提供的資訊,包含可用來識別控制項是從哪一台主機在嘗試安裝,極為有用。

經由該事件所得到的資訊,您可以設定群組原則中的信任位置。本機或群組原則的 AxIS 設定,會在 [電腦組態設定] 中 (如 [圖 4] 所示)。[ActiveX 控制項的認可安裝網站] 原則設定,可允許您指定信任位置的主機 URL (請參閱 [圖 5])。認可的網站設定共需要兩種資訊:ActiveX 控制項的安裝來源,以及安裝的行為。

圖 4 群組原則物件編輯器中的設定

圖 4** 群組原則物件編輯器中的設定 **

圖 5 AxIS 認可的安裝網站

圖 5** AxIS 認可的安裝網站 **

首先,如之前所述,必須有主機 URL 來指出控制項的信任位置。這與先前的解決方案不同,後者必須得知控制項的 CLSID (經常因為開發人員修改控制項而改變),AxIS 則允許從信任位置安裝任何控制項,以減輕整體系統管理上的負擔。第二種資訊是以半形逗號區隔的字串,共有四個值,每個皆負責 ActiveX 控制項下載的行為。這些數值可指定四種屬性:TPSSignedControl、SignedControl、UnsignedControl 以及 ServerCertificatePolicy。前兩個屬性 (TPSSignedControl 和 SignedControl) 可為下列三個數值中任一個:0、1 或 2。這些數值與 URLAction 設定中找到的數值相似。0 值會阻止控制項的安裝,1 值會導致出現提示,要求使用者提出安裝權限,2 值可以讓控制項直接以使用者的身分安裝。未簽署的控制項無法自動安裝,因此 UnsignedControl 數值只能為 0 或 1。請注意如果未指定原則,就會使用預設值 2、1 和 0。

最後一項屬性會根據已簽署設定控制項的憑證設定,來指定安裝行為。和多數 SSL 網站一樣,憑證必須通過一系列安全性測試,才能確保該憑證有效。無效的憑證屬性,有時候也會出現在已簽署 ActiveX 控制項的實作中。透過這項組態,AxIS 可以讓系統管理員減少無效的資訊,這些資訊有時候是以逐個 URL 的方式,一一藉由憑證來呈現。最後的屬性會以位元遮罩的數值組合表現,如 [圖 6] 所示。

Figure 6 ServerCertificatePolicy

數值 定義
0x00001000 在憑證中略過無效的正式名稱 (CN)。
0x00000100 略過未知的憑證授權單位 (CA)。
0x00002000 略過無效的憑證日期。
0x00000200 略過錯誤的憑證使用率。

預設值為 0,表示必須通過所有安全性檢查,AxIS 才能完成安裝程序。主機設定和這四個數值的組合,皆於原則設定中指定,如 [圖 7] 所示。

圖 7 認可的 AxIS 主機 URL

圖 7** 認可的 AxIS 主機 URL **

結論

AxIS 可以讓您設定群組原則,來控管使用者可以直接安裝的 ActiveX 控制項,而無須系統管理權限或複雜的組態。在前一版的 Windows 中,要達到此層級的控制項管理較為困難,而過去可用的解決方案,則通常附帶有極多的限制,或者會增加管理上的成本。AxIS 提供企業另一種工具,可以在電腦系統上為終端使用者提供最低權限的方法,讓終端使用者不需要系統管理員的權限,即可實作標準使用者模式。Windows Vista 讓 IT 系統管理員再次掌握控管權,由企業選擇在環境中可信任的 ActiveX 控制項,而非由終端使用者來選擇。

Rob Campbell 是 Microsoft Federal 小組的資深技術專家。Rob 專門負責為美國聯邦政府客戶開發及部署安全性解決方案。

Joel Yoker 是 Microsoft Federal 小組的資深顧問。Joel 專門負責為美國聯邦政府客戶開發及部署安全性解決方案。

© 2008 Microsoft Corporation and CMP Media, LLC. 保留所有權利;未經允許,嚴禁部分或全部複製.