You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

软件限制策略HASH算法问题:域GPO哈希不匹配致应用限制失效,求正确哈希计算方法

软件限制策略HASH算法问题:域GPO哈希不匹配致应用限制失效,求正确哈希计算方法

我来帮你搞定这个问题!你遇到的核心矛盾其实是域组策略(GPO)里的软件限制策略(SRP)默认使用的哈希算法不是MD5,而是SHA-1,这就是为啥你手动算的MD5哈希和GPO要求的对不上,导致规则不生效。

下面给你一步步讲正确的操作方法:

一、先搞懂SRP的哈希规则逻辑

SRP的哈希规则是基于目标文件的SHA-1哈希值(默认),而且必须从你要限制的那台服务器上获取文件计算哈希——因为哪怕是同版本的powershell.exe,DC和目标服务器如果补丁版本、系统更新状态不一样,哈希也会不同,这也是你之前在DC和服务器算MD5结果不一样的原因之一。

二、正确计算目标文件的哈希

  1. 登录到你要限制的目标服务器,打开PowerShell(现在还能正常打开对吧😉),执行以下命令计算64位PowerShell的SHA-1哈希:
    Get-FileHash -Algorithm SHA1 "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
    
  2. 如果你的服务器是64位系统,还要考虑32位版本的PowerShell(很多程序会调用这个版本),同样计算它的哈希:
    Get-FileHash -Algorithm SHA1 "C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe"
    
  3. 把输出里的Hash字段值复制下来,这就是GPO需要的正确哈希值。

三、在GPO里配置正确的哈希规则

  1. 回到域控制器,打开组策略管理编辑器,找到你创建的那台服务器专属GPO。
  2. 定位到路径:计算机配置\Windows设置\安全设置\软件限制策略\其他规则
  3. 右键点击「其他规则」,选择「新建哈希规则」:
    • 你可以直接点击「浏览」,从目标服务器上共享的路径里选择powershell.exe(这样系统会自动计算正确的SHA-1哈希);
    • 或者手动粘贴刚才复制的哈希值到「哈希」输入框,然后在「安全级别」里选择「不允许的」,最后点击确定。
  4. 如果需要限制32位PowerShell,重复上面的步骤添加对应的哈希规则。

四、几个容易踩的坑

  • 为啥本地策略有用? 因为本地策略里你是直接选择了本地的exe文件,系统自动帮你计算了正确的SHA-1哈希,而你在DC上手动用MD5计算,自然和GPO要求的哈希不匹配。
  • 哈希规则的局限性:如果powershell.exe因为系统更新、补丁安装被替换,哈希值会变化,这个规则就失效了。如果需要长期稳定的限制,可以考虑用「路径规则」或者「证书规则」,不过哈希规则是最严格的,适合需要精准控制的场景。
  • 验证是否生效:在目标服务器上执行gpupdate /force刷新GPO,然后尝试打开PowerShell,如果弹出“Windows无法打开此程序,因为它被软件限制策略阻止”的提示,就说明规则生效了。如果还是有问题,可以去事件查看器的「应用程序和服务日志\Microsoft\Windows\SoftwareRestrictionPolicy」里找详细的规则匹配日志,排查问题。

备注:内容来源于stack exchange,提问作者fah81

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 09:29:39