
如果您希望在Windows系统中启用Device Guard设备保护,并通过代码完整性策略限制仅运行可信程序,则需要配置基于虚拟化的安全机制与自定义的CI策略。以下是实现此目标的具体步骤:
一、确认硬件与系统要求
Device Guard依赖于UEFI安全启动、CPU虚拟化扩展(Intel VT-x或AMD-V)以及支持SLAT的处理器。系统必须运行Windows 10企业版或Windows Server 2016及更高版本,且BIOS中需启用Secure Boot和Virtualization Technology。
1、按Win+R键打开运行窗口,输入msinfo32并回车,检查“安全启动状态”是否为“开启”。
2、在PowerShell(管理员)中执行:Get-CimInstance -ClassName Win32_Processor | Select-Object Name, VirtualizationFirmwareEnabled, SecondLevelAddressTranslationExtensions,确认两项返回值均为True。
3、运行bcdedit /enum {current},验证输出中存在hypervisorlaunchtype Auto条目;若不存在,执行bcdedit /set {current} hypervisorlaunchtype auto并重启。
二、生成并部署代码完整性策略
代码完整性(CI)策略以XML格式定义允许加载的驱动、内核模块及用户模式二进制文件签名规则,需使用Windows SDK中的ConvertFrom-CIPolicy与Set-RuleOption等命令构建可信白名单。
1、安装Windows 10 SDK(含CiTool与PolicyTools模块),确保PowerShell中可调用Get-CIPolicy命令。
2、在干净环境中收集合法程序签名信息:执行New-CIPolicy -Level FileHash -FilePath C:\Temp\Baseline.xml -Fallback Hash -UserPE,生成基于文件哈希的初始策略。
3、向策略添加企业签名证书规则:执行Add-CIPolicyRule -FilePath C:\Temp\Baseline.xml -DriverFiles "C:\Drivers\*.sys" -Level Publisher,注入已签名驱动信任链。
4、禁用测试签名模式并启用强制审核:在策略XML中定位<Rules>节点,插入<Rule id="ID_ALLOW_TESTING" value="false"/>,并设置<Rule id="ID_ENABLE_AUDIT_MODE" value="false"/>与<Rule id="ID_ENABLE_HVCI" value="true"/>。
5、将XML编译为二进制策略:执行ConvertFrom-CIPolicy C:\Temp\Baseline.xml C:\Temp\SiPolicy.p7b,生成可部署的签名策略文件。
三、启用基于虚拟化的代码完整性(HVCI)
HVCI利用硬件虚拟化隔离内核内存页表,阻止未签名代码修改关键内核结构,是Device Guard运行的前提条件。该功能无法通过图形界面启用,必须通过组策略或注册表强制激活。
1、打开组策略编辑器(gpedit.msc),导航至“计算机配置→管理模板→系统→Device Guard”,启用“启用基于虚拟化的安全性”策略。
2、在同一路径下,启用“启用基于虚拟化的代码完整性”策略,并设置“配置代码完整性策略”指向C:\Windows\System32\CodeIntegrity\SIPolicy.p7b。
3、若组策略不可用,手动导入注册表项:在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity下新建DWORD值Enabled,设为1;新建Locked值设为1。
4、将编译后的SiPolicy.p7b复制到C:\Windows\System32\CodeIntegrity\,重命名为SIPolicy.p7b,覆盖默认文件。
四、验证Device Guard运行状态
策略部署后需验证HVCI是否实际启用、CI策略是否加载成功,避免因引导配置错误导致保护失效。系统日志与内核对象状态是核心判断依据。
1、重启后以管理员身份运行PowerShell,执行Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard,检查VirtualizationBasedSecurityStatus字段是否为Running。
2、执行Get-SystemDriver | Where-Object {$_.AttestationStatus -ne "NotRequired"} | Format-List FileName,AttestationStatus,确认关键驱动显示Allowed或Required状态。
3、运行certutil -displaystore -v CodeIntegrity,查看策略证书存储中是否存在策略签名证书及其时间戳有效性。
4、检查事件查看器中“应用程序和服务日志→Microsoft→Windows→CodeIntegrity→Operational”日志,筛选ID为3073的事件,确认Policy applied successfully提示。

评论(0)