Для лиги лени: что-то занудное, и с ошибками
Security Support Provider Interface (SSPI), Service Principal Name (SPN), и вот это все (нет).
Шагая от звезды к звезде, Лек подошел к Ответчику, положил его на ладонь и поднес к глазам.
- Значит, ты Ответчик? - проговорил он.
- Да, - отозвался Ответчик.
- Тогда скажи мне, - попросил Лек, устраиваясь поудобнее в промежутке между звездами. - Скажи мне, что я есть?
- Частность, - сказал Ответчик. - Проявление.
- Брось, - обиженно проворчал Лек. - Мог бы ответить и получше... Теперь слушай. Задача мне подобных - собирать багрянец и сгребать его в кучу. Каково истинное значение этого?
- Вопрос бессмысленный, - сообщил Ответчик. Он знал, что такое багрянец и для чего предназначена куча. Но объяснение таилось в большом объяснении. Лек не сумел правильно поставить вопрос.
Lek came to Answerer, striding swiftly from star to star. He lifted Answerer in his hand and looked at him.
“So you are Answerer,” he said.
“Yes,” Answerer said.
“Then tell me,” Lek said, settling himself comfortably in a gap between the stars, “Tell me what I am.”
“A partiality,” Answerer said. “An indication.”
“Come now,” Lek muttered, his pride hurt. “You can do better than that. Now then. The purpose of my kind is to gather purple, and to build a mound of it. Can you tell me the real meaning of this?”
“Your question is without meaning,” Answerer said. He knew what purple actually was, and what the mound was for. But the explanation was concealed in a greater explanation. Without this, Lek’s question was inexplicable, and Lek had failed to ask the real question.
В первой части я остановился на временах Windows NT Directory Services (NTDS), от которого остались протоколы семейства LanManager - NTLMv1 / NTLMv2, и начале работы NTDS с Lightweight Directory Access Protocol (LDAP), вместе с NetWare Directory Services
Configure NetWare
This configuration lets the Policy Server log into the Novell eDirectory, view the contents of the directory, and retrieve directory attributes. Some advanced features can possibly require you to configure the Novell eDirectory to allow the Policy Server write-access
If LDAP is part of your Novell eDirectory installation, name a server in Novell eDirectory "LDAP Server",and an LDAP group named "LDAP Group." LDAP Server is a member of the LDAP Group.
Configure a Novell eDirectory LDAP Directory Connection
Как очевидно и общеизвестно, с протоколом (или, через протокол) LDAP в конце 90х работали все сервисы каталогов - Novell eDirectory, Banyan VINES, NTDS. Но, в феврале 2000 выходит Windows 2000, которая, за счет сочетания удобства (для крупных организаций. Для небольших все эти леса, деревья и кросс-доменное доверие не очень нужно), рекламы, и – для Banyan OS 0 - работы с драйверами, начала захватывать корпоративный рынок. В октябре 1999 Banyan Worldwide стала ePresence, и в 2003 ее история закончилась.
Corvus Systems, LANtastic – про этих сейчас никто и не вспомнит.
В 1989 Novell NetWare занимала порядка 50% рынка сетевых операционных систем (NOS). В 1993 году доля Novell NetWare выросла до 60-70% .
At its high point around 1993, NetWare had a roughly two-thirds share of the market for network operating systems;[35][34] one analysis put the figure at 63 percent.[46] There were over half a million NetWare-based networks installed worldwide[57] and some 55 million NetWare users on those networks.
Но, в 1993-1994 годах Novell поставила своих покупателей перед сложным выбором: или вы берете и переезжает (сложно и задорого) на NetWare 4, или как хотите. В таких условиях часть покупателей выбрала Windows NT.
К марту 1996 года стоимость акций Novell упала с 40$ до, сначала 33, затем до 12 $. Доля рынка упала до 26 %, в то же время доля Windows NT выросла до 36%.
К 2000 от Novell стали уходить остатки крупных заказчиков, и на этом основная часть истории «той» Novell и «той» NetWare закончилась, и началась и история с Suse.
Вспоминаем что такое AAA: Authentication, authorization, and accounting
Authentication: выяснение и подтверждение, кто ты такой,
Authorization: выдача тебе прав, или роли с правами,
Accounting: учет того, что ты делаешь
Одна из проблем «ранних» компьютерных сетей, да, впрочем, и современных (с оговорками), это использование «общей среды передачи данных» - CSMA/CD (Carrier-Sense Multiple Access with Collision Detection). Соответственно, все компьютеры сети «тогда» видели все сетевые пакеты, и любой обмен данными в открытом виде мог быть и бывал перехвачен.
В том числе поэтому в Windows был использован сначала протокол NT (New Technology) LAN Manager (NTLM), а затем и протокол Kerberos.
Kerberos – это не разработка Microsoft, это разработка Massachusetts Institute of Technology из 1989 года. Но, Microsoft его использует, как и все остальные, так что говорить «вот в Microsoft LDAP \ Kerberos \ DES \ AES» - для меня звучит как «Samsung и Toshiba работают от сети 220 вольт, а не от сети 128 вольт».
Дальше начинается идеологическая и иерархическая путаница, кто что делает, особенно если мы начинаем говорить про работу Microsoft Active Directory.
В теории, на этапе Authentication ты должен по протоколу Kerberos (или какому-то другому) показать локальному сервису свой пароль, локальный сервис преобразует пароль в ключ, получает сеансовый тикет и дальше случается магия. Практически ситуация чуть сложнее и описана в статье MS Ticket-Granting Tickets.
После того, как у тебя появился мультипаспорт TGT, ты можешь в составе Kerberos пакета получить свой список SID от групп, ограниченный только Kerberos SSPI context token buffer size, и уже показывать TGT там, где тебе нужен доступ.
Надо отдельно заметить, что не Kerberos единым живет AD – в составе Windows Server есть отдельный сервис Active Directory Federation Services (AD FS) , работающий с OpenID Connect/OAuth.
MS LDAP, аутентификация и авторизация.
Документация MS написано настолько криво, что может создаться впечатление, что внутри самого MS LDAP есть зачатки аутентификации, оно же simple bind. При этом вопрос «где тут Kerberos, а где LDAP» раскрыт еще хуже.
Windows Server Active Directory (AD) uses the Lightweight Directory Access Protocol (LDAP) to communicate between the directory service, clients, and applications. LDAP is an open, industry-standard protocol used for accessing directory services on Internet Protocol (IP) networks.
Microsoft Delays LDAP Signing and Channel Binding Changes in Active Directory
You can significantly improve the security of a directory server by configuring the server to reject Simple Authentication and Security Layer (SASL) LDAP binds that do not request signing (integrity verification), or to reject LDAP simple binds that are performed on a clear text (non-SSL/TLS-encrypted) connection. SASL binds may include protocols such as Negotiate, Kerberos, NTLM, and Digest.
How to enable LDAP signing in Windows Server
Как ни странно, и может даже и неправильно, вопрос «как вообще это работает» раскрыт в инструкции к Ansible - microsoft.ad.ldap inventory – Inventory plugin for Active Directory , и частично в документации к LDAP3 – раздел SSL and TLS, из которой можно перейти к статье MS SASL: The Simple Authentication and Security Layer - 3.1.1.3.4.5 LDAP SASL Mechanisms
После этого остается только прочитать про keytab – ktpass, и остальные ссылки ниже
MS LDAP поддерживает следующие методы аутентификации (authentication):
Anonymous Bind
LDAPS/StartTLS – если это было настроено.
simple – логин и пароль шлются чистым текстом
Kerberos – авторизация идет через Kerberos
ntlm – если вы почему-то его до сих пор не выключили для локальных машин, потому что выключить его вы до сих пор не можете. Как не можете обойти и ограничения AD16 - NetBIOS name, максимальная длина 15 символов.
LDAP and Kerberos Server may not respond to UDP requests or reset TCP sessions immediately after creation
This article provides a solution to an issue where Transmission Control Protocol (TCP) sessions created to the server ports 88, 464, 389 and 3268 are reset. Sessions using Secure Sockets Layer (SSL) or Transport Layer Security (TLS) on ports 636 and 3269 are also affected.
You may also notice requests on User Datagram Protocol (UDP) ports 88 and 464 don't get a response.
Не самая плохая статья на неофициальном сайте минцифры: Kerberos простыми словами. Ссылки не будет.
Windows App Development Context Requirements