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 策略进行更改时,对于本地设备上已更改的同一文件(或路径),包含 AppLocker 规则的 GPO 可能会覆盖或不允许这些更改。但是,由于 AppLocker 规则是累加的,因此仍会针对该计算机对不在 GPO 中的本地策略进行评估。如果本地计算机未加入域且不受组策略管理,则具有管理凭据的个人可以改变 AppLocker 策略。

当使用路径条件类型规则保护目录中的文件时,无论是使用规则的允许操作还是拒绝操作,根据安全策略设置访问控制列表 (ACL) 以限制对这些文件的访问都是必要且不错的做法。

AppLocker 不会防止在 Virtual DOS Machine (NTVDM) 中运行 16 位的 DOS 二进制文件。当存在另一个操作系统运行和控制硬件时,此技术允许在使用 Intel 80386 或更高版本的计算机上运行旧版 DOS 和 16 位的 Windows 程序。因此,当 AppLocker 已配置为以其他方式阻止二进制文件和库时,16 位二进制文件仍可运行在 Windows Server 2008 R2 和 Windows 7 上。如果要求阻止 16 位应用程序运行,必须在可执行规则集合中为 NTVDM.exe 配置拒绝规则。

无法使用 AppLocker(或软件限制策略)阻止代码在 Win32 子系统外部运行。尤其应用于 Windows NT 中的 (POSIX) 子系统。如果要求阻止应用程序在 POSIX 子系统中运行,则必须禁用该子系统。

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 规则并启动子进程。在使用 AppLocker 规则允许应用程序运行之前,必须彻底检查每一个应用程序。

注意  

对此状态进行说明的两个标志是可以传递给 CreateRestrictedTokenSANDBOX_INERT 和可以传递给 LoadLibraryExLOAD_IGNORE_CODE_AUTHZ_LEVEL。这两个标志会向 AppLocker 发出信号以绕过这些规则并允许加载子 .exe 或 .dll。

 

相关主题

AppLocker 技术参考