如何防止用户登录仅用于模拟的帐户?

如何防止用户登录仅用于模拟的帐户?

目前,我有一个用 C# 编写的 Windows 服务(以 LocalSystem 身份运行),它通过使用 DirectoryEntry 添加用户/密码和关联的 UserFlags 来创建模拟所需的用户帐户。然后,它只需使用此帐户使用 LogonUser() 功能执行一些任务(使用模拟)即可 - 效果很好。

但是,此帐户只能由我的服务用于模拟,用户永远不应该能够在本地或通过网络登录(即使他拥有凭据)。

为了实现这一点,我尝试设置本地策略为“拒绝本地登录”和“拒绝从网络访问此计算机”,并添加我的服务创建的用户。但是现在模拟失败,显示以下内容:登录失败:用户未获得此计算机请求的登录类型 (1385)

所以,我想这不是正确的做法...但我需要安全地锁定该帐户,以便它只能由我的服务用于模拟目的,并确保没有其他人可以登录该帐户(即使他们拥有所有凭据)。

LSA 中有什么我可以使用的东西吗?或者使用类似于创建帐户时的 DirectoryEntry 代码?有没有办法允许帐户存在但不允许用户交互登录?

任何帮助都将不胜感激。谢谢,

答案1

我建议你打破常规进程监控从 sysinternals 中找出模拟所需的文件、注册表和网络访问权限。然后反向工作以在本地策略中找到您可以拒绝或直接删除访问权限的最小用户权限分配。我曾多次使用它来排除访问沙地、数据文件、临时目录等 Web 服务器上的安全问题。

—Gft

答案2

根据我的经验,本地登录和模拟是相同的权限(本地登录)并且无法分开。例如,右键单击程序并执行“以不同用户身份运行”与直接以用户身份登录并运行程序相同。

但是,可以授予帐户独立于本地登录权限运行服务的能力,并且您可能会发现,您可以使用用户帐户运行服务,而不是使用本地系统运行服务。可以通过本地系统使用 PSExec 或其他工具/方法创建服务和用户帐户。

最终,我认为您尝试实现目标的方式是不可行的,您需要进行设计更改。祝您好运,如果您找到方法证明我错了,请告诉我。我很想强制某些管理员帐户仅通过“以...身份运行”来工作。

答案3

此程序是否在域上运行?如果是,您可以创建一个服务帐户做你需要做的事。

相关内容