網路存取驗證演算法和 Windows Server 2003,Windows XP 與 Windows 2000 的範例

文章翻譯 文章翻譯
文章編號: 103390 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

下列是說明 Windows 帳戶驗證所觀察到的簡化的演算法期間使用 NTLM 通訊協定的網路存取的函式。範例中,以表示它使用透過伺服器訊息區 (SMB) 通訊協定存取,但它適用於所有支援 NTLM 驗證其他伺服器應用程式。這個討論區並未涵蓋這項程序的內部運作方式。使用這項資訊,您可以預測在決定性的情況下,Windows 網路登入行為。
您可以使用 Kerberos 來驗證使用者,並取得對伺服器資源的存取,此處理序與 NTLM 不會非常不同。如需詳細資訊,請造訪下列 Microsoft TechNet 網站:
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。

當伺服器取得資訊,並在本機資料庫中尋找使用者時,則伺服器會使用本機資料庫的名稱來計算 salt 及雜湊。因此,如果 「 來源網域 」 做為用戶端傳送的是空的或者是未知的網域,salt,因此密碼雜湊不會符合。在這些情況下,驗證嘗試將失敗,「 未知的使用者名稱或密碼錯誤 」 (STATUS_LOGON_FAILURE) 錯誤。嘗試的稽核事件將會報告 「 不正確的密碼,」 STATUS_WRONG_PASSWORD 的符號。

取樣事件:
記錄檔名稱: 安全性
來源: Microsoft-Windows 的安全性-稽核
事件識別碼: 4625
工作類別: 登入
層級: 資訊
關鍵字: 稽核失敗
電腦: 伺服器 computer1
描述:
帳戶登入失敗。

主旨:

安全性識別碼: NULL SID
帳戶名稱:-
帳戶網域:-
登入 ID: 0x0

登入類型: 3

失敗的登入的帳戶:

安全性識別碼: NULL SID
帳戶名稱: ntadmin
帳戶網域: 用戶端 computer1

失敗資訊:

失敗原因: 未知的使用者名稱或密碼錯誤。
狀態: 0xc000006d
子狀態: 0xc000006a
...

詳細的驗證資訊:

登入程序: NtLmSsp
驗證封裝: NTLM
Transited 服務:-
封裝名稱 (只有 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 差異。永遠會提示使用者輸入密碼的無論 ofwhether,帳戶存在。
  2. 此時,從受信任的網域,在回應中傳回下列資訊: 網域 SID、 使用者 ID、 全域 GroupsMemberships、 登入時間、 登出的時間、 KickOffTime、 完整名稱、 密碼 LastSet、 密碼可以變更旗標、 密碼必須變更旗標、 使用者指令碼、 設定檔路徑、 主目錄和錯誤密碼計數。
  3. 如果信任網域上的未不找到任何帳號,與作業系統一樣必須使用本機來賓帳戶,以確保一致的 behaviorfor 驗證的伺服器。
  4. 如需有關如何使用 LsaLookupRestrictIsolatedNameLevel 登錄項目限制的外部信任網域中有隔離名稱查詢的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
    818024 如何使用 LsaLookupRestrictIsolatedNameLevel 登錄項目限制隔離的名稱,外部信任網域中的查閱
  • 受信任網域的來賓帳戶,將不會向。
  • 實際的內部程序,如下所示的 thealgorithms 比更為複雜的。
  • 這些演算法並不討論驗證 ofpass 透過實際的機制。 如需詳細資訊,按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
    102716 在 Windows 中的 NTLM 使用者驗證
  • 這些演算法並不討論 Windows Server 2003,Windows XP 與 Windows 2000 中使用密碼 encryptionprocess。二進位大型物件 (BLOB) 衍生自機會方式密碼雜湊會傳送驗證要求的一部分。這個 BLOB 的 Thecontent thelogon 為選擇的驗證通訊協定而定。
  • 本文不討論 Microsoft 驗證模組的內部運作方式。
  • 這些演算法會假設 「 來賓 」 帳戶,whenenabled,有沒有密碼。根據預設,「 來賓 」 帳戶並沒有在 Windows Server 2003,Windows XP 和 Windows 2000 中的 apassword。如果指定 guestaccount 密碼,則該來賓 SMB mustmatch 中已傳送的使用者密碼的帳戶密碼。

範例

以下是這些演算法中動作的範例。

範例 1

您使用相同的帳戶名稱及密碼可用網域的網域帳戶資料庫中的登入電腦。當您執行重新網域的網域控制站的網路使用 \\SCRATCH命令時,命令已成功完成。當您執行信任平滑網域的網域控制站的網路使用 \\NET命令時,您會收到下列錯誤訊息:
發生系統錯誤 1326年。登入失敗: 未知的使用者名稱或密碼錯誤。
\SCRATCH-DOMAIN\USER1 帳戶在 \\NET 上具有權限。

附註本範例假設下列組態。

組態

具有本機安全性授權的電腦:
  -Login account: USER1
  -Password:      PSW1
  -Login Domain:  LOCAL1
		
Active Directory 網域控制站:
  -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,並看 accountname。
  3. 伺服器會檢查其本機網域帳戶資料庫 anddoes 尋找相符的項目。
  4. 然後伺服器會檢查 SMB 網域名稱。
  5. 伺服器不信任"LOCAL1,"這樣伺服器就不會 notcheck,其受信任的網域。
  6. 伺服器接著會檢查其來賓帳戶。
  7. 來賓帳戶已停用,「 系統錯誤 1326 hasoccurred。登入失敗: 使用者名稱不明或不正確的密碼。 」 錯誤訊息 isgenerated。

範例 3

當您執行NET USE x: \\SCRATCH\share命令時,執行下列步驟:
  1. 所送出 「 工作階段安裝程式 」 SMB 中的下列:
    帳戶 ="USER1"
    密碼 ="PSW1"
    網域 ="LOCAL1"
  2. \\SCRATCH 伺服器接收 SMB,並檢查 theaccount 名稱。
  3. 伺服器會檢查其本機網域帳戶資料庫 andfinds 相符的項目。
  4. 然後伺服器會比較 domainaccount 密碼的 SMB 密碼。
  5. 密碼相符。因此,就會產生 」 指令 CompletesSuccessfully 」 訊息。
在範例 2 和範例 3 中,此信任關係是無法使用。如果電腦有登入 [從頭開始網域的網域, NET USE x: \\NET\share命令會順利完成。

理想的解決方案是將所有的電腦登入網域。若要登入,使用者必須指定網域、 帳戶及密碼。這麼做之後, 所有NET USE-輸入指令會將傳遞正確的網域、 帳戶及密碼資訊。系統管理員應該嘗試避免重複的帳戶,電腦和多個網域上。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.
		
如需有關這個命令的詳細資訊,請在命令提示字元中輸入下列:
網路使用 /?

NULL 的網域名稱

包含在 Windows Server 2003,Windows XP 與 Windows 2000 的 Microsoft SMB 用戶端傳送 NULL 網域名稱中的 「 工作階段設定 SMB [x 73]"SMB。Microsoft SMB 用戶端處理的網域名稱,指定登入網域名稱,以及傳送一個 NULL 字元,如果NET USE命令中未指定網域名稱。Microsoft SMB 用戶端也會展示範例 1] 中所描述的問題。

注意

  • 在 LANMAN 中指定預設網域名稱。INI fileon"網域 ="行。這可以藉由覆寫/DOMAIN:切換使用網路登入] 命令。
  • 通常有兩個"NULL"表示在 theSMB 中: 一個長度為零的網域名稱和 thequestion 所組成的一個位元組網域名稱標示字元 (?)。SMB 伺服器會攔截問號的裝置,並將 itto NULL 轉譯之前將它傳遞給本機安全性授權 (LSA)。

疑難排解

很好的祕訣疑難排解網路存取問題是,啟用稽核,方法如下。

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. 從系統管理工具] 功能表啟動本機的空格。
  2. 開啟 [稽核原則]。
  3. 選取 [登入和帳戶登入成功] 選項及 [失敗] 選項。
現在,網路使用者存取這台遠端電腦上,任何時候的稽核記錄將會記錄在事件檢視器]。若要查看這些事件在事件檢視器] 中的,按一下 [記錄] 功能表中的 [安全性]。

如需有關信任關係、 傳遞驗證、 使用者權限和網域登入的詳細資訊,請參閱 「 技術概觀的 Windows Server 2003 安全性服務 」。若要執行這項操作,請造訪下列 Microsoft 網站:
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/cc770740 (v=ws.10).aspx


Windows Server 2012

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

屬性

文章編號: 103390 - 上次校閱: 2014年3月14日 - 版次: 2.0
這篇文章中的資訊適用於:
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003, Web Edition
  • Microsoft Windows XP Professional
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
關鍵字:?
kbnetwork kbmt KB103390 KbMtzh
機器翻譯
請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。
按一下這裡查看此文章的英文版本:103390
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com