2

是否可以使用 DACL 字符串选择这样的安全描述符,使得文件只能由 Windows 服务打开,而不能由普通进程打开,即使该进程由本地管理员帐户运行?

为了澄清,我只需要让非技术用户在记事本中打开它并篡改它相当困难。它不需要与愿意花费一个月时间进行逆向工程和破解它的程序员对抗。

我更喜欢使用 DACL 而不是锁定文件来实现这一点,因为这样我的 Windows 服务就不需要一直运行来保护文件。

4

2 回答 2

3

本地管理员帐户 = 上帝(至少在盒子上)。没有办法做到这一点。

您可以为您的服务定义一个特殊的特权帐户来运行,并使受保护文件上的 ACL 只允许该用户(以及所有机器管理员)访问。您可以禁止使用该服务帐户进行交互式登录。

如果您主要关心的是被交互式用户篡改,您可能需要一个策略,使本地用户默认不以本地管理员权限运行。不幸的是,您不能允许“部分”本地管理员权限 - 要么全有,要么全无。

于 2013-02-01T14:38:11.007 回答
1

我对 DACL 的了解还不够,无法说明您是否或如何使用这些来完成您想要的。除了将其限制为本地管理员帐户之外,我还可以想到一些可以使某人更难篡改文件的方法:

  1. 让您的服务自动启动,并立即打开文件,没有共享选项。只要您的服务打开它,另一个进程就无法打开它。
  2. 计算文件内容的哈希值加上硬编码到您的服务中的盐,并将其存储在其他地方,例如,在另一个文件中、注册表中,甚至在线中。下次打开文件时,请验证哈希值,这将告诉您自上次打开文件以来是否有人篡改过该文件。

这些都不是万无一失的,但听起来你的目标只是让它变得更难。没有万无一失的方法可以阻止具有管理员权限的用户。

于 2013-02-01T14:29:08.873 回答