Процедура аутентификации Windows. Старый баг NTLM-аутентификации Windows позволяет деанонимизировать пользователя Хранение паролей в базе данных учетных записей

  • 22.08.2020

11.02.2011 Жан де Клерк

Любому администратору Windows, разумеется, не раз приходилось иметь дело с двумя основными протоколами аутентификации в среде Windows: Kerberos и NTLM. Данная статья посвящена тому, как Kerberos и NTLM поддерживаются в системах Windows 7 и Windows Server 2008 R2. Но для начала я хотел бы остановиться на ключевых различиях между этими протоколами.

Разработчики Microsoft впервые реализовали протокол Kerberos в системе Windows 2000. Протокол NTLM вошел в употребление гораздо раньше, во времена Windows NT. Kerberos представляет собой протокол аутентификации, базирующийся на концепции доверенной третьей стороны trusted third party (TTP), тогда как в основу протокола NTLM положен механизм «запрос-ответ» (challenge/response). Более подробно различия между двумя протоколами описаны в таблице .

При обмене данными в ходе аутентификации с использованием протокола NTLM серверный ресурс (например, файл-сервер) генерирует запрос, который направляется клиенту. Клиент формирует NTLM-ответ, включающий хеш пароля пользователя, а сервер проверяет правильность этого ответа. Если клиент использует локальную учетную запись, сервер проверяет ответ пользователя с помощью хеша пароля пользователя, который хранится в локальной базе данных диспетчера учетных записей безопасности Security Account Manager (SAM). Если же клиент применяет доменную учетную запись, сервер передает ответ для проверки контроллеру домена, ибо только контроллеры доменов хранят в своих базах данных Active Directory (AD) копии хешей пользовательских паролей.

В системе Windows Kerberos доверенной третьей стороной является контроллер домена Windows 2000 или более поздней версии, на котором размещается служба центра распространения ключей Kerberos Key Distribution Center (KDC). Центр KDC облегчает процедуру аутентификации между оснащенным средствами Kerberos клиентом и сервером. Служба KDC автоматически устанавливается как компонент системы AD и состоит из двух подсистем: службы аутентификации Authentication Service (AS) и службы предоставления билетов Ticket-Granting Service (TGS).

Когда пользователь регистрируется в домене Windows с использованием протокола Kerberos, клиент Windows первым делом проверяет подлинность пользователя на контроллере домена с помощью пользовательского пароля. В то же время клиент запрашивает билет на выдачу билета Ticket Grant Ticket (TGT) в службу аутентификации. TGT можно рассматривать как временный пароль (по умолчанию время его жизни составляет 8 часов), который будет заменять пароль пользователя в последующих запросах на аутентификацию. Когда пользователю нужно будет обратиться к серверному ресурсу, клиент представит TGT на выдачу TGT для проверки подлинности на серверном ресурсе. Имейте в виду, что, в отличие от NTLM, протокол Kerberos не используется для локальной аутентификации в диспетчере учетных записей безопасности Windows; его сфера применения ограничивается доменной аутентификацией на контроллере домена.

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

Почему Kerberos?

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

Еще одно достоинство Kerberos состоит в том, что этот протокол предусматривает использование отметок времени для защиты от атак с повторной передачей пакетов. Вот почему так важно наличие службы синхронизации времени, безупречно функционирующей в Kerberos-центрической среде Windows. В Windows 2000 и более новых версиях системы службы времени работают без предварительной настройки. Если компьютерные часы на разных компьютерах не синхронизированы, это может обернуться дополнительным трафиком в процессе аутентификации по стандарту Kerberos или же - в худшем случае - такая ситуация может вызвать ошибку в процессе аутентификации.

В дополнение к сказанному протокол Kerberos реализует такие усовершенствованные функции аутентификации, как взаимная аутентификация и делегирование аутентификации. Взаимная аутентификация означает, что пользователь и служба проверяют подлинность друг друга, тогда как возможности NTLM ограничиваются проверкой подлинности пользователя. Без этой функции могут возникать ситуации, когда пользователи предоставляют свои учетные данные фиктивному серверу.

Служба может обращаться к удаленным ресурсам от имени пользователя с помощью механизма делегирования аутентификации. Иными словами, пользователь может предоставлять системе-посреднику право подтвердить от своего имени свою (пользователя) подлинность на сервере приложений. В результате сервер приложений получает возможность принимать решения по авторизации не на базе идентичности системы-посредника, а основываясь на идентичности пользователя. Функция делегирования проверки подлинности весьма полезна в многоуровневых приложениях, таких как доступ к базам данных с помощью внешнего интерфейса на базе Web.

Наконец, надо сказать, что, хотя специалисты Microsoft проделали большую работу по модернизации протокола NTLM, а именно создали версию NTLMv2, которая поддерживается в среде NT4 SP4 и более новых версиях, в продукте Microsoft Kerberos реализовано большее число современных алгоритмов шифрования. Я расскажу об этом подробнее в разделе, посвященном средствам шифрования протокола Kerberos

Ограничения протокола NTLM

Преимущества аутентификации средствами протокола Kerberos сомнения не вызывают. Но даже в среде AD Server 2008 Windows часто использует протокол NTLM, например, когда вы подключаетесь к системе Windows, выпущенной до появления Windows 2000, или при подключении к общедоступному ресурсу с помощью команды net use и IP-адреса (а не имени NetBIOS). Кроме того, приложения, у которых имена участников службы service principal names (SPN) не настроены должным образом, будут по-прежнему использовать протокол NTLM.

Чтобы узнать, каким протоколом - NTLM или Kerberos - вы пользуетесь в данный момент, можете визуализировать трафик NTLM с помощью утилиты netmon или другого трассировщика сети; альтернативный вариант - проверить содержимое кэша билетов Kerberos с помощью инструмента klist (который входит в комплекты поставки Windows 7 и Server 2008). В системах Windows 7 и Server 2008 специалисты Microsoft реализовали новые групповые политики, с помощью которых можно отслеживать, а также блокировать использование протокола NTLM вашими пользователями и приложениями. Всего таких политик три: одна для входящего трафика NTLM (для отслеживания и блокировки на уровне сервера), другая для исходящего трафика NTLM (для отслеживания и блокировки на уровне клиента) и третья для доменного трафика (для отслеживания и блокировки на уровне контроллера домена). Они размещаются в контейнере Security Options Group Policy Object (CPO), попасть в который можно, последовательно выбирая пункты Computer Configuration, Windows Settings, Security Settings, Local Policies (см. экран 1). Все они начинаются с элемента Network security: Restrict NTLM:.

Каждая настройка политики имеет параметры audit и block. Когда вы включаете функцию аудита NTLM, программа создает записи журнала событий с исходными данными NTLM и числами 8001, 8002, 8003 и 8004. Журнальные записи хранятся в контейнере Operational с путем доступа Event Viewer (Local), Applications And Services Logs, Microsoft, Windows, NTLM. Я рекомендую для начала провести аудит NTLM в тестовой среде и позаботиться о том, чтобы там были должным образом представлены все ваши приложения. Если начать произвольно блокировать использование протокола, скорее всего, некоторые приложения функционировать не будут. Чтобы не допустить потери событий, следует перед началом тестирования средств аудита NTLM установить решение для сбора событий аудита; можете воспользоваться встроенной службой Windows Event Collector, средствами Event Subscriptions или решением от независимого поставщика. Кроме того, я рекомендую первым делом начать мониторинг NTLM на серверах. Вы можете подключить клиенты для проведения детального анализа, после того как станет очевидно, что сервер использует протокол NTLM. Уяснив, какие приложения используют NTLM, вы можете разработать стратегию блокировки NTLM. Эта стратегия может включать в себя стратегию исключений для устаревших приложений, которые не могут быть переписаны или перенастроены и которые всегда будут требовать применения NTLM.

К сожалению, упомянутые настройки NTLM нельзя применять на старых системах Windows. Однако эти системы допускают возможность управления версиями протокола NTLM. Вы можете, например, отключить фрагмент LM протокола аутентификации NTLM (поскольку этот фрагмент слаб по самой своей природе) или задать принудительное применение протокола NTLMv2. Для этого следует воспользоваться настройкой Network Security: LAN Manager Authentication Level GPO, которая размещается в контейнере Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options GPO (см. экран 2).

Средства шифрования Kerberos

Криптографические протоколы, используемые протоколами аутентификации, играют важную роль в обеспечении безопасности последних. Как я уже отмечал, в этой области показатели Kerberos выше, чем у протокола NTLM. Алгоритм шифрования RC4 был впервые реализован в протоколе Windows Kerberos в версии Windows 2000 и по сей день поддерживается в системах Server 2008, а также Windows 7 (точнее говоря, поддерживается его версия RC4_HMAC_MD5). В системах Server 2008, Windows Vista и более новых версиях разработчики Microsoft добавили средства поддержки шифрования по стандарту Advanced Encryption Standard, AES, а системы Windows 7 и Server 2008 R2 поддерживают типы шифрования Kerberos AES (AES128_HMAC_SHA1 и AES256_HMAC_SHA1) без предварительной настройки. AES - более новый и мощный алгоритм шифрования, нежели DES. Логика Kerberos на контроллерах доменов перейдет на стандарт шифрования AES, когда вы модернизируете домен AD до уровня Windows 2008 Domain Functional Level (DFL).

В системах Windows 7 и Server 2008 R2 типы шифрования DES для протокола аутентификации Kerberos по умолчанию отключены. Из-за этого могут возникнуть проблемы совместимости, если одно из устаревших приложений жестко закодировано на шифрование только по стандарту DES или если учетная запись Windows, выполняющая ту или иную службу (учетная запись этой службы), настроена на использование только DES-шифрования. Эти службы или приложения выйдут из строя, если вы не сможете перенастроить соответствующую службу либо приложение на поддержку другого типа шифрования (RC4 или AES) либо не восстановите поддержку стандарта DES.

Чтобы выяснить, имеются ли у вас приложения либо службы, закодированные на шифрование исключительно по стандарту DES, можно запустить сетевой трассировщик при старте соответствующего приложения или службы и проверить содержимое полей Etype в заголовках аутентификации Kerberos. Чтобы определить, настроена ли учетная запись пользователя либо компьютера AD или учетная запись компьютера для применения исключительно типов шифрования DES, нужно проверить, выбран ли на вкладке Account свойств объекта параметр Use Kerberos DES encryption types for this account. К этим свойствам можно обратиться из оснастки AD Users and Computers консоли MMC.

Если вы выполните упомянутые выше проверки и окажется, что у вас возникла эта проблема, можете активировать DES-шифрование для аутентификации с помощью Kerberos на компьютерах, функционирующих под Windows 7 или Server 2008 R2, с помощью GPO настройки Network security: настройте типы шифрования, совместимые со стандартом Kerberos; эти настройки расположены в контейнере Computer Configuration, Windows Settings, Security Settings, Local Policies, Security Options GPO.

Итак, из двух протоколов аутентификации Windows предпочтительным является протокол Kerberos. Администраторам следует всегда настаивать на том, чтобы пользователи и приложения применяли именно Kerberos, а не NTLM. Новые ограничения по использованию NTLM, реализованные в системах Windows 7 и Server 2008 R2, открывают перед нами отличную возможность для достижения этой цели.

Жан де Клерк ([email protected]) - сотрудник Security Office компании HP. Специализируется на управлении идентификационными параметрами и безопасностью в продуктах Microsoft


Аутентификация в системах Windows Server 2008 R2 и Windows 7


Недавно столкнулся с такой проблемой: FireFox, Chrome, Opera не хотят проходить NTLM авторизацию . Единственный, кто проходил — так это IE . Забыл сказать, что такая проблема наблюдается на Windows7 . Ниже будет описаны методы устранения этих неполадок.

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

1) набираем в браузере about:config
2) переходим в раздел NetWork и снимаем галочку с параметра Enable NTLM
3) перезапускаем браузер.

Правда есть один нюанс (так сказать неудобство): при первом запуске придётся ввести логин пароль (полностью, то есть с доменом) и поставить галочку «Сохранить» . Теперь при каждом последующем открытии браузера табличка авторизации появляться будет, и нужно будет просто жать «Ок» . Неудобно, но что поделаешь.

Примечание: иногда на некоторых ОС наоборот приходилось включать NTLM-авторизацию . Возможно это так же зависило от версий браузера и ОС.

FireFox, Chrome: они поддерживают, хотя нужно немного по шаманить. Опишу несколько вариантов, которые раздобыл в интернете, возможно вам придётся перепробовать все, пока не найдёте тот, который подошёл вам.

1) нужно будет добавить в реестре HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa параметр под названием LmCompatibilityLevel типа DWORD и присвоить ему значение 1 . После чего надо будет перегрузить компьютер (именно этот вариант мне подошёл)

2) Чтобы Firefox мог проходить ntlm авторизацию, вроде достаточно открыть в адресной строке about:config и изменить параметры на такие:

network.negotiate-auth.delegation-uris = http://,https://
network.negotiate-auth.trusted-uris = http://,https://

После чего перезапустить браузер.

3) Открываем редактор политик (gpedit.msc ) Конфигурация компьютера -> Конфигурация windows -> Параметры безопасности -> Локальные Политики -> Параметры Безопасности -> Сетевая безопасность: уровень проверки подлинности LAN Manager и ставим параметр Отправлять LM и NTLM — использовать сеансовую безопасность NTLMv2 при согласовании .

После чего закрываем политику и перегружаемся.

Если у вас английская версия, тогда так: machine policy-> computer config->windows setting->local policies->security option->Network security: LAN Manager authentication level и выбрать LM & NTLM — Use NTLMv2 session if negotited .

4) Ещё один вариант — это настроить через squid_ldap :

auth_param basic program /usr/lib/squid3/squid_ldap_auth -b "cn=users,dc=office,dc=ru" -f "sAMAccountName=%s" -h 192.168.0.74 -D "cn=administrator,cn=users,dc=office,dc=ru" -w "secpass"
auth_param basic children 5
auth_param basic realm My inet Proxy
auth_param basic credentialsttl 60 minutes

external_acl_type nt_groups %LOGIN /usr/lib/squid3/squid_ldap_group -R -b "cn=users,dc=office,dc=ru" -f "(&(cn=%v)(memberOf=cn=%a,cn=users,dc=office,dc=ru))" -D "cn=administrator,cn=users,dc=office,dc=ru" -w "secpass" -h 192.168.0.74

acl all src 0.0.0.0/0.0.0.0
acl group_inet external nt_groups inet

http_access allow group_inet
http_reply_access allow all
icp_access allow all
http_access deny all

В любом случае пробуйте 🙂

Исследователи годами рассказывают на конференциях о том, что технологии единого входа (Single Sign-on) небезопасны. Такую систему единой аутентификации для всего и сразу уже давно применяет Microsoft, а специалисты по информационной безопасности еще в 1997 году говорили о том, что это не слишком хорошая идея. В очередной раз уязвимость единого входа в целом и в случае работы с SMB-ресурсами в частности продемонстрировал российский исследователь ValdikSS. Он описал способ, который позволяет скомпрометировать Microsoft Account жертвы, деанонимизировать пользователей Microsoft и узнать данные о VPN.

По сути, для успешной реализации атаки злоумышленнику достаточно замаскировать ссылку на собственный SMB-ресурс (сетевые ресурсы: файлы и папки, принтеры и прочее), к примеру, под картинку и заставить жертву ее открыть. Атака работает на всех современных ОС, включая Windows 10 с последними обновлениями. Причем об этих проблемах с NTLM-аутентификацией говорили не только в 1997 году, о них вспоминают регулярно. Так, этот вопрос поднимали (PDF) в прошлом году на конференции BlackHat. К сожалению, от частых упоминаний ничего не меняется.

На «Хабрахабре» пользователь ValdikSS рассказал о том, как можно эксплуатировать этот «баг из 90-х» в наши дни. Исследователь пишет:

«Как только вы пытаетесь открыть ссылку на SMB-ресурс в стандартном браузере (Internet Explorer, Edge) или любом приложении, работающем через стандартные вызовы API Windows или использующим Internet Explorer в качестве движка для отображения HTML (Outlook, проводник Windows), SMB-ресурс сразу получает данные вашей учетной записи еще до того, как вы увидите диалог ввода имени и пароля. Атакующему достаточно, например, добавить ссылку на картинку с SMB-сервера на страницу сайта, или отправить вам письмо, которое достаточно будет просто открыть, и - бум! - данные вашей учетной записи в руках злоумышленника».

Тогда как утечка имени учетной записи и хеша пароля домашнего компьютера не считается катастрофой, то если речь заходит о корпоративном домене, начинается другой совсем разговор.

«Из названия домена обычно несложно понять, к какой организации относится учетная запись, а дальше, в случае успешного подбора пароля, можно попробовать аутентифицироваться на корпоративных ресурсах, доступных из интернета (почта, VPN).

Но пароль не всегда необходимо подбирать. Если вы наперед знаете какой-то ресурс, куда можно входить с использованием NTLM-аутентификации, вы можете в режиме реального времени, как только клиент подключится к вашему SMB-серверу, проксировать запросы от клиента к удаленному серверу и от сервера к клиенту, и успешно на нем аутентифицируетесь!», - объясняет ValdikSS.

Ситуация также усугубляется тем, что в современные ОС Microsoft активно продвигают использование единого Microsoft Account, буквально вынуждая пользователя создать его. Для пользователей Microsoft Account подобные атаки могут быть опасны вдвойне, причем не только для организаций, но и для частных лиц. Дело в том, что в случае атаки на SMB-сервер злоумышленника будут переданы данные, которые, по сути, скомпрометируют Microsoft Account жертвы, а к нему привязано множество сервисов (Skype, Xbox, OneDrive, Office 360, MSN, Bing, Azure и так далее).

Также исследователь пишет, что в ряде случаев атаку можно использовать для извлечения данных о логине и хеше пароля VPN-подключения жертвы.

При этом ValdikSS описал ряд способов эксплуатации проблем с NTLM-аутентификацией. Помимо совсем очевидных вещей, исследователь предложил использовать брешь для деанонимизации пользователей:

«Эксплуатация с целью деанонимизации - поинтересней. Учетка будет отправляться со страниц сайта, если жертва использует Internet Explorer, или при клике внутри письма, в случае с Outlook. Почти все веб-интерфейсы почтовых служб фильтруют картинки со схемой file:// при выводе письма (схема file:// является аналогом схемы \\), но не Яндекс, который не считает это своей уязвимостью (что, в общем-то, корректно). Деанонимизация с использованием почты более опасна, т.к. дает связь не только IP-адреса с аккаунтом Windows, но и с почтой.

Chrome схема file:// тоже работает, но только из адресной строки. Загрузить что-либо с SMB картинкой или при нажатии на ссылку не получится. Так как Chrome гораздо популярней Internet Explorer, придется применять социальную инженерию.

Можно воровать аккаунты себе во благо. Некоторые VPN-провайдеры используют одинаковые логины и пароли как для входа в аккаунт, так и для VPN-аутентификации. Принадлежность аккаунта к тому или иному сервису можно определить по IP-адресу входящего подключения пользователя. А если вам достался Microsoft Account, и вы нашли пароль из хеша, то поздравляю - у вас есть доступ к файлам в облаке OneDrive, почте Outlook, аккаунту Skype, если он привязан к Microsoft-аккаунту, и еще куче всего».

В заключение ValdikSS пишет, что защититься от подобных атак можно, к примеру, ограничив доступ к 445 TCP-порту для всех диапазонов адресов, кроме:

  • 192.168.0.0/16
  • 169.254.0.0/16
  • 172.16.0.0/12
  • 10.0.0.0/8
  • fd00::/8
  • fe80::/10

Также в комментариях к статье пользователи предложили следующий метод:

Windows Registry Editor Version 5.00


"RestrictReceivingNTLMTraffic"=dword:00000002
"RestrictSendingNTLMTraffic"=dword:00000002

Кроме того, исследователь создал специальную страницу , которая позволяет проверить свою систему на уязвимость перед данным типом атак.

Я успешно настроил аутентификацию ntlm. К сожалению, config позволяет получить полуосновную авторизацию. Например, когда я использую черепаху svn1.8.4 (с привилегированным доступом lib), хром или веб-браузеры IE, они успешно завершают работу NTLM, не запрашивая ничего. В файле журнала я вижу пользователей, прошедших проверку подлинности. К сожалению, когда я использую например unconfigured FireFox или Maxthon, этот браузер запрашивает у меня учетные данные. Мне это не нужно, потому что та же ситуация возникает, когда я пытаюсь получить доступ из компьютера без компьютера.

Я использую сервер Windows как контроллер домена, windows7/8 как системный клиент, linux/debian как веб-сервер. Я настроил kerberos из linux do windows AD, winbind для локальной проверки подлинности NTLM и серии apache 2.2. Для клей-аутентификации apache я использую mod_auth_ntlm_winbind.so модуль apache2 и в контексте config/ntlm для поддержки связи с winbind. Это работает правильно, пример для apache:

#defaults for main www directory Options Indexes FollowSymLinks MultiViews AllowOverride None #modified, prevent for any ip access, for future add authless access from specified hosts Order deny,allow deny from all #allow from IP/mask #settings for NTLM auth with winbind helper AuthName "NTLM Authentication" NTLMAuth on NTLMAuthHelper "/usr/bin/ntlm_auth --domain=MY.WINDOWS.DOMAIN --helper-protocol=squid-2.5-ntlmssp" NTLMBasicAuthoritative on AuthType NTLM require valid-user #because ip is default deny satisfy any

Я надеялся, может быть, я могу сделать некоторое перенаправление с использованием переменной apache authtype, а затем добавил в конфигурацию выше перезаписи:

RewriteEngine on RewriteRule ^ /cgi-bin/TestAuth.pl?DollarOne=1&AUTH_TYPE=%{AUTH_TYPE}&REMOTE_USER=%{REMOTE_USER}

И пример скрипта TestAuth.pl как cgi-контент:

#!/usr/bin/perl use strict; use warnings; use Data::Dumper; #easy way for print system variables print "Content-type:text/plain\r\n"; #respectint HTML protocol print "\r\n"; print "Enviroment contains:\r\n"; print "x\r\n"; print Data::Dumper->Dump([\@ARGV,\%ENV],); #prints all script arguments and process variables

К сожалению, во всех случаях, с использованием auth ntlm на основе окон и запроса учетных данных, я всегда вижу, что AUTH_TYPE всегда является NTLM. Тогда нет способа узнать, что делает браузер. В этой ситуации я могу получить доступ от клиентов из домена.

Я попробовал обернуть ntlm hepler strace. К сожалению, я не вижу ничего важного в своем дампе с четырьмя способами, сочетающими успех/неудачу и доступ к IE, вызванный запросом ant FF. Я думаю, что такая же ситуация возникает, когда помощник ntlm аутентифицируется на локальном сервере samba, но я никогда не тестировал это.

Теперь я пытаюсь выполнить некоторую конфигурацию с несколькими типами auth, Basic и NTLM. Сначала я пытаюсь выполнить Basic и отфильтровать это, когда allways fail и перенаправить его на информационную страницу. К сожалению, в настоящее время без успеха с NTLM-микс:(NTLM всегда делается первым.

Тогда у кого-нибудь есть идея, как предотвратить учетные данные? Как отозвать доступ от приглашенных клиентов? Как распознать учетные данные из приглашения или из окна клиента api?

0

2 ответы

В настоящее время я решил эту проблему переключить NTLM на аутентификацию Kerberos. Все готовые к winbind работают непосредственно под kerberos, потому что я ранее настроил kerberos для winbind с коммуникацией сервера AD. Поскольку kerberos открыт, разработчики предсказывали разные субатентификаторы на конечной точке пользователя. Очень полезным является флаг в модуле apache2.2 kerberos:

KrbMethodNegotiate on KrbMethodK5Passwd off

Это то, что я хочу. Браузер получает кадр krb с атрибутом «Не всплывать пользовательские учетные данные», тогда клиент просто этого не делает. Но если да (какая-то несовместимость?), Модуль сервера Apache должен обнаружить это и должен отозвать аутентификацию.

Используя NTLM от Microsoft, это невозможно, потому что протокол испорчен. Первый кадр NTLM после возврата кода 201 веб-сайта не имеет возможности для добавления атрибута «не запрашивать пользователя для учетных данных». Затем я могу отфильтровать этот кадр после всплывающего окна или знака ключа сеанса ОС. Этот браузер всегда показывает всплывающее окно, когда ключ сеанса OS недоступен.

В конце концов это еще один шанс. Пользователь занимает некоторое время для ввода учетных данных или принимает, когда учетные данные хранятся в браузере. Я могу подсчитать время между отправкой фрейма auth в браузер и скомпонованием кадра из клиента. Когда время слишком велико, я могу отменить. К сожалению, это может сделать ложную неавторизацию на занятых компьютерах или сетях.

Я буду использовать оба метода в будущем:) Это будет забавно, если все можно будет сделать с помощью apach winbind auth module. Затем вся конфигурация может быть инкапсулирована под apache, такая же, как и для kerberos auth.

Спасибо всем за интересные, исследования и помощь:)

Использование проверки подлинности NTLM не гарантирует авторизацию без учета учетных данных. Если у вас есть допустимые учетные данные Windows, которые сервер может распознать, вы не получите приглашение пароля.

Если у пользователя нет действительных пропущенных учетных данных NTLM, им будет предложено предоставить их. Это не способ вернуться к «базовой» аутентификации.

К сожалению, невозможно определить, предоставил ли пользователь учетные данные или прошел ли они через систему.

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