AppLocker 的安全性考量

本文適用於 IT 專業人員,說明您在實作 AppLocker 時需要解決的安全性考慮。

AppLocker 可協助限制特定使用者或使用者群組對軟體的存取。 以下是 AppLocker 的安全性考慮:

AppLocker 會部署在企業內,並由IT中具有受信任認證的資源集中管理。 此系統會使其原則建立和部署符合類似的原則部署程式和安全性限制。

AppLocker 原則會透過已知進程,以及透過 群組原則 在網域內以已知方式散發。 但如果人員具有系統管理員許可權,而且這些原則可能與組織的書面安全策略相反,則也可以在個別計算機上設定AppLocker原則。 透過 群組原則 Objects (GPO 散發之 AppLocker 原則的強制模式設定) 優先於本機原則。 不過,因為 AppLocker 規則是加法的,所以本機原則的規則會與任何套用至電腦的 GPO 規則合併。

Microsoft 不提供開發 AppLocker 任何擴充功能的方法。 介面不是公用的。 具有系統管理員認證的使用者可以使用 Windows PowerShell Cmdlet 將某些 AppLocker 程式自動化。 如需 AppLocker Windows PowerShell Cmdlet 的相關信息,請參閱 Windows PowerShell 中的 AppLocker Cmdlet

AppLocker 會在系統管理員或 LocalSystem 的內容中執行,這是最高許可權集合。 此安全性內容可能會誤用。 因為 AppLocker 規則是加法的,所以任何本機原則規則都會連同任何 GPO 一起套用至該電腦。 如果本機計算機未加入網域或由 群組原則 控制,具有系統管理認證的人員可以完全控制AppLocker原則。

AppLocker 路徑規則不會取代 ACL) (存取控制清單。 您應該繼續使用 ACL,根據您的安全策略限制檔案的存取。

您無法使用 AppLocker 來防止程式代碼在 Win32 子系統外部執行。 例如,它無法控制在 Windows 子系統 Linux 版 中執行的程式代碼。 如果需要防止應用程式在 Linux 子系統中執行,您必須停用子系統。 或者,您可以封鎖 LxssManager.dll 來封鎖 Windows 子系統 Linux 版。

AppLocker 只能控制 VBScript、JScript、.bat 檔案、.cmd檔案,以及 Windows PowerShell 腳本。 它不會控制在主機進程內執行的所有解譯程序代碼,例如 Perl 腳本和宏。 解譯的程式代碼是在主機進程內執行的可執行程序代碼形式。 例如,Windows 批處理檔 (*.bat) 在 Windows 命令主機 (cmd.exe) 的內容中執行。 若要使用AppLocker控制解譯的程式代碼,主機進程必須在執行解譯的程式代碼之前呼叫AppLocker,然後強制執行AppLocker傳回的決策。 並非所有主機進程都會呼叫 AppLocker,因此 AppLocker 無法控制每種解譯的程式代碼,例如 Microsoft Office 宏。

重要

如果您必須允許這些主機進程執行,您應該設定這些主機進程的適當安全性設定。 例如,在 Microsoft Office 中設定安全性設定,以確保只載入已簽署和信任的宏。

AppLocker 規則會允許或封鎖應用程式檔的執行。 AppLocker 不會控制應用程式啟動後的行為。 應用程式可能包含傳遞至函式的旗標,這些旗標會向AppLocker發出規避規則的訊號,並允許載入另一個 .exe 或 .dll。 實際上,允許的應用程式可以使用這些旗標來略過AppLocker規則並啟動子進程。 您必須先徹底檢查每個應用程式,再允許它們使用AppLocker規則來執行。

注意

說明此條件的兩個旗標是 SANDBOX_INERT,可以傳遞至 CreateRestrictedToken, 和 LOAD_IGNORE_CODE_AUTHZ_LEVEL,可以傳遞至 LoadLibraryEx。 這兩個旗標都表示AppLocker規避規則,並允許載入子 .exe 或 .dll。