Como posso verificar se meu site IIS está usando NTLM ou Kerberos?

Como posso verificar se meu site IIS está usando NTLM ou Kerberos?

Como posso verificar se meu site IIS está usando NTLM ou Kerberos? E como posso alterar a autenticação de Kerberos para NTLM? Estou usando o IIS 7.5.

Responder1

De:

Determine se a autenticação HTTP é NTLM ou Kerberos
http://support.microsoft.com/kb/891032

[...] "Como estamos examinando esse rastreamento para ver se o cliente está enviando informações de autenticação, podemos usar os segmentos TCP para rastrear as solicitações HTTP GET e a resposta do servidor. Aqui está um trecho do quadro que envia informações de autenticação do cliente:

23 4294967263.4294641621 LOCAL 00045A420DBC HTTP GET Request (from client using port 3135) 192.168.0.2 192.168.0.4 IP 
HTTP: GET Request (from client using port 3135)
  HTTP: Request Method = GET
  HTTP: Uniform Resource Identifier = /webapplication1/webform1.aspx
  HTTP: Protocol Version = HTTP/1.1
  HTTP: Accept = image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.
  HTTP: Accept-Language = en-us
  HTTP: Accept-Encoding = gzip, deflate
  HTTP: User-Agent = Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 
  HTTP: Host = alien
  HTTP: Connection = Keep-Alive
  HTTP: Authorization = Negotiate TlRMTVNTUAABAAAAB4IIogAAAAAAAAAAAAAAAAAAAAAFASgKAAAA
44 77 3D 3D 0D 0A 0D 0A         AAADw==....   

"O que isso nos diz? Podemos ver que o cabeçalho de autorização está definido como" Negociar "e podemos ver uma longa sequência de caracteres enviada nesse cabeçalho. Esta resposta nos diz que o cliente e o servidor estão negociando uma conexão NTLM.Sabemos que a autenticação NTLM está sendo usada aqui porque o primeiro caractere é um '"T." Se fosse um "Y", seria Kerberos. O cabeçalho está definido como “Negociar” em vez de “NTLM”. Isso não significa que usará Kerberos ou NTLM, mas que irá "negociar" o método de autorização e tentar o Kerberos primeiro, se for possível. Se não puder usar Kerberos, usará NTLM."

// if it is Negotiate...
if (String.Compare(Request.ServerVariables["HTTP_AUTHORIZATION"].Substring(10, 1), "Y", true) == 0)
{
    // we are using Kerberos
}
else
{
   // we are using NTLM
}

Responder2

Se você tiver acesso ao seu servidor IIS, a resposta é muito mais simples do que inspecionar o tráfego HTTP: basta visualizar a configuração do módulo de autenticação do site para autenticação do Windows.

  1. No Gerenciador do IIS
  2. Selecione seu site
  3. Clique no módulo Autenticação
  4. Selecione Autenticação do Windows
  5. Selecione Provedores...

Gerenciador IIS > Site > Módulo de autenticação > Provedores

Responder3

use o código abaixo na página html/asp:

<%
    authType=UCase(Request.ServerVariables("AUTH_TYPE"))
    authHeader=Request.ServerVariables("HTTP_AUTHORIZATION")
    response.write " Authentication Method : " & authType & "<BR>"
    LenAuthHeader = len(authHeader)
    response.write " Protocol : "
    if Len(authType ) =0 then response.write " Anonymous" else if authType<>"NEGOTIATE" then response.write authType else if LenAuthHeader>1000 then response.write "Kerberos" else response.write "NTLM"
%> 

Responder4

Essa resposta não está totalmente completa. Existem duas maneiras de a conexão usar NTLM. Uma é através do método WWW-Authenticate "NTLM"; a outra é via Negociar. Negociar usa GSSAPI, que por sua vez pode usar vários mecanismos; no Windows, isso inclui Kerberos e NTLM.

O Wireshark pode decodificar tudo isso e mostrar rapidamente o que está acontecendo, desde que você não esteja usando TLS. Se estiver, você pode fazer com que o Wireshark seja capaz de descriptografar o tráfego TLS; basta um esforço extra.

informação relacionada