AppLocker 安全注意事项

本文面向 IT 专业人员介绍了在实现 AppLocker 时需要解决的安全注意事项。

AppLocker 可帮助限制特定用户或用户组对软件的访问。 以下是 AppLocker 的安全注意事项:

AppLocker 部署在企业内,并由 IT 中的这些资源使用受信任的凭据集中管理。 此系统使其策略创建和部署符合类似的策略部署过程和安全限制。

AppLocker 策略通过已知进程和域中的已知方式通过组策略进行分发。 但是,如果个人具有管理员权限,则还可以在个人计算机上设置 AppLocker 策略,并且这些策略可能违反组织的书面安全策略。 通过 组策略 对象 (GPO 分发的 AppLocker 策略中的强制模式设置) 优先于本地策略。 但是,由于 AppLocker 规则是累加的,因此本地策略的规则与应用于计算机的任何 GPO 的规则合并。

Microsoft 不提供开发 AppLocker 的任何扩展的方法。 接口不是公共接口。 具有管理员凭据的用户可以使用 Windows PowerShell cmdlet 自动执行某些 AppLocker 进程。 有关 AppLocker Windows PowerShell cmdlet 的信息,请参阅 Windows PowerShell 中的 AppLocker Cmdlet

AppLocker 在 Administrator 或 LocalSystem 的上下文中运行,这是最高权限集。 此安全上下文有误用的可能性。 由于 AppLocker 规则是累加的,因此任何本地策略规则都与任何 GPO 一起应用于该计算机。 如果本地计算机未加入域或由组策略控制,则具有管理凭据的人员可以完全控制 AppLocker 策略。

AppLocker 路径规则不会替换访问控制列表 (ACL) 。 应继续使用 ACL 根据安全策略限制对文件的访问。

不能使用 AppLocker 阻止代码在 Win32 子系统外部运行。 例如,它无法控制适用于 Linux 的 Windows 子系统中运行的代码。 如果要求阻止应用程序在 Linux 子系统中运行,则必须禁用子系统。 或者,可以通过阻止 LxssManager.dll 来阻止适用于 Linux 的 Windows 子系统。

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,可传递给 CreateRestrictedTokenLOAD_IGNORE_CODE_AUTHZ_LEVEL,可传递给 LoadLibraryEx。 这两个标志都向 AppLocker 发出信号,以规避规则并允许加载子 .exe 或 .dll。