通过将用户添加到 WinRMRemoteWMIUsers 来解决 Powershell Remoting 安全隐患

Lie*_*ers 2 security powershell

在我们当前的工作流程中,我们必须将 RDP 连接到多个服务器才能知道服务是否正在运行。我们没有这些服务器的管理员权限,但可以查看、启动和停止服务。

我们想改用 Powershell Remoting。就像是

 (1..8)|%{gsv -c "server$($_" -n "*ourservice*"}
Run Code Online (Sandbox Code Playgroud)

会更容易和更快地做到。

通过将我们的用户添加到WinRMRemoteWMIUsers组中,我是否正确

  • 我们可以执行命令(我们的关注)
  • 我们无法通过 RDP 对系统做任何我们现在无法做的事情(安全管理的关注)

编辑

以下摘自 Secrects of Powershell Remoting 似乎解决了安全问题

powershellorg · PowerShell 远程处理的秘密

PowerShell 和 Remoting 都不是恶意软件的“后门”

这是一个重大的误解。请记住,默认情况下,PowerShell 不执行脚本。当它这样做时,它只能执行正在执行的用户有权运行的命令 - 它不会在超级特权帐户下执行任何操作,并且既不绕过现有权限也不绕过安全性。

底线:由于其工作方式,PowerShell Remoting 不允许任何用户(无论是否获得授权)执行他们通过其他十几种方式无法执行的任何操作

Gre*_*kew 5

我们无法通过 RDP 对系统做任何我们现在不能做的事情(安全管理的关注)。

风险是,如果该组中的帐户被盗用,攻击者可能会通过 PowerShell 进行访问。评估该访问的风险和补偿控制是您需要根据您的环境确定的事情。


为了回答您的后续问题,我不相信任何人都可以提供该帐户也可以使用 RDP 登录的一般假设/结论。如果帐户/服务器配置为所需的智能卡,则不能使用 RDP 登录。

安全是关于评估风险和实施补偿控制。一个建设性的反建议可能是建议:

  • 使用防火墙将 PowerShell Remoting 的网络访问限制为特定的管理计算机/跳转主机(tcp/5985 和/或 tcp/5986)。
  • 使用组策略将 WinRMRemoteWMIUsers 的成员身份限制/强制为特定域组。
  • 仅允许这些特定域组中的授权帐户成员身份。
  • 实施对 PowerShell/WinRM/WinRS 活动的审计,并将这些事件日志发送/包含在安全团队发送回中央事件日志收集器的事件中(假设他们这样做了)。PowerShell 和 WinRM 的内置事件日志在这方面实际上非常薄弱,但您可以为此使用SysInternals SysMon。这是一个示例:

PowerShell 远程处理示例事件命令行:

SysMon PS远程审计

WinRS 示例事件命令行:

SysMon WinRS 审计