当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Windows 远程 WMI 安全

作者:精品下载站 日期:2024-12-14 06:19:35 浏览:16 分类:玩电脑

Windows 远程 WMI 安全


本地 WMI 查询很容易实现和排除故障,但远程 WMI 查询则是另一回事了。 事实上,为没有管理员权限的用户设置安全的远程 WMI 查询是一项艰巨的任务。

这个博客可以提供帮助。我将引导您完成用于使标准域用户能够在运行 Microsoft SQL Server 2016 的 Windows Server 2012 R2 上查询 Microsoft SQL Server WMI 命名空间类的步骤。

概述

以下是我们需要完成的步骤:

  1. 创建标准AD用户。
  2. 检查用户的权限。
  3. 设置远程 Microsoft SQL Server。
  4. 配置 DCOM 安全设置以允许远程访问。
  5. 设置 WMI 控件属性。
  6. 修改DACL。

步骤1 创建标准AD用户。

使用Active Directory 用户和计算机小程序创建新用户。不要让他们成为域用户以外的任何组的成员。

[玩转系统] Windows 远程 WMI 安全

[玩转系统] Windows 远程 WMI 安全

步骤 2. 检查用户的权限。

假设我们需要查询的 WMI 命名空间类是 ROOT\InteropROOT\Microsoft。使用 WMI Explorer(如下所示),我们可以查看命名空间中的 WMI 类并遍历每个类的方法。通过使用新帐户登录,我们可以快速验证它对于我们要查询的两个 WMI 命名空间类没有权限。

[玩转系统] Windows 远程 WMI 安全

步骤 3. 设置远程 Microsoft SQL Server。

接下来,确保远程服务器满足以下要求:

  • 确保 Windows 防火墙中的以下端口处于开放状态:端口 135 和动态端口范围 49152-65535
  • 在 Windows 服务小程序中,检查 Windows Management Instrumentation 服务是否正在运行并设置为自动启动。
  • 在 Windows 服务小程序中,确保远程过程调用 (RPC) 服务正在运行并设置为自动启动。
  • 确保已配置并启用分布式组件对象模型 (DCOM)。

步骤 4. 配置 DCOM 安全设置以允许远程访问。

要配置 DCOM 安全设置以允许远程访问,请运行组件服务小程序 (dcomcnfg.exe)。

4a.打开“我的电脑属性”对话框。

导航至我的电脑节点,然后右键单击属性:

[玩转系统] Windows 远程 WMI 安全

4b.转到 COM 安全选项卡。

我的计算机属性屏幕上,导航到COM安全选项卡。我们需要编辑访问权限以及启动和激活权限的限制。

[玩转系统] Windows 远程 WMI 安全

4c.设置访问权限。

访问权限部分中,点击编辑限制。 访问权限对话框中,进行以下更改:

  • 群组或用户名部分中,点击添加按钮并添加在步骤 1 中创建的域用户。
  • 每个人的权限部分中,确保本地访问远程访问允许复选框均已选中。

单击确定保存您的更改。

[玩转系统] Windows 远程 WMI 安全

4d.设置启动和激活权限。

返回我的计算机属性屏幕的启动和激活权限部分,点击编辑限制。 在启动和激活权限对话框中,进行以下更改:

  • 群组或用户名部分中,点击添加按钮并添加在步骤 1 中创建的域用户。
  • 每个人的权限部分,确保所有选项(本地启动、远程启动、本地激活远程激活)。

[玩转系统] Windows 远程 WMI 安全

注意:如果您未能进行这些更改,则在对远程服务器执行 WMI 查询时,您将收到错误0x80070005 E_ACCESS_DENIED。 有关排查 WMI 访问被拒绝错误的更多信息,请参阅此处。

步骤 5. 设置 WMI 控件属性。

要设置所需命名空间的权限,请运行WMI 控制小程序 (wmimgmt.msc)。

5a.转到属性对话框。

在 WMI 控制小程序中,右键单击 WMI 控制(本地) 节点,然后选择属性

[玩转系统] Windows 远程 WMI 安全

5b.选择一个命名空间。

WMI 控制(本地)属性窗口中,选择您要查询的第一个命名空间。您可能还记得,在我们的示例中,这就是 InteropMicrosoft 命名空间。让我们从 Microsoft 命名空间开始。我们选择它并点击安全按钮。

[玩转系统] Windows 远程 WMI 安全

5c.添加您创建的用户并授予他们命名空间的权限。

组或用户名部分中,使用添加按钮添加在步骤 1 中创建的用户。然后选择该用户,并在下部部分中选中 >允许每个所需权限的框。

[玩转系统] Windows 远程 WMI 安全

5d。启用权限继承。

由于命名空间中的类不会继承命名空间级别设置的权限,因此我们需要单击高级按钮。在高级安全设置对话框中,转到权限标签,然后点击添加按钮添加在第 1 步中创建的用户。

[玩转系统] Windows 远程 WMI 安全

5e.设置剩余的命名空间。

对于您希望能够查询的每个其他命名空间,重复步骤 5b-5d。

步骤 6. 修改 DACL。

下一步是修改自主访问控制列表 (DACL) 并向第 1 步中创建的用户授予权限。您可以在此处找到有关 DACL 安全性的更多信息。

6a.获取用户的SID。

首先,获取用户的 SID,如下所示:

[玩转系统] Windows 远程 WMI 安全

6b.授予用户对 SCMANAGER 和 MSSQLSERVER 服务的权限。

我们需要将用户的SID添加到SCMANAGER和MSSQLSERVER服务中。但首先,让我们将这些服务的当前权限提取到一个文本文件中,该文件将作为备份,以防我们需要恢复更改。我们可以使用服务控制器实用程序 (sc.exe) 来做到这一点:

C:\SC.exe SDSHOW SCMANAGER > SCMANAGER.TXT

C:\SC.exe SDSHOW MSSQLSERVER > MSSQLSERVER.TXT

现在我们可以使用 SDSET 选项添加每个服务所需的用户权限:

管理器

从文本文件中获取原始设置:

"D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)(A;;CC;;;AC)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)"

使用上面的原始输出,我们为具有所需权限的用户添加一个新的访问控制条目 (ACE),并使用 SC SDSET SCMANAGER 命令进行更改。新的 ACE 必须添加在 D: 之后和 S: 之前,并且看起来像 (A;;CCLCRPRC;;;S-1-5-21-2248144405-2051730382-3067780714-3618)

SC.exe SDSET SCMANAGER "D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPRC;;;S-1-5-21-2248144405-2051730382-3067780714-3618)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)(A;;CC;;;AC)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)"

SQL服务器

同样,从导出的文件中获取 MSSQLSERVER 的原始 DACL:

"D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"

然后使用如下所示的 SC SDSET MSSQLSERVER 命令将具有所有权限的 SID 添加到 MSSQLSERVER 服务:

C:\SC SDSET MSSQLSERVER "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-2248144405-2051730382-3067780714-3618)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU) S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"

成功!

现在,您可以作为标准域用户对远程 Microsoft SQL Server 执行 WMI 查询。

[玩转系统] Windows 远程 WMI 安全

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯