使用引用计算机创建 WDAC 策略

注意

Windows Defender应用程序控制的某些功能仅在特定 Windows 版本上可用。 详细了解Windows Defender应用程序控制功能可用性

本部分概述了使用已配置了要允许的软件的引用计算机创建Windows Defender应用程序控制 (WDAC) 策略的过程。 可以将此方法用于专用于特定功能用途的固定工作负载设备,并与服务相同功能角色的其他设备共享通用配置属性。 固定工作负载设备的示例可能包括Active Directory 域控制器、安全管理员工作站、药品混合设备、制造设备、收银机、自动取款机等。此方法还可用于“在野外”系统上打开 WDAC,并且希望最大程度地减少对用户工作效率的潜在影响。

注意

本主题中所述的某些Windows Defender应用程序控制选项仅在Windows 10版本 1903 及更高版本或Windows 11上可用。 使用本主题规划自己组织的 WDAC 策略时,请考虑托管客户端是否可以使用所有这些或部分功能,并评估可能对客户端不可用的任何功能的影响。 可能需要调整本指南以满足特定组织的需求。

常见Windows Defender应用程序控制部署方案中所述,我们将使用 Lamna Healthcare Company (Lamna) 的示例来演示此方案。 Lamna 正尝试采用更强大的应用程序策略,包括使用应用程序控制来防止不需要或未经授权的应用程序在其托管设备上运行。

Alice Pena 是负责推出 WDAC 的 IT 团队主管。

使用引用设备创建自定义基本策略

Alice 之前为组织的完全托管最终用户设备创建了一个策略。 她现在想要使用 WDAC 来保护 Lamna 的关键基础结构服务器。 Lamna 针对基础结构系统的映像做法是建立一个“黄金”映像作为理想系统外观的参考,然后使用该映像克隆更多公司资产。 Alice 决定使用这些“黄金”映像系统来创建 WDAC 策略,这将为每种类型的基础结构服务器生成单独的自定义基策略。 与映像一样,她必须基于模型、部门、应用程序集等从多台黄金计算机创建策略。

注意

创建 WDAC 策略之前,请先确保引用计算机无病毒和恶意软件,然后再安装任何你想要扫描的软件。

在创建策略前,应验证每个已安装的软件应用程序是否值得信任。

我们建议你查看参考计算机中的软件是否可加载任意 DLL 以及是否会运行使电脑更容易受到攻击的代码或脚本。 示例包括针对开发或脚本的软件(如 Visual Studio 的 msbuild.exe (部分)和.NET Framework) (如果不想运行脚本),可以将其删除。 你可以在引用计算机上删除或禁用此类软件。

Alice 确定了以下关键因素,以达到 Lamna 的关键基础结构服务器的“信任圈”:

  • 所有设备都运行 Windows Server 2019 或更高版本;
  • 所有应用都是集中管理和部署的;
  • 无交互式用户。

基于上述情况,Alice 定义了策略的伪规则:

  1. 授权的“Windows 有效” 规则:

    • Windows
    • WHQL (第三方内核驱动程序)
    • Windows 应用商店签名的应用
  2. 授权设备上找到的所有预先存在的应用二进制文件的 扫描文件 的规则

为了创建 WDAC 策略,Alice 在提升的Windows PowerShell会话中按顺序运行以下每个命令:

  1. 初始化变量。

    $PolicyPath=$env:userprofile+"\Desktop\"
    $PolicyName="FixedWorkloadPolicy_Audit"
    $LamnaServerPolicy=$PolicyPath+$PolicyName+".xml"
    $DefaultWindowsPolicy=$env:windir+"\schemas\CodeIntegrity\ExamplePolicies\DefaultWindows_Audit.xml"
    
  2. 通过扫描系统中的已安装应用程序,使用 New-CIPolicy 创建新的 WDAC 策略:

    New-CIPolicy -FilePath $LamnaServerPolicy -Level SignedVersion -Fallback FilePublisher,FileName,Hash -ScanPath c:\ -UserPEs -MultiplePolicyFormat -OmitPaths c:\Windows,'C:\Program Files\WindowsApps\',c:\windows.old\,c:\users\ 3> CIPolicyLog.txt
    

    注意

    • 你可以添加 -Fallback 参数,以捕获未使用 -Level 参数指定的主要文件规则级别发现的任何应用程序。 有关文件规则级别选项的详细信息,请参阅Windows Defender应用程序控制文件规则级别
    • 若要指定 WDAC 策略仅扫描特定的驱动器,请包括 -ScanPath 参数,后跟路径。 如果没有此参数,该工具将默认扫描 C 驱动器。
    • 指定 -UserPEs 参数(以在扫描中包含用户模式可执行文件)时,规则选项 0 已启用:UMCI 将自动添加到 WDAC 策略中。 如果未指定 -UserPE,则策略将为空用户模式可执行文件,并且只有内核模式二进制文件(如驱动程序)的规则。 换句话说,允许列表将不包括应用程序。 如果创建了此类策略并在之后添加规则选项 0 已启用:UMCI,所有尝试启动应用程序的行为都将导致 Windows Defender 应用程序控制的响应。 在审核模式下,响应将记录事件,在强制模式下,响应将阻止应用程序。
    • 若要为 Windows 10 1903 及更高版本创建策略,包括对补充策略的支持,请使用 -MultiplePolicyFormat
    • 若要指定要从扫描中排除的路径列表,请使用 -OmitPaths 选项并提供逗号分隔的路径列表。
    • 前面的示例包括 3> CIPolicylog.txt,可将警告消息重定向到文本文件 CIPolicylog.txt
  3. 将新策略与 WindowsDefault_Audit 策略合并,以确保加载所有 Windows 二进制文件和内核驱动程序。

    Merge-CIPolicy -OutputFilePath $LamnaServerPolicy -PolicyPaths $LamnaServerPolicy,$DefaultWindowsPolicy
    
  4. 为新策略提供描述性名称和初始版本号:

    Set-CIPolicyIdInfo -FilePath $LamnaServerPolicy -PolicyName $PolicyName
    Set-CIPolicyVersion -FilePath $LamnaServerPolicy -Version "1.0.0.0"
    
  5. 修改合并的策略以设置策略规则:

    Set-RuleOption -FilePath $LamnaServerPolicy -Option 3 # Audit Mode
    Set-RuleOption -FilePath $LamnaServerPolicy -Option 6 # Unsigned Policy
    Set-RuleOption -FilePath $LamnaServerPolicy -Option 9 # Advanced Boot Menu
    Set-RuleOption -FilePath $LamnaServerPolicy -Option 12 # Enforce Store Apps
    Set-RuleOption -FilePath $LamnaServerPolicy -Option 16 # No Reboot
    Set-RuleOption -FilePath $LamnaServerPolicy -Option 17 # Allow Supplemental
    Set-RuleOption -FilePath $LamnaServerPolicy -Option 19 # Dynamic Code Security
    
  6. 如果适用,请添加更多签名者或文件规则,以进一步为组织自定义策略。

  7. 使用 ConvertFrom-CIPolicy,将 WDAC 策略转换为二进制格式:

    [xml]$LamnaServerPolicyXML = Get-Content $LamnaServerPolicy
    $PolicyId = $LamnaServerPolicyXML.SiPolicy.PolicyId
    $LamnaServerPolicyBin = $PolicyPath+$PolicyId+".cip"
    ConvertFrom-CIPolicy $LamnaServerPolicy $LamnaServerPolicyBin
    
  8. 将基本策略 XML 和关联的二进制文件上传到源代码管理解决方案(如 GitHub)或文档管理解决方案(如 Office 365 SharePoint)。

Alice 现在为 Lamna 的关键基础结构服务器提供了一个初始策略,该策略已准备好在审核模式下部署。

创建自定义基本策略,以最大程度地减少用户对正在使用的客户端设备的影响

Alice 之前为组织的完全托管设备创建了策略。 Alice 已将完全托管的设备策略作为 Lamna 设备生成过程的一部分包括在内,因此现在所有新设备都启用了 WDAC。 她正在准备将策略部署到已在使用的系统中,但担心会中断用户的工作效率。 为了最大程度地降低这种风险,Alice 决定对这些系统采用不同的方法。 她将继续在审核模式下将完全托管的设备策略部署到这些设备,但对于强制模式,她会将完全托管的设备策略规则与通过扫描设备中以前安装的所有软件创建的策略合并。 通过这种方式,每个设备都被视为其自己的“黄金”系统。

Alice 确定了以下关键因素,以达到 Lamna 完全托管的使用中设备的“信任圈”:

  • 针对 Lamna 的 完全托管设备描述的所有内容;
  • 用户已安装需要继续运行的应用。

基于上述情况,Alice 定义了策略的伪规则:

  1. 完全托管设备策略中包含的所有内容
  2. 授权设备上找到的所有预先存在的应用二进制文件的 扫描文件 的规则

对于 Lamna 现有的正在使用的设备,Alice 部署脚本以及完全托管设备策略 XML (而不是转换后的 WDAC 策略二进制) 。 然后,该脚本在客户端上本地生成自定义策略,如上一部分所述,但脚本不会与 DefaultWindows 策略合并,而是与 Lamna 的完全托管设备策略合并。 Alice 还修改了上述步骤,以满足此不同用例的要求。