DetailPage-MSS-KB

知识库

文章编号: 103390 - 最后修改: 2014年3月14日 - 修订: 2.0

 

本页

下面是一种简化的算法,它解释了如何观察到 Windows 帐户验证到函数中使用 NTLM 协议的网络访问。它通过服务器消息块 (SMB) 协议访问使用作为示例,但它适用于所有其他服务器应用程序支持 NTLM 身份验证。这一讨论不涉及此过程的内部工作原理。使用此信息,可以预测在确定性的情况下 Windows 网络登录行为。
使用 Kerberos 时对用户进行身份验证,并获得对服务器资源的访问,过程是非常不同于 NTLM 的用途。有关详细信息,请访问下面的 Microsoft TechNet Web 站点:
http://technet2.microsoft.com/WindowsServer/en/Library/f5c70774-25cd-4481-8b7a-3d65c86e69b11033.mspx (http://technet2.microsoft.com/WindowsServer/en/Library/f5c70774-25cd-4481-8b7a-3d65c86e69b11033.mspx)
请记住本地数据库域数据库,并在域控制器上的唯一数据库。但是,在其他服务器和所有的计算机上,本地数据库与域控制器不同。

背景信息

当两个基于 Windows Server 2003 的、 基于 Windows XP 的或在基于 Windows 2000 的计算机通过网络进行通信时,它们使用称为服务器消息块 (SMB) 的高级别协议。SMB 命令嵌入在等 NetBIOS 增强的用户界面 (NetBEUI) 或 TCP/IP 传输协议。例如,当客户端计算机执行NET USE命令,"SMB 会话设置和 X"帧发送出去。

在 Windows 中,"会话安装程序"SMB 包括用户帐户、 加密的密码和登录域的哈希函数。域控制器会检查所有这些信息,以确定客户端是否具有权限才能完成的NET USE命令。

算法

Windows 客户端计算机向服务器发送以下命令:
   NET USE x: \\server\share
		
Windows 客户端计算机发送包含其登录域、 用户帐户和密码"会话安装程序"SMB。

检查服务器的域名或计算机名指定的 SMB。如果名称服务器的名称,则运行以下算法:
    It checks its own domain database or computer database for
        a matching account.
    If it finds a matching account then
        The SMB password is compared to the domain database password or the computer database password.
        If  the password matches then
            The command completed successfully.
        If  the password does NOT match then
            The user is prompted for a password.
                The password is retested as above.
            System error 1326 has occurred. Logon failure: unknown
            user name or bad password.
        End
    If  it does NOT find the account in the domain Security Accounts Manager (SAM) database or computer SAM database then
        Guest permissions are tested.
        If  the guest account is enabled
            The command completed successfully.
        If  the guest account is disabled
            (* See Note a).
            The user is prompted for a password.
            System error 1326 has occurred. Logon failure:
                unknown user name or bad password.
        End
		
如果域 SMB 中指定一个服务器信任,则运行以下算法:
    The server will do pass-through authentication. The
        network logon request will be sent to a server that has a domain controller role in the
        specified trusted domain.
		
如果没有设置安全通道,则运行以下算法:
The trusted domain controller checks its own domain database
        for a matching account.
    If the trusted domain controller finds a matching account, then
       NOT for Windows 2000 and later versions:
    It determines whether the account is a local or global account.
       If the account is local, then
           Guest permissions on the original server are tested.
           If the guest account is enabled
               The command completed successfully.
           If the guest account is disabled
               (* See Note a) The user is prompted for a password.
               System error 1326 has occurred. Logon failure:
               unknown user name or bad password.
        End
        If the account is global (the only option for Active Directory)
           The SMB password is compared to the domain database
               password.
           If  the password matches, then
               The command completed successfully.
               (* See Note b)
           If  the password does NOT match, then
               The user is prompted for a password.
                   The password is retested as above.
               System error 1326 has occurred. Logon failure:
               unknown user name or bad password.
       End
    If the trusted domain controller does NOT find the account in the trusted domain controller
           database, then
       Guest permissions are tested on the original server, not the trusted domain.  (* See Note c)
       If  the guest account is enabled
           The user will have original server guest access.
           The command completed successfully.
       If  the guest account is disabled
           (* See Note a) The user is prompted for a password.
           System error 1326 has occurred. Logon failure:
           unknown user name or bad password.
    End

重要

下列情况下讨论的方案,其中的客户端使用不同的用户域中的服务器都有,也知道。NTLMv2 身份验证协议进行协商时此不匹配问题。NTLM v2 在使用密码 salt,并由客户端在此盐使用用户的域。

当服务器获取信息,并在本地数据库中查找用户时,服务器将使用本地数据库的名称来计算 salt 值和哈希。因此,如果"源域"作为客户端发送是空的或未知的域,盐,因此该密码哈希将不匹配。在这些情况下,身份验证尝试将失败,并"未知的用户名或错误密码"(STATUS_LOGON_FAILURE) 错误。审核事件的企图都将报告"不正确的密码,"STATUS_WRONG_PASSWORD 符号。

样本事件:
登录名: 安全
来源: Microsoft 的 Windows 的安全性审核
事件 ID: 4625
任务类别: 登录
级别: 信息
关键字: 审核失败
计算机: 计算机 1 服务器
说明:
帐户登录失败。

主题:

安全 ID: 空 SID
帐户名称:-
帐户域:-
登录 ID: 0x0

登录类型: 3

失败的登录帐户:

安全 ID: 空 SID
帐户名: ntadmin
帐户域: 客户端-计算机 1

失败的信息:

失败原因: 未知的用户名或密码错误。
状态: 0xc000006d
子状态: 0xc000006a
...

身份验证的详细的信息:

登录过程: NtLmSsp
身份验证程序包: NTLM
过的服务:-
包名称 (仅适用于 NTLM):-
密钥长度: 0

若要避免这种情况下,您必须包括明确在客户端上正确的域名。有关驱动器映射上的工作组方案,如下所示:
网络使用 x: \\server-computer1\data /u:server-computer1\ntadmin *
如果 SMB 中指定的域是未知的服务器 — — 例如,如果指定了域,但不被服务器识别为受信任的域或者它的域控制器 — 运行下面的算法:
    It  will check its own account database for
        a matching account
    If  the server finds a matching account, then
        The SMB password is compared to the domain database password or the computer database password.
        If  the password matches, then
            The command completed successfully.
        If  the password does NOT match, then
            The user is prompted for a password.
                The password is retested as above.
            System error 1326 has occurred. Logon failure: unknown
            user name or bad password.
    End
    If  it does NOT find the account in the domain database then
        guest permissions are tested.
        If  the guest account is enabled
            The command completed successfully.
        If  the guest account is disabled
            System error 1326 has occurred. Logon failure:
            unknown user name or bad password.
    End
		
SMB 中指定的域是否为 NULL,即未指定任何域,请运行下面的算法:
    The server will treat this as a local network logon. The server
        will test for a matching account in its own database.
    If  it finds a matching account, then
        The SMB password is compared to the SAM database password.
        If  the password matches, then
            The command completed successfully.
        If  the password does NOT match, then
            The user is prompted for a password.
                The password is retested as above.
            System error 1326 has occurred. Logon failure: unknown
            user name or bad password.
    End
    If  it does NOT find the account in the local SAM database AND
      LsaLookupRestrictIsolatedNameLevel=0, then (* See Note d)
        The server will simultaneously ask each domain that it trusts whether it has account that
            matches the SMB account.
        The first trusted domain to reply is sent a request to
            perform pass-through authentication of the client
            information.
        The trusted domain will look in its own database.
        If  an account that matches the SMB account is found, then
            The trusted domain determines whether the account is a local or global
                account.
           Not for Windows 2000 and later versions:
            If  the account is local then
                Guest permissions on the original server are tested.
                If  the guest account is enabled
                    The command completed successfully.
                If  the guest account is disabled
                The user will be prompted for a password.
                Regardless of what password is entered, the user will receive
                    "Error 5: Access has been denied."
            End
            If  the account is global (the only option for Active Directory)
                The password that was specified in the SMB is compared
                    to the SAM database password.
                If  the password matches, then
                    The command completed successfully.
                If  the password does NOT match, then
                    The user is prompted for a password.
                        The password is retested as above.
                    System error 1326 has occurred. Logon failure:
                    unknown user name or bad password.
            End
    If  no trusted domains respond to the request to identify the
        account, then
        Guest permissions are tested on the original server,
            not the trusted server.
        If  the guest account is enabled
            The command completed successfully.
        If  the guest account is disabled
            System error 1326 has occurred. Logon failure:
            unknown user name or bad password.
    End
		

注释

  1. 如果禁用来宾帐户,并且用户不会不 havean 帐户,服务器仍将请求一个密码。虽然没有密码 willmeet 其要求,服务器仍将作为 securitymeasure 请求一个密码。这种安全措施,确保未经授权的用户无法 tellthe 案例之间的差异,其中存在一个帐户和帐户处存在时。将始终为该帐户存在密码无论动态提示用户。
  2. 在这种情况下,从受信任的域,在响应中返回以下信息: 域 SID、 用户 ID、 全局 GroupsMemberships、 登录时间、 注销时间、 KickOffTime、 全名、 密码 LastSet、 密码可以更改标记、 密码必须更改标记、 用户脚本、 配置文件路径、 主目录和错误密码计数。
  3. 如果没有找到帐户受信任的域上,操作系统必须使用本地来宾帐户以保证一致的 behaviorfor 身份验证服务器。
  4. 有关如何通过使用 LsaLookupRestrictIsolatedNameLevel 注册表项来限制独立外部的受信任域中的名称的搜索的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    818024  (http://support.microsoft.com/kb/818024/ ) 如何通过使用 LsaLookupRestrictIsolatedNameLevel 注册表项限制的隔离外部的受信任域中的名称查找
  • 受信任的域上的来宾帐户将永远不会提供。
  • 实际的内部过程是比此处所述的 thealgorithms 更复杂。
  • 这些算法不讨论的实际机制 ofpass 通过身份验证。 有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    102716  (http://support.microsoft.com/kb/102716/ ) 在 Windows 中的 NTLM 用户身份验证
  • 这些算法不讨论在 Windows Server 2003 和 Windows XP 和 Windows 2000 中使用密码 encryptionprocess。源自 aone 路密码哈希的二进制大对象 (BLOB) 作为身份验证请求的一部分发送。该 BLOB 的 Thecontent 将取决于为登录选择的身份验证协议。
  • 本文不讨论 theMicrosoft 身份验证模块的内部工作原理。
  • 这些算法假定 guest 帐户,whenenabled,不使用密码。默认情况下,来宾帐户不具有 Windows Server 2003,Windows XP 和 Windows 2000 中的 apassword。如果指定 guestaccount 密码,则该来宾发送 SMB mustmatch 中的用户密码的帐户密码。

示例

以下是这些操作中的算法的示例。

示例 1

您使用相同的帐户名和从头开始域域帐户数据库中的密码登录到该计算机。从头开始域的域控制器的\\SCRATCH NET USE命令运行时,该命令已成功完成。信任从头开始域域的域控制器的\\NET NET USE命令运行时,您会收到以下错误消息:
发生系统错误 1326年。登录失败: 未知的用户名或密码不正确。
\SCRATCH-DOMAIN\USER1 帐户 \\NET 对其具有权限。

注意本示例假定以下配置。

配置

具有本地安全颁发机构的计算机:
  -Login account: USER1
  -Password:      PSW1
  -Login Domain:  LOCAL1
		
活动目录(AD) 域控制器:
  -Server Name: NET</WWITEM>
  -Domain:      NET-DOMAIN</WWITEM>
  -Trust:       NET-DOMAIN Trust SCRATCH-DOMAIN (Therefore,
                accounts on SCRATCH-DOMAIN can be granted permissions 
                in the NET- DOMAIN).
		
网络域的域:
  • 网络域域处域帐户数据库包含 USER1 帐户。
  • 来宾帐户被禁用。
Windows Server 2003:
  -Server Name:                       SCRATCH
  -Domain:                            SCRATCH-DOMAIN
  -Domain Database contains account:  USER1
  -Domain Database contains password: PSW1
		
在此示例中,计算机已登录到本地域,不从头开始域域计算机的域帐户所在的位置。

示例 2

当运行NET USE x: \\NET\share命令时,会发生以下步骤:
  1. 计算机发出"会话安装程序"SMB 中的以下:
    帐户 ="USER1"
    密码 ="PSW1"
    域 ="LOCAL1"
  2. \\NET 服务器接收 SMB 和看好的帐户名。
  3. 服务器会检查其本地域帐户数据库 anddoes 不查找匹配项。
  4. 然后,服务器检查 SMB 的域名称。
  5. 服务器不信任"LOCAL1,",以便该服务器将执行 notcheck 的受信任的域。
  6. 然后,服务器将检查其 guest 帐户。
  7. 禁用来宾帐户,因此"系统错误 1326 hasoccurred。登录失败: 未知的用户名或错误密码。"错误消息 isgenerated。

示例 3

当运行NET USE x: \\SCRATCH\share命令时,会发生以下步骤:
  1. 计算机发出"会话安装程序"SMB 中的以下:
    帐户 ="USER1"
    密码 ="PSW1"
    域 ="LOCAL1"
  2. \\SCRATCH 服务器接收 SMB,然后检查此帐户的名称。
  3. 服务器会检查其本地域帐户数据库 andfinds 匹配项。
  4. 然后,服务器将比较 SMB 密码为 domainaccount 密码。
  5. 密码匹配。因此,生成"命令 CompletesSuccessfully"消息。
在示例 2 和示例 3 中,信任关系是不可用。如果计算机有到从头开始域域已登录, NET USE x: \\NET\share命令是否已成功。

理想的解决方案是让到域的所有计算机日志。若要在登录时,用户必须指定域、 帐户和密码。执行此操作之后, 所有NET USE-type 命令将传递正确的域、 帐户和密码信息。管理员应尽量避免在计算机和多个域的重复帐户。Windows Server 2003 开始,而基于 Windows XP 的和基于 Windows 2000 的计算机可帮助避免此配置中,通过使用域之间的信任并使用可用的数据库域的成员。

解决方法

还有一种解决办法,可以在这些情况下使用。从该计算机中,则可以运行下面的命令:
NET USE X: \\NET\SHARE /USER:SCRATCH-DOMAIN\USER1 PSW1
在此命令中,以下情况:
  - \\NET = The computer name of the domain controller being accessed.
  - \SHARE = The share name.
  - /USER: command line parameter that lets you specify the domain,
    account and password that should be specified in the "Session Setup"
    SMB.
  - SCRATCH-DOMAIN = Domain name of the domain where the user
    account resides.
  - \USER1 = account to be validated against.
  - PSW1 = password that matches account on the domain.
		
有关此命令的详细信息,在命令提示符下键入以下命令:
NET USE /?

空的域名

Windows Server 2003、 Windows XP 和 Windows 2000 中包含的 Microsoft SMB 客户端发送 NULL 域的名称在"会话设置 SMB [x 73]"SMB。通过指定的登录域名并发送 NULL 字符,如果NET USE命令中未指定的域名称,Microsoft SMB 客户端处理的域名称。Microsoft SMB 客户端也将表现出示例 1 中所述的行为。

注释

  • 中 LANMAN 指定默认域的名称。INI fileon"域 ="行。这可以通过重写/DOMAIN:交换机, NET LOGON命令。
  • 通常有两种表示形式为"NULL"theSMB 中: 一个零长度的域名和 thequestion 包含单字节域名标记字符 (?)。SMB 服务器捕获问号,并传递到本地安全机构 (LSA) 之前转换 itto NULL。

故障排除

网络访问问题疑难解答的好提示是启用审核通过以下方法。

Windows 2000 和更高版本的基于 Windows 2000 的域控制器

  1. 从管理工具 startActive Directory 用户和计算机的域控制器上。
  2. 用鼠标右键单击域控制器 OU,然后单击属性
  3. 组策略选项卡上,双击默认域控制器策略
  4. 在策略编辑器中,单击ComputerSettings,单击Windows 设置,单击安全设置本地策略,然后单击审核策略
  5. 选择登录和帐户登录成功选项和失败选项。

对于 Windows 2000 服务器和成员的域设置

  1. 从管理工具 startActive Directory 用户和计算机的域控制器上。
  2. 用鼠标右键单击域名,然后单击属性
  3. 组策略选项卡上,双击默认域策略
  4. 在策略编辑器中,单击ComputerSettings,单击Windows 设置,单击安全设置,单击本地策略,然后单击审核策略
  5. 选择登录和帐户登录成功选项和失败选项。

对于 Windows 2000 服务器和成员的本地设置

  1. 从管理工具,启动本地 SecurityPolicy。
  2. 打开审核策略。
  3. 选择登录和帐户登录成功选项和失败选项。
现在,网络用户远程访问该服务器的任何时间审核跟踪,将会记录在事件查看器中。若要查看这些事件,在事件查看器中的,单击日志菜单中的安全性

有关信任关系,通过身份验证、 用户权限和域登录的详细信息,请参阅"技术概述的 Windows Server 2003 安全服务。要执行此操作,请访问下面的 Microsoft Web 站点:
http://www.microsoft.com/windowsserver2003/techinfo/overview/security.mspx (http://www.microsoft.com/windowsserver2003/techinfo/overview/security.mspx)

更多信息

基本上,相同的网络访问验证算法也适用于 Windows Server 2008,Windows Server 2008 R2,Windows Server 2012,Windows Server 2012 R2。

这些操作系统 SMB 中有几种新功能。

Windows 2008 Server

http://technet.microsoft.com/en-us/library/ff625695 (v=ws.10).aspx (http://technet.microsoft.com/en-us/library/ff625695(v=ws.10).aspx)

http://technet.microsoft.com/en-us/library/cc770740 (v=ws.10).aspx (http://technet.microsoft.com/en-us/library/cc770740(v=ws.10).aspx)


Windows Server 2012

http://technet.microsoft.com/en-us/library/hh831795.aspx (http://technet.microsoft.com/en-us/library/hh831795.aspx)

这篇文章中的信息适用于:
  • Microsoft Windows Server 2003 Standard Edition
  • Microsoft Windows Server 2003 Enterprise Edition
  • Microsoft Windows Server 2003 Web Edition
  • Microsoft Windows XP Professional Edition
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
关键字: 
kbnetwork kbmt KB103390 KbMtzh
机器翻译机器翻译
重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。
点击这里察看该文章的英文版: 103390  (http://support.microsoft.com/kb/103390/en-us/ )
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。
其他支持选项
Microsoft Community 支持论坛
直接联系我们
查找 Microsoft 认证合作伙伴
Microsoft 商店