AppLocker:在 Windows 中配置应用程序限制策略

Jacki

使用AppLocker 安全策略,管理员可以阻止或允许特定应用程序在 Windows 上运行。使用 Applocker,可以限制特定用户组的程序执行,同时允许其他用户(例如管理员)运行它们。本指南介绍如何使用 GPO 创建和部署 AppLocker 应用程序访问策略。

AppLocker应用程序控制功能最初可用仅适用于企业版Windows 的。但是,从 Windows 10 版本 2004 和所有 Windows 11 版本开始,这些版本限制被删除,允许将 AppLocker 策略应用于专业版版本也是如此。

以前,可以通过软件限制策略 (SRP) 在 Windows 中实施应用程序启动限制。但是,自 Windows 10 版本 1803 和 Windows Server 2019 发布以来,SRP 功能已被弃用。

让我们使用域组策略管理管理单元创建一个包含 AppLocker 控制设置的新域 GPOgpmc.msc(以同样的方式,您可以使用本地组策略编辑器在独立计算机上配置 Applocker 设置),

  1. 创建一个新的 GPO 并切换到编辑模式。
  2. 为了将 AppLocker 策略应用于客户端,应用程序身份服务必须已启用并正在运行(AppIDSvcWindows 中默认禁用该服务)。
  3. 导航到计算机配置 -> Windows 设置 -> 安全设置 -> 系统服务。打开应用程序身份服务属性并启用自动启动。
  4. 然后展开计算机配置 -> 策略 -> Windows 设置 -> 安全设置 -> 应用程序控制策略 -> AppLocker。您可以在此处为四个软件类别创建规则:

    可执行规则– 可执行文件(.EXE 和 .COM)。
    Windows 安装程序规则– Windows 安装程序文件(.MSI、.MSP、.MST)。
    脚本规则– 脚本文件(.BAT、.CMD、.JS、.PS1 和 .VBS)。
    打包应用规则– APPX 和 MSIX Microsoft Store 应用程序。

  5. 在此示例中,我们将为可执行文件创建软件控制规则。所以,右键单击可执行规则并选择创建默认规则
  6. 将创建多个预定义规则。

    允许所有人(位于 Program Files 文件夹中的所有文件) – 此规则使用户能够运行来自Program Files目录。
    允许所有人(位于 Windows 文件夹中的所有文件) – 它允许用户运行 Windows 文件夹中的任何文件Windows目录。
    允许 BUILTINAdministrators(所有文件)- 本地管理员组的成员可以运行任何文件。

  7. 例如,您可能希望允许非管理员用户运行特定应用程序,无论其版本或位于磁盘上的位置如何。
  8. 创建新的 AppLocker 规则。选择是允许还是拒绝运行可执行文件。选择将应用此策略的用户组(默认为“每个人”)。
  9. 接下来,选择 AppLocker 规则的条件。提供三个选项:
    出版商– 它允许为签名文件(来自特定发布者的文件)创建规则。使用此规则,您可以从以下选项中进行选择:发布者名称、产品名称、可执行文件名或文件版本。
    小路– 指定将应用规则的目录或文件的路径。您可以指定 EXE 文件的完整路径或使用通配符 (*)。例如,规则C:MyAppFolder*将应用于指定目录中的所有可执行文件。
    文件哈希值– 规则可用于根据 SHA-256 哈希值识别未签名的文件。此规则允许或拒绝执行文件,无论文件的名称或在磁盘上的位置如何。但是,如果文件版本发生更改(例如,软件更新后),则必须为新文件哈希重新创建规则。
    在规则中指定路径时,可以使用以下 AppLocker 特定的环境变量。
    Windows 目录或驱动器 AppLocker路径变量
    Windows目录 %WINDIR%
    System32 和 sysWOW64 %SYSTEM32%
    Windows安装驱动 %OSDRIVE%
    程序文件 %PROGRAMFILES%
    可移动媒体(CD 或 DVD) %REMOVABLE%
    可移动存储设备(USB 闪存驱动器) %HOT%
  10. 我们将由其发布者为特定应用程序创建 AppLocker 规则。选择目标可执行文件。由于创建 AppLocker 规则的域控制器中可能缺少目标文件,因此您可以使用 UNC 路径通过网络从客户端计算机选择文件(例如,使用 Windows 管理共享路径格式\computer123c$toolstcpview64.exe
  11. 我想允许该文件根据其名称运行,无论版本如何。滑块应移至文件名。或者,使用配置更灵活的条件使用自定义值选项。
  12. 例外情况部分,您可以按路径、发布者或文件哈希对规则进行例外处理。例如,您可以阻止旧的、易受攻击的应用程序版本运行或将它们限制在某些文件夹中。
  13. 设置新的 AppLocker 规则名称。

现在,让我们创建一条规则来阻止用户运行 AnyDesk.exe 应用程序。

  1. 添加新的 AppLocker 规则
  2. 该规则应阻止任何人运行该应用程序。选择操作:否定、用户或组:每个人
  3. 创建发布者规则并浏览查找 AnyDesk 可执行文件。
  4. 无论文件的版本或位置如何,此规则都应适用。您可以完全拒绝发布由发布者签名的文件 O=ANYDESK SOFTWARE GMBH或通过产品名称对其进行限制。
  5. 无论可执行文件所在的目录或实际文件名如何,这样的规则都会阻止程序启动。

尽管允许本地管理员运行任何本地可执行文件,但拒绝规则始终优先并阻止执行。

要将您创建的 AppLocker 规则应用到客户端计算机,请在 GPO 控制台中打开 AppLocker 属性。这里有四种类型的规则可用:

  • 可执行规则– 经典 Win32 可执行 (Exe) 文件的规则
  • Windows安装程序规则 – MSI 安装程序规则
  • 脚本规则– 脚本执行规则
  • 打包所有规则– Microsoft Store AppX/MSIX 包的规则

默认情况下,不应用 AppLocker 规则。要将规则应用于客户端,您需要启用已配置选项并选择是否要应用规则仅审计或在执行规则模式。

建议首先在审核模式下应用规则,以测试它们对客户端的影响,而不会实际阻止应用程序执行

将具有 AppLocker 设置的 GPO 链接到目标 OU(强烈建议首先在测试计算机/OU 上测试软件限制规则)。

在客户端上应用新的组策略设置后,请检查 AppLocker 规则如何在该客户端上发挥作用。由于 AppLocker 规则当前在审核模式下应用,因此实际上不会阻止应用程序启动。

您可以使用事件查看器日志来确定启动特定可执行文件时如何触发 AppLocker 策略。打开事件查看器控制台(eventvwr.msc)并导航至应用程序和服务日志 -> Microsoft -> Windows -> AppLocker -> EXE 和 DLL。

当 AppLocker 检测到尝试运行被阻止的可执行文件时,它会记录一条带有事件 ID 的警告8003其中包括被阻止的应用程序的名称。

%OSDRIVE%TOOLSANYDESK.EXE was allowed to run but would have been prevented from running if the AppLocker policy were enforced.

如果允许应用程序运行,则事件 ID8002将被添加。

在非管理用户帐户下测试 AppLocker 规则,因为默认规则允许管理员不受限制地运行所有应用程序。用户必须在他们的会话中工作,启动必要的程序并执行他们的标准日常任务。

根据审核事件查看被阻止运行的应用程序。您可以使用 PowerShell 查询事件查看器日志并获取计算机上被 AppLocker 规则阻止的应用程序列表。

$TimeSpan = (Get-Date).AddHours(-24)
Get-WinEvent -FilterHashtable @{LogName = "Microsoft-Windows-AppLocker/EXE and DLL"; Id = 8003; StartTime = $TimeSpan } | Format-Table TimeCreated, Message -AutoSize

如果当前应用程序控制策略阻止所需的可执行文件,请编辑 AppLocker GPO 以添加允许该应用程序运行的规则。

在审核模式下调试 AppLocker 规则后,您可以在强制模式下应用它们。为此,请将 AppLocker 策略中的审核设置更改为执行规则

AppLocker 现在将阻止启动任何未经授权或明确拒绝的程序。

This app has been blocked by your administrator

ID 为 8004 的事件现在将添加到事件查看器中,其中包含被阻止的可执行文件的名称。

%OSDRIVE%TOOLSANYDESK.EXE was prevented from running.

为 AppLocker 中每个允许或阻止的应用程序手动创建单独的规则既耗时又乏味。有多种工具可以加快和改进创建和实施 AppLocker 规则的过程。

GPO 控制台中的 AppLocker 配置编辑器具有自动规则生成功能。管理员可以选择自动生成规则选项并指定参考计算机上的目标文件夹。然后,AppLocker 将为计算机上找到的所有软件生成规则列表。

您还可以通过从单台计算机导入 AppLocker 规则来创建它们。例如,您可以使用 PowerShell 从事件查看器日志中获取被阻止的可执行文件的列表:

推荐阅读:如何使用软件限制策略 GPO 禁用 PowerShell

Get-ApplockerFileinformation -Eventlog -EventType Audited|fl

根据此信息,您可以自动将规则添加到本地 AppLocker 策略。

Get-ApplockerFileinformation -Eventlog -EventType Audited | New-ApplockerPolicy -RuleType Hash, Publisher -User jsmith -RuleNamePrefix AuditBased | Set-ApplockerPolicy –Merge

新规则将添加到计算机的本地 AppLocker 策略中。从那里,它们可以导出和导入到域 GPO。

仅列出被阻止的可执行文件(包括尝试运行每个文件的次数):

Get-AppLockerFileInformation -EventLog -EventType Denied -Statistics

创建 AppLocker 规则时请记住以下几点:

是否可以在计算机上暂时暂停 AppLocker?您可能认为停止应用程序标识服务会阻止应用 AppLocker 规则。然而,事实并非如此。

要在计算机上暂时禁用 AppLocker,请先停止 AppIDSvc 服务,然后删除应用程序缓存.dat,exe.AppLocker, 和等AppLocker文件来自C:WindowsSystem32AppLocker文件夹。

现代版本的 Windows 包括一种用于控制可执行文件启动的附加机制,称为Windows Defender 应用程序控制 (WDAC)。尽管它的配置比 AppLocker 稍微复杂一些,但由于其灵活性、可扩展性和增强的安全性,它是更好的选择。与仅在用户模式下运行的AppLocker 不同,WDAC 可以在内核级别(例如驱动程序)和用户模式下阻止代码执行。