目前我有一个用C#(以LocalSystem身份运行)编写的windows服务,它使用DirectoryEntry添加用户/密码和关联的UserFlags来创build一个模拟所需的用户帐户。 然后,只需使用此帐户使用LogonUser()function执行一些任务(使用模拟) – 完美工作。
然而,这个帐户只能用于我的服务模仿,用户不应该能够在本地或通过networkinglogin(即使他有证书)。
为了达到这个目的,我尝试设置“本地拒绝login”和“拒绝从networking访问这台计算机”的本地策略,并添加了我的服务创build的用户。 但是现在,模拟失败,出现以下情况:login失败:用户尚未在此计算机上被授予所请求的logintypes(1385)
所以,我猜这不是正确的做法…但我需要确保locking该帐户,以便它只能被我的服务用于模拟目的,并确保没有其他人可以永久login帐户(即使他们拥有所有的凭据)。
我可以使用LSA吗? 或者使用与帐户创build时类似的DirectoryEntry代码? 有没有办法允许帐户存在,但不允许用户交互式login?
任何帮助将非常感激。 谢谢,
我build议从sysinternals中打开Process Monitor ,找出模拟需要的文件,registry,networking访问。 然后向后查找本地策略中的最小用户权限分配,您可以拒绝或直接删除访问权限。 我已经多次用它来解决访问sandlots,数据文件,临时目录what-have-y的web服务器上的安全问题。
-Gft
这是我的经验,本地login和模拟是相同的权限(本地login),不能分开。 即右键单击一个程序,并以“以不同的用户身份运行”与用户直接login并运行该程序相同。
可以授予帐户作为独立于本地login权限的服务运行的能力,但是您可能会发现,不是使用本地系统运行服务,而是可以使用用户帐户运行该服务。 服务和用户帐户可以通过本地系统通过PSExec或其他工具/方法创build。
最终,我认为你试图完成你的目标的方式是不可能的,你需要做一个devise更改。 祝你好运,如果你find一个方法来certificate我错了,请告诉我。 我很想强制某些pipe理员帐户只能通过“运行”工作。
这个程序是否在域上运行? 如果是这样,你可能会创build一个服务帐户来做你所需要的。