gpt4 book ai didi

c++ - Windows 服务与 NamedPipe 之间的访问安全

转载 作者:行者123 更新时间:2023-11-28 05:13:47 24 4
gpt4 key购买 nike

我有一个 C/C++ Windows 服务实现,它部署在两个不同的服务器上,使用 NamedPipe 以便它们可以相互通信。

我遵循最小权限原则,将服务帐户分配给“NT AUTHORITY/NetworkService”,创建具有“读取权限”(A;OICI;GR;;;NS) 的安全描述符的 NamedPipe,阻止匿名访问,阻止所有内置访客,授予登录用户和管理员组所有权限。

服务给我一个“拒绝访问(0x5)”错误。

这是我尝试过的:

  1. 我试图授予“NetworkService”帐户的所有权限。我知道这很糟糕 :( 但只是想看看它是否有效!访问被拒绝

  2. 允许匿名用户读取权限(我读到“NetworkService”帐户向网络上的其他计算机提供匿名凭据)。拒绝访问

该服务正在与我的控制台测试应用程序一起工作 :( 但不是与其他服务一起工作。安全性至关重要,我只希望两个服务器能够相互通信。

谁能告诉我,我是否应该为两个服务器中的每个服务创建一个特定的帐户?

服务器不在域中,所以我不确定如何创建一个网络范围的帐户,或者即使它是可能的。我不太擅长 Windows 管理!

这是使服务相互通信的正确方向吗?

最佳答案

听起来你有设计问题。

当您写到“使用具有‘读取权限’的安全描述符创建 NamedPipe”时,问题应该是“读取权限为谁?”。权限始终与受托人相关联。

在 Windows 中,受托者不存在于真空中。它们总是在某个范围内定义。如果没有中央用户数据库 (Active Directory),那将是每台计算机的本地范围。并且两台计算机具有不同的、不重叠的受托者集。一台机器上的 Administrator 与另一台机器上的 Administrator 无关。

因此,当您向 NetworkService 授予对一台计算机上的 NamedPipe 的所有访问权限时,这可能意味着您向该计算机的 NetworkService 受托人授予了访问权限。 不是来自其他计算机的 NetworkService!

从根本上说,没有主域 Controller 作为共享权限,two Windows PC's just won't trust each other .每个都是自己的安全机构。

关于c++ - Windows 服务与 NamedPipe 之间的访问安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43056895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com