网站搜索

PowerShell:逐步实施恰到好处的管理 (JEA)


您是否一直梦想着微调权限? PowerShell JEA 使之成为可能。用户只看到他应该看到的,只能做他应该做的。只需几个简单的步骤,一切就准备好了。让我们深入了解一下。

什么是 JEA(恰到好处的管理)?

JEA的主要目的是限制权限。我们可以非常精细地指定用户可以做什么。例如,您想限制用户仅重新启动后台打印程序服务,然后选择 JEA。不幸的是,这仅适用于 PowerShell。因此,请记住,目标用户不应首次使用 PowerShell。

这篇文章讲了什么?

在本文中,我将限制 Active Directory 用户 petra 仅在 DC01 上运行 Restart-Service spooler 和 whoami。为此,我将使用配置为 sid-500.com 的 Active Directory 域控制器的 Windows Server 2016 (DC01)。此外,我将使用加入域 sid-500.com 的 Windows 10 工作站。所有测试均在此计算机上执行。

文章分为4步:

  • 创建PS会话配置文件
  • 为 JEA 创建文件夹
  • 创建能力文件
  • 注册配置

最后是佩特拉的测试。我想现在是时候开始了。

为后台处理程序管理员组创建 PS 会话配置文件(pssc 文件)

如果我们立即创建文件并稍后再讨论它,那就更好了——如果它已经存在的话。有时先做练习然后谈论我们正在做的事情更有意义。 ? 和往常一样在我的博客上 - 一切都带有屏幕截图。

我已登录域控制器 DC01。


New-PSSessionConfigurationFile -Path 'C:\Program Files\WindowsPowerShell\spooler_conf.pssc'

我们现在做了什么?默认文件已创建。我们来看看这个文件。


notepad 'C:\Program Files\WindowsPowerShell\spooler_conf.pssc'

在此文件中,您可以指定是否要记录所有内容以及您的配置可供哪些用户或组使用。对于更改,请从行中删除#。

我的目标是只有 Spooler_Admins 组成员的用户才能重新启动后台处理程序服务并运行 whoami。这意味着我必须修改这个文件。

首先我换作者。不起眼的。

然后我将会话类型更改为 RestrictedRemoteServer。这允许执行以下命令:Exit-PSSession、Get-Command、Get-FormatData、Get-Help、Measure-Object、Out-Default 和 Select-Object。

然后,我指定一个日志文件夹(所有用户会话都将通过 PowerShell 事务日志记录在此文件夹中)并激活 RunAsVirtualAccount 功能(可选)。如果用户登录,则该用户使用临时虚拟帐户。

确保成绩单目录存在!

现在我们来到最重要的部分:指定功能设置的名称。

请注意,RoleCapability 的名称必须与第三部分中的文件名匹配。

保存文件并关闭它。

为 JEA 创建文件夹

在这一部分中,我们为下一部分中将使用的 JEA 配置文件创建一个文件夹。


New-Item -Path 'C:\Program Files\WindowsPowerShell\Modules\JEA\RoleCapabilities' -ItemType Directory

这就是本节的内容。

为后台处理程序管理员创建 PS 角色功能文件(psrc 文件)

这是最有趣的部分。在这里我们配置他们可以做什么。将此文件命名为 spooler_admins 很重要。请记住,我们已将会话配置文件配置为角色功能= spooler_admins!


New-PSRoleCapabilityFile -Path 'C:\Program Files\WindowsPowerShell\Modules\JEA\RoleCapabilities\spooler_admins.psrc'

接下来打开文件。


notepad 'C:\Program Files\WindowsPowerShell\Modules\JEA\RoleCapabilities\spooler_admins.psrc'

请随意更改作者、描述等。我将专注于最重要的设置。我们希望限制后台打印程序管理员只能运行 Restart-Service 和 whoami 命令。为此,我必须修改 Cmdlet 部分,以使相应的命令对后台处理程序管理员组可见。

接下来我想允许运行 whoami。 Whoami 不是 cmdlet,而是外部命令。

就是这样。保存文件并关闭它。

注册配置

最后,我们必须激活它。选择名称并输入配置文件的路径。确保该组已经存在!


Register-PSSessionConfiguration -Name Spooler_Admins -Path 'C:\Program Files\WindowsPowerShell\spooler_conf.pssc'

读者了解更多。我们必须重新启动Windows远程管理服务。


Restart-Service WinRM

我们完成了。现在考验即将来临。

测试配置

用户 petra 登录到加入我的域的 Windows 10 计算机。请记住,petra 是 spooler_admins 组的成员。开始吧。

Petra 尝试通过 PowerShell 远程会话登录。为此,她必须指定配置名称。


Enter-PSSession -ComputerName dc01 -ConfigurationName spooler_admins

令人惊讶……令人惊讶的是她竟然进来了。但是她可以做什么呢?很好,重启服务就在那里。

并且后台处理程序重新启动工作......

她可以重新启动任何其他服务吗?没有。

她应该能够运行 whoami ……

我们已经配置了一个转录日志…位于 C:\Transcripts…

就是这样。我们完成了。

结论

这个出色的安全功能的唯一缺点是一切都必须在 PowerShell 中完成。正如我在我的一篇贡献中已经提到的,我的教学经验是 7/10 仍然不熟悉 PowerShell。是时候改变它了。 ?

希望这对您有所帮助且有趣。

相关文章