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

Eli*_*der 2 dcom wmi windows-server-2008-r2 user-permissions

我刚刚全新安装了 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 个防火墙,域/公共/私人都已关闭。

非常感谢!!

小智 6

您可能还需要为您尝试查询的对象设置 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-0000000000-0000 )S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;; ;WD)

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

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

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