Netwrix 1Secure 提供跨数据和身份的统一可见性——免费试用14天,享有完全访问权限。开始免费试用

资源中心博客

使用受限终结点实现安全的 PowerShell Remoting

使用受限终结点实现安全的 PowerShell Remoting

Mar 17, 2023

在 Windows Server 2012(及更高版本)中,PowerShell Remoting 默认即已启用。尽管许多 IT 团队将其视为潜在的安全风险,但如果遵循最佳实践,PowerShell 实际上是管理服务器最安全的方式之一。本文将向您展示如何配置 Windows Server 2012 R2,以便仅接受来自特定用户组的远程 PowerShell 连接,并限制可运行的 cmdlet。

什么是受限终结点?

远程终结点(Remote endpoints)决定哪些用户可以通过 PowerShell Remoting 连接到设备,以及在完成身份验证后他们可以执行哪些操作。默认的 PowerShell 终结点允许属于内置 AdministratorsRemote Management Users 组的用户远程连接,并在设备上公开所有可用的 cmdlet 和函数。

好消息是,你可以创建自己的 constrained 终结点,并限制用户能够执行的操作,从而尽量降低为了管理目的而允许 PowerShell Remoting 所带来的风险。

在 Windows Server 2012 R2 中创建受限终结点(Constrained Endpoints)

让我们在 Windows Server 2012 R2 中创建自己的受限终结点。使用本地管理员权限登录,然后点击桌面任务栏上的蓝色 PowerShell 图标。

  • 要查看服务器上现有的终结点,请在 PowerShell 提示符中输入 Get-PSSessionConfiguration,然后按 ENTER
  • 在 PowerShell 控制台中,您应该能看到四个默认终结点(endpoints)。

为了限制用户在连接到受限终结点(constrained endpoint)时可以执行的 cmdlet 和函数,我们需要创建一个配置文件。在 PowerShell 控制台中,输入下面显示的 cmdlet,然后按 ENTERNew-PSSessionConfigurationFile 会创建一个名为 PrintAdmin.pssc 的新配置文件,并设置限制,包括将远程用户限制为只能使用属于 PrintManagement PowerShell 模块的函数。

      New-PSSessionConfigurationFile – Path PrintAdmin.pssc – SessionType RestrictedRemoteServer -LanguageMode NoLanguage – ExecutionPolicy Restricted – ModulesToImport PrintManagement -VisibleFunctions Get-Printer
      

NoLanguage 会将用户限制为只能运行 cmdlet 和函数,也就是说不能使用脚本块、变量或运算符。–SessionType 的值 RestrictedRemoteServer 会将用户限制为只能使用以下代理函数(proxy functions):Exit-PSSessionGet-CommandGet-FormatDataGet-HelpMeasure-ObjectOut-DefaultSelect-ObjectRestricted 作为 –ExecutionPolicy 参数的值也会阻止脚本运行。请注意,如果您要导入的模块包含 cmdlet,还可以使用 –VisibleCmdlets 参数。

现在我们有了配置文件,就可以注册一个名为 Helpdesk 的新终结点(endpoint):

      Register-PSSessionConfiguration -Name Helpdesk -Path PrintAdmin.pssc –ShowSecurityDescriptorUI
      

Figure1.1

系统将提示您确认是否要配置新的终结点(endpoint)、重新启动 WinRM 服务,并为该终结点配置访问权限。在这个示例中,我将为名为 Helpdesk 的组授予对新终结点的“Execute (Invoke)”权限。别忘了给 Helpdesk 组授予在远程设备上管理打印机的权限,否则 get-printer 将会失败。

如果你再次运行 Get-PSSessionConfiguration ,你就可以看到新端点已列出。

连接到受限端点

现在从远程计算机连接到该端点。使用属于 Helpdesk 组或你在端点上分配了权限的组的用户登录到 Windows 8。打开 PowerShell 提示符并运行下面的命令,将 contososrv1 替换为远程服务器的名称:

      Enter-PSSession -ComputerName contososrv1 -ConfigurationName Helpdesk
      
Figure2

连接到远程服务器后,提示符会相应更改,以表明你正在使用远程设备。输入 get-command 并按 ENTER,你将看到可用函数和 cmdlet 的列表会受到端点的限制。在这个示例中,你只剩下 RestrictedRemoteServer 会话类型允许的 7 个代理函数,以及端点配置文件中指定的 get-printer 函数。

分享到

了解更多

关于作者

Asset Not Found

Russell Smith

IT 顾问

专注于管理与安全技术的 IT 顾问和作者。Russell 拥有超过 15 年的 IT 经验,撰写过一本关于 Windows 安全的书籍,并共同撰写了 Microsoft 官方学术课程(MOAC)系列的相关教材。