Как я могу проверить, использует ли мой сайт IIS NTLM или Kerberos?

BTW достаточно легко сделать прокси SFTP, если Вам не нужны никакие функции вне перенаправления портов. Вы могли использовать netfilter http://kreiger.linuxgods.com/kiki/?Port+forwarding+with+netfilter, fwtk http://sourceforge.net/projects/openfwtk/ или даже перенаправление портов SSH.

9
задан 15 June 2018 в 09:09
6 ответов

От:

Определить, является ли проверка подлинности HTTP NTLM или Kerberos
http://support.microsoft.com/kb/891032

[...] "Поскольку мы просматриваем эту трассировку, чтобы узнать, отправляет ли клиент информацию для аутентификации, мы можем использовать сегменты TCP для отслеживания запросов HTTP GET и ответа от сервера. Вот фрагмент из кадра, который отправляет информацию аутентификации из клиент:

23 4294967263.4294641621 LOCAL 00045A420DBC HTTP GET Request (от клиента, использующего порт 3135) 192.168.0.2 192.168.0.4 IP HTTP: запрос GET (от клиента, использующего порт 3135) HTTP: метод запроса = GET HTTP: унифицированный идентификатор ресурса = /webapplication1/webform1.aspx HTTP: версия протокола = 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 (совместимый; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR HTTP: Хост = чужой HTTP: соединение = Keep-Alive HTTP: Авторизация = Согласование TlRMTVNTUAABAAAAB4IIogAAAAAAAAAAAAAAAAAAAAAFASgKAAAA 44 77 3D 3D 0D 0A 0D 0A AAADw == ....

«О чем это нам говорит? Мы видим, что заголовок авторизации установлен на« Согласование », и мы можем видеть длинную строку символов, отправленную в этом Этот ответ сообщает нам, что клиент и сервер согласовывают NTLM-соединение. Мы знаем, что здесь используется NTLM-аутентификация, потому что первый символ - "T." Если это был "Y", это будет Kerberos . Заголовок установлен на «Согласование» вместо «NTLM». Это не означает, что он будет использовать Kerberos или NTLM, но что он будет «согласовывать» метод авторизации и сначала попробует Kerberos, если это возможно. . Если он не может использовать Kerberos, он будет использовать 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
}
7
ответ дан 2 December 2019 в 22:31

Этот ответ не совсем полный. NTLM может использоваться двумя способами. Один - через метод WWW-аутентификации "NTLM"; другой - через переговоры. Negotiate использует GSSAPI, который, в свою очередь, может использовать различные механизмы; в Windows это включает как Kerberos, так и NTLM.

Wireshark может декодировать все это и быстро показать вам, что происходит, если вы не используете TLS. Если да, то вы можете сделать так, чтобы Wireshark мог расшифровать трафик TLS; это просто требует дополнительных усилий.

0
ответ дан 2 December 2019 в 22:31

В заголовке HTTP-запроса (его можно увидеть в Firebug , Chrome Dev Tool или Fiddler ) вы увидите что-то подобное, если вы использовать NTLM

Авторизация: NTLM = TlRMTVNTGD6XAAAAGAAYAG425qAAYABgAhgAAAAAAAABIAAAADgAOAEgAAAAYABgAVgAAAAAAAACeAAAABYKIogUBKAoAAAAPcwBpAG0AcABsAGkAcABOADMAUgBXAEsAVwBBAEwAVABFAFIAQQAzVtleqNj7HAAAAAAAAAAAAAAAAAAAAACW3g66aPaiileWScIYweBj6fs2iGY / ta3 =

С панели управления IIS, вы можете пойти аутентификации и выбрать аутентификацию вы предпочитаете.

0
ответ дан 2 December 2019 в 22:31

используйте код ниже на странице 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"
%> 
1
ответ дан 2 December 2019 в 22:31

Если у вас есть доступ к серверу IIS, тогда ответ будет намного проще, чем проверка HTTP-трафика: просто просмотрите конфигурацию модуля проверки подлинности сайта для проверки подлинности Windows.

  1. В диспетчере IIS
  2. Выберите свой сайт
  3. Щелкните модуль проверки подлинности
  4. Выберите проверку подлинности Windows
  5. Выберите поставщиков ...

IIS Manager > Site > Authentication module > Providers

3
ответ дан 2 December 2019 в 22:31

Выяснилось, что у Microsoft действительно хороший страница о Kerberos.

Вот описание множества подводных камней при использовании Kerberos и согласования (например, на локальном хосте согласование использует NTLM по умолчанию).

Если вы использовали ядро ​​dotnet, код сервера может выглядеть так (код от @pafreire предназначен для старого классического asp и также описан на странице ms).

private string GetAuthMethodeInfo()
{
        var authType = this.HttpContext.GetServerVariable("AUTH_TYPE")?.ToUpper() ?? string.Empty;
        var authHeader = this.HttpContext.GetServerVariable("HTTP_AUTHORIZATION");
        var lenAuthHeader = authHeader?.Length;
        var protocol = authType.Length ==  0 ? "Anonymous" : authType != "NEGOTIATE" ? authType : lenAuthHeader > 1000 ? "Kerberos" : "NTLM";

        return $"Authentication-Method : {authType} Protocol: {protocol}";
 }
0
ответ дан 29 July 2021 в 09:52

Теги

Похожие вопросы