使用 GPO 阻止 Powershell

使用 GPO 阻止 Powershell

我的经理告诉我,他们希望 Powershell 仅在具有管理员帐户的服务器中执行,因此我创建了一个 GPO,使用“不运行指定的 Windows 应用程序”来阻止 Powershell.exe 和 Powershell_ise.exe。

几天前,我发现我仍然可以通过 cmd 运行 powershell,只需执行 powershell -c 或简单的 powershell,并且我没有阻止 cmd,因为我需要它来执行工作站中的支持和管理任务。

经过一番研究,我尝试设置一个哈希 SRP 阻止 powershell 和 ise。问题是,即使委派没问题、OU 没问题、组的权限也没问题,它也不适用。我的意思是,我可以看到一个用户正在获取 GPO,并且它位于正在读取 GPO 并应用它的组之一中。

我已经尝试过不同的 OU、组、账户和 SRP 类型,但对我来说都不起作用。

你对这种情况有什么建议吗?提前谢谢

编辑:我不想阻止 powershell 的核心,因为某些进程或任务将无法运行。因此,我们的想法是阻止某些用户(或计算机)访问 powershell

答案1

简短答案

对你的问题的简短回答是不要试图阻止用户打开 PowerShell。为什么?PowerShell 是一个程序,而不是安全边界。有关详细信息,请继续阅读。

阻止 PowerShell 运行并不能提高安全性

阻止 PowerShell 或阻止 PowerShell 脚本运行不会提高安全性。在 Windows 中,用户的帐户是安全边界,不是用户运行的程序。尽管用户可以打开 PowerShell 或运行 PowerShell 脚本,但这并不意味着用户可以绕过其帐户所具备的任何安全控制。

PowerShell 执行策略是一项安全功能,而不是安全边界

PowerShell 的执行策略是一个被广泛误解的功能,它往往被误用来阻止用户运行 PowerShell 脚本,因为人们错误地认为这样可以在某种程度上提高安全性。

PowerShell 的执行策略是一种安全功能,旨在防止意外执行未签名的脚本。Bruce Payette 是 PowerShell 的主要设计者之一,他在接受的答案中说了这一点这个问题在 StackOverflow 上。

ExecutionPolicy不是安全边界。正如某人在评论1中所说,它是一种安全功能。想想安全带而不是门锁。但安全带可以降低风险,所以最好使用它们。ExecutionPolicy减轻无意中运行恶意代码的风险。一般建议的最低策略是RemoteSigned

1他提到的“某人”就是我本人。

相关内容