Windows Server 2008 R2 上的远程 WMI 连接问题

Windows Server 2008 R2 上的远程 WMI 连接问题

我刚刚全新安装了 Windows Server 2008 R2 (x64)。我有一个应用程序使用远程 DCOM 通信与服务器通信并查询一些 WMI 对象。当我使用管理员登录进行 WMI 通信时,一切都很好。

当我在管理员组中添加新用户时(通过在新用户创建 GUI 中选择用户为管理员),它似乎不起作用。我已向用户提供 DCOM 远程访问权限(使用http://jintegra.intrinsyc.com/support/com/doc/remoteaccess.html)以及 WMI 访问权限(使用http://www.poweradmin.com/help/enableWMI.aspx)。我还在 Server 2008 R2 上找到了叛徒注册表项,并将新创建的用户设为所有者并授予所有权限(使用http://www.opennms.org/wiki/WmiConfiguration#Windows_2008_R2)。

即使如此,当我尝试连接时,也无法完全连接。我知道这一点是因为我查看了 Windows 安全日志,并且可以看到成功的凭据验证、特殊登录和登录事件。

但是,我就是无法继续。我收到错误,无法连接到主机,然后我被注销(从安全日志中找到)。

我甚至不知道哪个服务不允许我访问。有人以前处理过这个问题吗?如果你能快速回答,那就太好了,否则,请告诉我如何正确读取安全日志或其他日志以找出哪个服务拒绝我访问。

此外,所有 3 个防火墙(域/公共/私人)都已关闭。

非常感谢!!

答案1

您可能还需要为尝试查询的对象设置 ACL。请参阅http://msdn.microsoft.com/en-us/library/aa374872%28v=vs.85%29.aspx

我以前必须这样做才能访问 MS 服务、事件日志等。

编辑:

简而言之,您可能需要使用管理帐户为您尝试访问的 WMI 对象设置 ACL,然后才能通过非特权帐户访问它们。

这是我在我们的环境中设置的方式:

配置 DCOM

  • 在要管理的服务器上,单击“开始”,单击“运行”,键入 DCOMCNFG,然后单击“确定”。
  • 在“组件服务”对话框中,展开“组件服务”,展开“计算机”,然后右键单击“我的电脑”,然后单击“属性”。
  • 在“我的电脑属性”对话框中,单击“COM 安全”选项卡。
  • 在启动和激活权限下,单击编辑限制。
  • 在启动权限对话框中,选择“分布式 COM 用户”。在用户权限下的允许栏中,选择远程启动并选择远程激活,然后单击确定。
  • 在访问权限下,单击编辑限制。
  • 在“访问权限”对话框中,选择“分布式 COM 用户”。在“用户权限”下的“允许”列中,选择“远程访问”,然后单击“确定”。
  • 将用户帐户添加到要管理的服务器上的计算机管理、本地用户和组中的分布式 COM 用户组。
  • 将用户帐户添加到要管理的服务器上的计算机管理、本地用户和组中的性能日志用户组中。

配置 WMI

  • 在要管理的服务器上,单击“开始”,单击“运行”,键入 wmimgmt.msc,然后单击“确定”。
  • 在控制台树中,右键单击“WMI 控制”,然后单击“属性”。
  • 单击“安全”选项卡。
  • 选择根命名空间,然后单击安全。
  • 在“安全”对话框中,单击“添加”。
  • 在“选择用户、计算机或组”对话框中,输入用户帐户。单击“检查名称”按钮以验证您的输入,然后单击“确定”。
  • 在“安全”对话框的“权限”下,为用户帐户选择“启用帐户”和“远程启用”。
  • 确保权限传播到所有子命名空间。

上述大部分操作都可以通过组策略来完成(自动化)。

现在要设置服务的 ACL,您可以执行以下操作:

sc sdshow SCMANAGER

... 获取服务管理器的 ACL。这将处理对大多数 Windows 服务的访问。然后您需要为上面的用户帐户添加一个 ACL,如下所示:

sc sdset SCMANAGER D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)(A;;CCLCRPRC;;;S-1-5-21-000000000-0000000000-00000000000-0000)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)

...其中粗体部分是发出请求的用户帐户的 UID。

事件日志的工作方式略有不同,但您可以使用“wevtutil”来设置其 ACL。其他对象可能也有不同的设置方法。

逐步排除故障,首先使用您的用户帐户在本地运行查询,然后让它们在远程运行。

相关内容