ID do artigo: 103390 - Última revisão: terça-feira, 20 de fevereiro de 2007 - Revisão: 4.4

Algoritmos de validação de acesso de rede e exemplos para o Windows Server 2003, Windows XP e Windows 2000

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo
A seguir está um algoritmo simplificado que explica como é observada validação de conta do Windows a função durante o acesso à rede usando o protocolo NTLM. Ele está usando o acesso através do protocolo SMB (bloco) de mensagens do servidor como o exemplo a, mas ele se aplica a todos os outros aplicativos de servidor que oferece suporte à autenticação NTLM. Esta discussão não abrange os funcionamentos internos desse processo. Com essas informações, você pode prever Windows rede comportamento do logon sob condições deterministas.
Quando Kerberos é usado para autenticar o usuário e obter acesso a recursos do servidor, o processo é muito diferente do que o NTLM. Para obter mais informações, visite o seguinte site da Microsoft TechNet:
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)
Lembre-se que o banco de dados local é o banco de dados domínio e o banco de dados somente nos controladores de domínio. Mas em outros servidores e todos os computadores, o banco de dados local difere do controlador de domínio.

Informações de plano de fundo

Quando dois computadores baseados no Windows Server 2003, baseado no Windows XP ou baseado no Windows 2000 se comuniquem em uma rede, eles usam um protocolo de alto nível denominado (SMB) bloco de mensagens de servidor. Comandos SMB são incorporados nos protocolos de transporte, como NetBIOS Enhanced User Interface (NetBEUI) ou TCP/IP. Por exemplo, quando um computador cliente executa um comando NET USE , um quadro "SMB sessão instalação e X" é enviado.

No Windows, "Instalação da sessão" SMB inclui a conta de usuário, uma função de hash de senha criptografada e domínio de logon. Um controlador de domínio irá examinar todas essas informações para determinar se o cliente tem permissões para concluir o comando NET USE .

Algoritmos

Um computador cliente com Windows envia o comando a seguir para um servidor:
   NET USE x: \\server\share
		
O Windows cliente computador envia um SMB de "Instalação de sessão" que contém seu domínio de logon, conta de usuário e senha.

O servidor examina o nome de domínio ou nome de computador que foi especificado pelo SMB. Se o nome é o nome do servidor, o algoritmo a seguir é executado:
    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
		
se o domínio especificado no SMB é aquele que o servidor confia, o seguinte algoritmo é executar:
    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.
		
Se um canal seguro não está configurado, o algoritmo a seguir é executado:
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
se o domínio especificado no SMB é desconhecido pelo servidor, por exemplo, se um domínio foi especificado, mas não foi reconhecido pelo servidor como um domínio confiável ou seu controlador de domínio, o algoritmo a seguir é executado:
    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
		
se o domínio que está especificado no SMB for NULL, ou seja, nenhum domínio for especificado, o algoritmo a seguir é executado:
    The server will treat this 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
		

Anotações

  1. Se a conta Convidado é desabilitada e o usuário não tem uma conta, o servidor ainda irá solicitar uma senha. Embora nenhuma senha atenderá aos seus requisitos, o servidor ainda solicitará uma senha como uma medida de segurança. Essa medida de segurança assegura que um usuário não autorizado não é possível saber a diferença entre um caso onde existe uma conta e quando a conta não existe. O usuário sempre será solicitado para uma senha independentemente da conta existe.
  2. Neste ponto, as informações a seguir são retornadas de domínio confiável na resposta: SID de domínio, ID de usuário, membros de grupos globais, tempo de logon, Logoff tempo, KickOffTime, nome completo, senha LastSet, senha pode alterar sinalizador, senha deve alterar sinalizador, script de usuário, caminho do perfil, diretório base e contagem de senha inválida.
  3. Se nenhuma conta foi encontrada no domínio confiável, o sistema operacional deve usar a conta Convidado local para garantir um comportamento consistente para autenticação em relação ao servidor.
  4. Para obter mais informações sobre como restringir a pesquisa de nomes isolados em domínios confiáveis externos usando a entrada de registro LsaLookupRestrictIsolatedNameLevel, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
    818024  (http://support.microsoft.com/kb/818024/ ) Como restringir a pesquisa de nomes isolados em domínios confiáveis externos usando a entrada de registro LsaLookupRestrictIsolatedNameLevel
  • Contas de convidado em domínios confiáveis nunca estará disponíveis.
  • O processo real, interno é mais complexo do que os algoritmos que são descritos aqui.
  • Esses algoritmos não discutir a mecânica real de autenticação de passagem. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
    102716  (http://support.microsoft.com/kb/102716/ ) A autenticação de usuário NTLM no Windows
  • Esses algoritmos não discutir o processo de criptografia de senha que é usado no Windows Server 2003, Windows XP e Windows 2000. Um objeto binário grande (BLOB) derivado de um hash de senha unidirecional é enviado como parte da solicitação de autenticação. O conteúdo desse BLOB dependerá o protocolo de autenticação escolhido para o logon.
  • Este artigo não aborda o funcionamento interno do módulo de autenticação de Microsoft.
  • Esses algoritmos pressupõem que a conta Convidado, quando ativado, não tem nenhuma senha. Por padrão, a conta de convidado não tem uma senha no Windows Server 2003, Windows XP e Windows 2000. Se uma senha de conta de convidado for especificada, a senha de usuário que é enviada no SMB deverá coincidir com a senha de conta de convidado.

Exemplos

A seguir estão exemplos desses algoritmos em ação.

Exemplo 1

Você está conectado ao computador usando o mesmo nome de conta e senha no banco de dados zero domínio domínio conta. Quando você executa o comando NET USE \\SCRATCH para o controlador de domínio para o domínio domínio zero, o comando é concluído com êxito. Quando você executa o comando NET USE \\NET para o controlador de domínio que confia zero-domínio no domínio, você receber a seguinte mensagem de erro:
Sistema ocorreu erro 1326. Falha de logon: nome de usuário desconhecido ou senha incorreta.
A conta \SCRATCH-DOMAIN\USER1 tem permissões no \\NET.

Observação Este exemplo assume que as configurações a seguir.

configurações

Computador que tenha uma autoridade de segurança local:
  -Login account: USER1
  -Password:      PSW1
  -Login Domain:  LOCAL1
		
controlador de domínio do 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).
		
domínio domínio NET:
  • O banco de dados de conta de domínio para o domínio NET-domínio não contém uma conta para o Usuário1.
  • A conta Convidado é desativada.
Windows Server 2003:
  -Server Name:                       SCRATCH
  -Domain:                            SCRATCH-DOMAIN
  -Domain Database contains account:  USER1
  -Domain Database contains password: PSW1
		
neste exemplo, o computador estiver conectado ao seu domínio local, não o domínio de zero-domínio onde reside a conta de domínio do computador.

Exemplo 2

Quando você executa o comando NET USE x: \\NET\share , ocorrem as seguintes etapas:
  1. O computador envia o seguinte no SMB "Instalação de sessão":
    conta = "USER1"
    senha = "PSW1"
    domínio = "LOCAL1"
  2. O servidor \\NET recebe o SMB e ver o nome da conta.
  3. O servidor examina seu banco de dados conta de domínio local e não encontra uma correspondência.
  4. O servidor, em seguida, examina o nome de domínio SMB.
  5. O servidor não confia "LOCAL1," para que o servidor não verifica seus domínios confiáveis.
  6. O servidor, em seguida, verifica sua conta de convidado.
  7. A conta Convidado é desativada para o "Ocorreu o erro de sistema 1326. Falha de logon: nome de usuário desconhecido ou senha incorreta. "mensagem de erro é gerada.

Exemplo 3

Quando você executa o comando NET USE x: \\SCRATCH\share , ocorrem as seguintes etapas:
  1. O computador envia o seguinte no SMB "Instalação de sessão":
    conta = "USER1"
    senha = "PSW1"
    domínio = "LOCAL1"
  2. O servidor \\SCRATCH recebe o SMB e examina o nome da conta.
  3. O servidor examina seu banco de dados conta de domínio local e encontra uma correspondência.
  4. O servidor, em seguida, compara a senha SMB para a senha da conta de domínio.
  5. As senhas coincidem. Portanto, a mensagem "Comando conclui successfully" é gerada.
No exemplo 2 e 3 de exemplo, a relação de confiança não está disponível. Se o computador tivesse sido conectado ao domínio domínio zero, o comando NET USE x: \\NET\share teria sido bem-sucedido.

A solução ideal é que todos os computadores log em um domínio. Para fazer logon, o usuário deve especificar o domínio, a conta e a senha. Depois de fazer isso, todos os NET USE -os comandos de tipo irão passar as informações corretas de domínio, conta e senha. Os administradores devem tentar evitar contas duplicadas em computadores e vários domínios. Computadores baseados no Windows 2000 e Windows Server 2003, baseado no Windows XP ajudam a evitar essa configuração usando relações de confiança entre domínios e usando os membros que podem usar bancos de dados de domínio.

Solução alternativa

Há uma solução que pode ser usada nesses casos. No computador, você pode executar o seguinte comando:
NET USE X: \\NET\SHARE /USER:SCRATCH-DOMAIN\USER1 PSW1
Neste comando, a seguir for verdadeira:
  - \\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.
		
para obter mais informações sobre esse comando, digite o seguinte no prompt de comando:
USE NET /?

Nomes de domínio NULL

O SMB Microsoft cliente que está incluído no Windows Server 2003, Windows XP e Windows 2000 envia nomes de domínio NULL no "sessão instalação SMB [x 73]" SMB. O cliente SMB Microsoft trata o nome de domínio, especificando o nome de domínio de logon e enviando um caractere NULL se o nome de domínio não for especificado no comando NET USE . O cliente SMB Microsoft também exibirão o comportamento descrito no exemplo 1.

Anotações

  • O nome de domínio padrão é especificado no arquivo LANMAN.ini na "DOMAIN =" linha. Isso pode ser substituído pelo / DOMAIN: alternar com o comando NET LOGON .
  • Há normalmente duas representações para "NULL" no SMB: um nome de domínio de comprimento zero e um nome de um byte domínio consiste no caractere de ponto de interrogação (?). O servidor SMB captura o ponto de interrogação e converte a NULL antes de passá-lo para a autoridade de segurança local (LSA).

Solução de problemas

Uma boa dica para solucionar problemas de acesso de rede é habilitar a auditoria, fazendo o seguinte.

Windows 2000 e versões posteriores de controladores de domínio baseados no Windows 2000

  1. Em Ferramentas administrativas em um controlador de domínio, inicie o Active Directory Users e computadores.
  2. Clique com o botão direito do mouse OU controladores de domínio e, em seguida, clique em Propriedades .
  3. Na guia Diretiva de grupo , clique duas vezes Diretiva de controlador de domínio padrão .
  4. No Editor de diretiva, clique em Configurações do computador , clique em Configurações do Windows , clique em Configurações de segurança , clique em Diretivas locais e, em seguida, clique em Diretiva de auditoria .
  5. Selecione o logon e válidas de logon de conta opção e a opção de Falha .

Configurações de domínio para servidores do Windows 2000 e membros

  1. Em Ferramentas administrativas em um controlador de domínio, inicie o Active Directory Users e computadores.
  2. Clique com o botão direito do mouse no nome de domínio e, em seguida, clique em Propriedades .
  3. Na guia Diretiva de grupo , clique duas vezes em Diretiva de domínio padrão .
  4. No Editor de diretiva, clique em Configurações do computador , clique em Configurações do Windows, clique em Configurações de segurança , clique em Diretivas locais e, em seguida, clique em Diretiva de auditoria .
  5. Selecione o logon e válidas de logon de conta opção e a opção de Falha .

Configurações de locais para servidores do Windows 2000 e membros

  1. A partir de ferramentas administrativas, inicie Local Security Policy.
  2. Abrir a diretiva de auditoria.
  3. Selecione o logon e válidas de logon de conta opção e a opção de Falha .
Agora, sempre que um usuário de rede acessa este servidor remotamente, uma trilha de auditoria será registrada em Visualizar eventos. Para ver esses eventos em Visualizar eventos, clique em segurança no menu log .

Para obter mais informações sobre relações de confiança, autenticação de passagem, permissões de usuário e logons de domínio, consulte o "Technical Overview of Windows Server 2003 Security Services." Para fazer isso, visite o seguinte site:
http://www.microsoft.com/windowsserver2003/techinfo/overview/security.mspx (http://www.microsoft.com/windowsserver2003/techinfo/overview/security.mspx)

A informação contida neste artigo aplica-se a:
  • 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
Palavras-chave: 
kbmt kbnetwork KB103390 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 103390  (http://support.microsoft.com/kb/103390/en-us/ )