Назад | Перейти на главную страницу

Зачем использовать Kerberos вместо NTLM в IIS?

Это то, на что я никогда не мог ответить так, как мне нравится: В чем реальное преимущество использования проверки подлинности Kerberos в IIS вместо NTLM?

Я видел, как многие люди действительно изо всех сил пытались его настроить (в том числе и я), и я не смог придумать вескую причину для его использования. Хотя должны быть некоторые довольно значительные преимущества, иначе не стоит тратить силы на его настройку, верно?

Только с точки зрения Windows:

NTLM

  • работает с обе внешний (не домен) и внутренний клиенты
  • работает с обоими учетные записи домена и учетные записи локальных пользователей в поле IIS
    • с использованием учетных записей домена, только сервер требует прямого подключения к контроллеру домена (DC)
    • используя локальные учетные записи, вам не нужно нигде подключение :)
    • вам не нужно входить в систему как соответствующий пользователь, чтобы использовать учетные данные
    • В стороне: не так уж редко контроллер домена может быть перегружен загруженным сервером NTLM (IIS, Exchange, TMG / ISA и т. д.) с объемом запросов NTLM (для уменьшения: MaxConcurrentAPI, AuthPersistSingleRequest (ложный), быстрее DC.) (Самореференциальный бонус.)
  • требуется подключение клиента только на сервер IIS (на порт сайта больше ничего. т.е. Все происходит через HTTP (или HTTPS).)
  • может проходить через любой прокси, поддерживающий HTTP Keep-Alives
    • вы можете использовать TLS / SSL для работы с другими
  • требует несколько рейсов туда и обратно аутентифицировать, с маленькие пакеты
    • (шаблон журнала 401.2, 401.1, 200 с именем пользователя)
  • не может использоваться в сценариях, где требуется двухэтапная аутентификация
    • т.е. учетные данные пользователя должны быть отправлены в службу на другом компьютере
  • поддерживает старые клиенты (<Win2000)
  • Чувствителен к несоответствиям уровня аутентификации LM (несоответствие lmcompatibilitylevel)
  • используется пакетом Negotiate в качестве запасного варианта, если Curb не работает.
  • (не "если доступ отказано с бордюром », Бордюр должен перерыв для использования NTLM - обычно это похоже на отсутствие билета. Если клиент получает билет, и он не идеален, это не вызывает отката.)

Kerberos

  • работает с В настоящее время только клиенты, присоединенные к домену

    • требует подключения клиента к AD DC (TCP / UDP 88) И сервер (билеты извлекаются клиентом из DC через порт Curb, а затем передаются на сервер с помощью HTTP)
  • мощь иметь возможность проходить через прокси, но см. точку DC выше: вам по-прежнему необходимо находиться в той же сети, что и активный DC, как и сервер.

    • так теоретически если у вас есть домен, в котором подключенные к Интернету клиенты общаются напрямую с подключенным к Интернету DC, это работает. Но не делай этого если вы еще не знали об этом.
    • В сценариях обратного прокси (ISA / TMG) переход протокола сервер должен быть в этой сети, то есть не клиент ... но тогда клиент на самом деле не тот, который выполняет бит Kerberos (обязательно - подумайте, Forms auth to Curb transition).
  • билет - долгожитель (10h) значение меньше связи постоянного тока в течение срока действия билета - и подчеркнуть: это может сэкономить от тысяч до миллионов запросов на клиента за это время жизни - (AuthPersistNonNTLM все еще вещь; Проверка Kerberos PAC раньше была вещь)

  • требует одно путешествие туда и обратно для аутентификации, но аутентификация размер полезной нагрузки относительно большой (обычно 6-16K) (401, {размер (закодированного) токена} 200)

  • может использоваться с («пожалуйста, всегда используйте ограничение») делегация для включения сценариев двойного прыжка, то есть Windows-аутентификация подключающегося пользователя к следующей службе

    • фактически, N-хоп - складывается как Лего! Добавьте столько хмеля, сколько нужно ...
    • например, чтобы разрешить UserA для доступа к IIS и для IIS, чтобы олицетворять ту же учетную запись пользователя Windows, когда он обращается к другому компьютеру с SQL Server. Это «делегирование аутентификации».
    • (Ограниченный в данном контексте означает «но не что-либо еще», например Exchange или другой SQL-сервер)
  • в настоящее время является основным пакетом безопасности для аутентификации с согласованием

    • означает, что члены домена Windows предпочитают его, когда они могут его получить
  • требует регистрация SPN, что может быть непросто. Правила, которые помогают.

  • требует использования название как цель, а не IP-адрес

  • Причины отказа Curb:

    • использование IP-адреса вместо имени
    • SPN не зарегистрировано
    • зарегистрированы дубликаты SPN
    • SPN зарегистрирован для неправильной учетной записи (KRB_ERR_AP_MODIFIED)
    • нет клиентского подключения к DNS / DC
    • настройка прокси-сервера клиента / Зона локальной интрасети не используется для целевого сайта

Пока мы на этом:

Базовый

  • может многоскачковой. Но делает это раскрытие вашего имени пользователя и пароля напрямую в целевое веб-приложение
    • который затем может делать с ними все, что захочет. Что-нибудь.
    • «О, администратор домена только что использовал мое приложение? И я только что прочитал их электронную почту? Затем сбросил пароль? Оууу. Жалость"
  • потребности безопасность транспортного уровня (например, TLS / SSL) для любой формы безопасности.
    • а потом, см. предыдущий выпуск
  • работает с любым браузером
    • (но см. первый выпуск)
  • требует одно путешествие туда и обратно аутентифицировать (401, 200)
  • может использоваться в сценариях с несколькими прыжками, поскольку Windows может выполнять интерактивный вход в систему с базовыми учетными данными
    • Может понадобиться LogonType быть настроенным для достижения этой цели (думаю, что в период с 2000 по 2003 год значение по умолчанию изменилось на сетевой открытый текст, но, возможно, неправильно запомнил)
    • но очередной раз, см. первый выпуск.
    • Создается впечатление, что первый выпуск действительно, действительно важно? Это.

Подводить итоги:

Бордюр может быть сложно установить, но есть множество направляющих (мой один), которые пытаются упростить процесс, и инструменты улучшились в значительной степени с 2003 по 2008 (SetSPN может искать дубликаты, что является наиболее частой неисправностью; использовать SETSPN -S каждый раз, когда вы увидите руководство по использованию -A, и жизнь станет счастливее).

Ограниченное делегирование стоит затрат на вход.

Из Средство проверки приложений Microsoft, который выявляет типичные ошибки разработчиков. Одна из этих ошибок - использование NTLM:

NTLM - это устаревший протокол аутентификации с недостатками, которые потенциально могут поставить под угрозу безопасность приложений и операционной системы. Самым важным недостатком является отсутствие аутентификации сервера, что может позволить злоумышленнику обманом заставить пользователей подключиться к поддельному серверу. Как следствие отсутствия аутентификации сервера, приложения, использующие NTLM, также могут быть уязвимы для типа атаки, известной как атака «отражения». Это позволяет злоумышленнику перехватить аутентификационный диалог пользователя с легитимным сервером и использовать его для аутентификации злоумышленника на компьютере пользователя. Уязвимости NTLM и способы их использования являются целью все возрастающей исследовательской активности в сообществе безопасности.

Хотя Kerberos существует уже много лет, многие приложения все еще написаны для использования только NTLM. Это без нужды снижает безопасность приложений. Однако Kerberos не может заменить NTLM во всех сценариях - в основном в тех, где клиенту необходимо пройти аутентификацию в системах, которые не присоединены к домену (домашняя сеть, возможно, является наиболее распространенной из них). Пакет безопасности Negotiate допускает компромисс с обратной совместимостью, который использует Kerberos, когда это возможно, и возвращается к NTLM только тогда, когда нет другого варианта. Переключение кода на использование Negotiate вместо NTLM значительно повысит безопасность для наших клиентов, в то же время обеспечивая небольшую совместимость приложений или вообще не обеспечивая их. Само по себе согласование - не панацея: бывают случаи, когда злоумышленник может принудительно перейти на NTLM, но воспользоваться ими значительно труднее. Однако одно немедленное улучшение состоит в том, что приложения, написанные для правильного использования Negotiate, автоматически защищены от атак отражения NTLM.

В качестве последнего слова предостережения против использования NTLM: в будущих версиях Windows можно будет отключить использование NTLM в операционной системе. Если приложения жестко зависят от NTLM, они просто не смогут пройти аутентификацию, когда NTLM отключен.

  • Kerberos имеет репутацию более быстрого и безопасного механизма аутентификации, чем NTLM.
  • Также исторически было проще подключиться через прокси-серверы, чем к NTLM, из-за природы NTLM, основанной на подключении.
  • Тем не менее, как вы заметили, Kerberos сложнее установить и запустить, и он требует подключения к AD, что не всегда практично.

Другой подход - установить аутентификацию на negotiate и используйте оба, а не один вместо другого.

Следует добавить очень важный момент:

Kerberos был стандартным и открытым протоколом в Unix более 20 лет, тогда как NTLM - это чисто проприетарное решение от Microsoft, известное только Microsoft.

Kerberos требуется, если вам нужно выдать себя за пользователя для доступа к ресурсам, которых нет на сервере iis.