为什么以本地系统身份运行的进程访问 UNC 共享会被视为 NT AUTHORITY\ANONYMOUS LOGON?

为什么以本地系统身份运行的进程访问 UNC 共享会被视为 NT AUTHORITY\ANONYMOUS LOGON?

我有一个在 SERVER_X 上作为本地系统运行的 Windows 服务,它正在尝试访问在 SERVER_Y 上托管的 UNC 共享上的脚本。

根据下面的链接,我已授予 SERVER_X 的计算机帐户对 SERVER_Y 上的 UNC 的访问权限。

如何授予 LocalSystem 帐户网络访问权限?

如何授予域网络中本地系统帐户对共享文件夹的访问权限

但是,Windows 服务无法访问该文件(拒绝访问错误)。

dir \\SERVER_X\share
Access is denied.

在安全事件日志(在 SERVER_Y 上)中,我看到 SERVER_X 正尝试以 NT AUTHORITY\ANONYMOUS LOGON 身份访问 UNC 共享。我认为我应该在安全事件日志中看到计算机帐户(即 DOMAIN\SERVER_X)。

安全事件

两台服务器都是 Windows Server 2003 SE SP2。

任何帮助将不胜感激!

答案1

我找到了这个微软博客这让我开始考虑使用服务器的主机名与 CNAME。

具体来说,以下是片段:

如果您回答“DNS名称解析”,那么您的答案是正确的。如果环境中的名称解析无法正常工作,则会导致请求 Kerberos 票证的应用程序实际上请求错误服务主体名称的服务票证。所以如果你还记得我尝试连接到的远程文件服务器是“ltwre-chd-mem1.chd.litwareinc.com”,但是 DNS 服务器找到了“ltwre-chd-mem1.litware.com”的记录。由于我们在“litwareinc.com”域中找到了远程文件服务器,因此 Kerberos 客户端请求“cifs/ltwre-chd-mem1.litwareinc.com”的服务票证,如 Kerberos 票证请求中所述,并且 KDC 以 KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN 进行响应。

和...

实际上,有几种不同的方法可以“解决”这个问题:

a. 找出 DNS 错误解析机器名的原因。

我。此名称是否有 HOST 或 CNAME 记录?

ii. 您是否为 WINS 查找配置了 DNS 区域?

和...

如果您发现无法修复 DNS 问题,那么下一个最佳解决方案就是让应用程序使用服务器的 FQDN。请记住,应用程序供应商需要参与才能使用此修复程序。

笔记:在 Windows Server 2008 主机上,我可以成功使用 CNAME 执行 dir 命令。

解决方案 1:

使用主机名而不是 CNAME。

已验证,如果我从 Windows Server 2003 主机使用主机名(即\\HOSTNAME\share)而不是 CNAME(即\\CNAME\share)访问 UNC 共享,则访问将正常工作。

示例-有效:

dir \\HOSTNAME\share

示例 - 不起作用:

dir \\CNAME\share
Access is denied.

解决方案 2:

为 CNAME 设置 SPN(服务主体名称)。

setspn -a HOST/CNAME SERVER

做完这个之后就dir \\CNAME\share起作用了。

另请参阅如何配置 Windows 计算机以允许使用 DNS 别名进行文件共享了解更多信息。

答案2

因为当您访问 UNC 共享而没有事先建立网络凭据时,您最终会成为匿名用户。当地的SYSTEM 帐户显然不是一个有效的网络登录。

答案3

在用户帐户下运行该服务以绕过该问题。

相关内容