我们在 Windows 2003 域中运行终端服务器场,我发现应用于我们的 TS 服务器的软件限制 GPO 设置存在问题。以下是我们的配置和问题的详细信息:
我们所有的服务器(域控制器和终端服务器)都运行 Windows Server 2003 SP2,并且域和林都处于 Windows 2003 级别。我们的 TS 服务器位于一个 OU 中,我们链接了特定的 GPO 并阻止了继承,因此只有 TS 特定的 GPO 应用于这些 TS 服务器。我们的用户都是远程的,没有工作站加入我们的域,所以我们不使用环回策略处理。我们采用“白名单”方式允许用户运行应用程序,因此只有我们批准并添加为路径或哈希规则的应用程序才能运行。我们将软件限制中的安全级别设置为不允许,强制设置为“除库之外的所有软件文件”。
我发现,如果我给用户一个应用程序的快捷方式,即使它不在“白名单”应用程序的附加规则列表中,他们也能够启动该应用程序。如果我给用户一份应用程序的主要可执行文件的副本并且他们尝试启动它,他们会收到预期的“该程序已被限制......”消息。似乎软件限制确实有效,除了用户使用快捷方式启动应用程序而不是从主可执行文件本身启动应用程序时,这似乎与使用软件限制的目的相矛盾。
我的问题是:有没有其他人看到过这种行为?其他人可以重现这种行为吗?我对软件限制的理解是否遗漏了什么?我是否有可能在软件限制中配置错误?
编辑
稍微澄清一下问题:
没有执行更高级别的 GPO。运行 gpresults 表明事实上,只有 TS 级别的 GPO 被应用,我确实可以看到我的软件限制被应用。没有使用路径通配符。我正在使用位于“C:\Program Files\Application\executable.exe”的应用程序进行测试,并且应用程序可执行文件不在任何路径或哈希规则中。如果用户直接从应用程序的文件夹启动主应用程序可执行文件,则会强制执行软件限制。如果我给用户一个指向“C:\Program Files\Application\executable.exe”的应用程序可执行文件的快捷方式,那么他们就可以启动该程序。
编辑
此外,LNK 文件列在指定的文件类型中,因此它们应被视为可执行文件,这意味着它们受相同的软件限制设置和规则的约束。
所以我终于找到了答案。在我们的软件限制规则中有一条路径规则,如下所示:
%HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ProgramFilesDir%
这允许 Program Files 目录及其子目录中的任何可执行文件不受阻碍地运行。配置软件限制时默认添加此路径。删除此路径规则会导致所有程序被拒绝,即使它们的可执行文件被明确添加为不受限制的路径。
这引出了一个问题:如果 99% 的所有程序都安装到 Program Files 目录,但我想限制某些程序,我如何通过软件限制来实现这一点?
同样重要的是这个问题,除了那些不在程序文件中的程序或可执行文件之外,软件限制到底有什么好处?
我会检查您为用户创建的快捷方式上的 ACL。根据软件限制策略最佳实践:安全策略;安全服务,
您可能想尝试将 LNK 作为指定文件类型删除。即使它们被视为可执行文件,也不应如此。这样,软件限制应该应用于 LNK 文件所针对的可执行文件,而不是 LNK 文件本身。
我经历过你所说的——这很烦人。我很确定默认情况下您的用户可以运行安装在 Program Files 中的应用程序。
您是否尝试过以这种方式限制对具有 NTFS 权限和白名单的应用程序的访问?
然后用户可以拥有他们想要的任何东西的快捷方式,但这对他们没有帮助,因为他们将无法访问该程序。
参考: http: //www.virtualizationadmin.com/articles-tutorials/terminal-services/security/locking-down-windows-terminal-services.html