4

典型的 ISP 设置。一台服务器是 Web 服务器,另一台是 DB SQL 服务器。在两台机器上都创建了一个本地管理员帐户,比如说 XYZ。所以当我远程登录时,我要么是 WebServer\XYZ 要么是 DBServer\XYZ,这取决于我登录的位置。

现在,当我使用 Windows 身份验证登录到 DBServer 上的 SQL Server SSMS 并执行“S​​ELECT SUSER_NAME()”时,我得到了 DBServer\XYZ。这是有道理的,因为它表明了我使用这些凭据登录的事实。

现在,转到 WebServer。我以 WebServer\XYZ 身份远程登录。我已经在那里安装了 SQL 客户端组件。当我启动 SSMS,选择 DBServer,使用 Windows 身份验证登录并执行“S​​ELECT SUSER_NAME()”时,我以某种方式得到 DBSERVER\XYZ,而不是我认为应该是 WebServer\XYZ。

不知何故,来自 WebServer 的 XYZ 变成了来自 DBServer 的 XYZ。这是为什么?这是怎么发生的?当然,这不能只是因为名字碰巧是一样的吗?

我听说过受信任的域,但这两台机器都不是域控制器,所以我无权访问该信息。如果没有 GUI 工具,我如何判断它是否受信任?

我问这个问题的原因是因为,我试图在我的 XP 笔记本电脑上实现同样的东西(使用 Virtual PC),所以我可以模仿生产环境,但我没有任何运气。

4

2 回答 2

3

XYZ的帐户似乎在两台机器上都有相同的密码,并且它们不是域的一部分。

WebServerXYZ作为用户名发送并成功回答所有密码挑战,因为密码确实匹配。

DbServer,当然,认为你是DbServer/XYZ,因为它不知道其他人。

当您尝试从另一台机器访问一台独立机器时,会发生完全相同的事情SMB。如果您的用户名和密码匹配,则您成功。

于 2009-02-19T17:40:41.543 回答
3

机器之间的 NTLM 挑战比@Quassnoi 表示的要复杂一些,但它是相似的。这些机器很可能在同一个域或受信任的域中,但您使用的帐户是本地机器帐户,仅限于本地机器的安全访问管理。

模式为 machinename\userid 的本地 SAM 帐户是不可传播的。当您尝试使用该帐户对外部资源进行身份验证时,您会遇到一系列协商后的回退,如下所示:

  1. 传递当前域/用户名/密码哈希令牌 - 它会失败,该帐户不受信任
  2. 回退 - 恢复传递的用户 ID + 密码哈希
  3. 回退 - 恢复为匿名凭据连接。

也可以通过配置禁用回退,防止匿名身份验证是很常见的。

正如@Quassnoi 在这种情况下指出的那样,您设法使用#2 后备登录。

要使帐户凭据能够传播,您需要满足以下条件:

  1. 机器必须是相互之间至少具有单向信任的域的成员(它们不一定必须是同一域的成员)。
  2. 使用域帐户 - 不是本地计算机帐户 - 看起来像域名\用户 ID。一种特殊情况是网络服务帐户,它在域场景中具有代理帐户 - domainname\machinename$。

你如何判断你的机器是否是域的成员?如果您对机器进行了交互式登录,那将非常容易。有几个策略

  1. 系统控制面板将以交互方式显示工作组或域成员。(在开始菜单中右键单击计算机上的属性)
  2. 在命令行中,IPCONFIG /ALL还将显示默认 DNS 前缀,该前缀通常与您的域名相同。

我怀疑您的 ISP 会创建一个域只是为了便于管理和监控他们的机器。他们是否允许您创建域帐户是一个不同的问题。

于 2009-02-19T19:35:00.257 回答