LDAP (англ. Lightweight Directory Access Protocol — «легкорасширяемый протокол доступа к каталогам») — протокол прикладного уровня для доступа к службе каталогов X.500, разработанный IETF как облегчённый вариант разработанного ITU-T протокола DAP. LDAP — относительно простой протокол, использующий TCP/IP и позволяющий производить операции аутентификации (bind), поиска (search) и сравнения (compare), а также операции добавления, изменения или удаления записей. Обычно LDAP-сервер принимает входящие соединения на порт 389 по протоколам TCP или UDP. Для LDAP-сеансов, инкапсулированных в SSL, обычно используется порт 636.
Всякая запись в каталоге LDAP состоит из одного или нескольких атрибутов и обладает уникальным именем (DN — англ. Distinguished Name ). Уникальное имя может выглядеть, например, следующим образом: «cn=Иван Петров,ou=Сотрудники,dc=example,dc=com» [1] . Уникальное имя состоит из одного или нескольких относительных уникальных имён (RDN — англ. Relative Distinguished Name ), разделённых запятой. Относительное уникальное имя имеет вид ИмяАтрибута=значение. На одном уровне каталога не может существовать двух записей с одинаковыми относительными уникальными именами. В силу такой структуры уникального имени записи в каталоге LDAP можно легко представить в виде дерева.
Запись может состоять только из тех атрибутов, которые определены в описании класса записи (object class), которые, в свою очередь, объединены в схемы (schema). В схеме определено, какие атрибуты являются для данного класса обязательными, а какие — необязательными. Также схема определяет тип и правила сравнения атрибутов. Каждый атрибут записи может хранить несколько значений.
Содержание
Стандарты [ править | править код ]
Протокол LDAP определён в следующих RFC:
- RFC 4510 — Lightweight Directory Access Protocol (LDAP): Technical Specification Roadmap (заменяет RFC 3377)
- RFC 4511 — Lightweight Directory Access Protocol (LDAP): The Protocol
- RFC 4512 — Lightweight Directory Access Protocol (LDAP): Directory Information Models
- RFC 4513 — Lightweight Directory Access Protocol (LDAP): Authentication Methods and Security Mechanisms
- RFC 4514 — Lightweight Directory Access Protocol (LDAP): String Representation of Distinguished Names
- RFC 4515 — Lightweight Directory Access Protocol (LDAP): String Representation of Search Filters
- RFC 4516 — Lightweight Directory Access Protocol (LDAP): Uniform Resource Locator
- RFC 4517 — Lightweight Directory Access Protocol (LDAP): Syntaxes and Matching Rules
- RFC 4518 — Lightweight Directory Access Protocol (LDAP): Internationalized String Preparation
- RFC 4519 — Lightweight Directory Access Protocol (LDAP): Schema for User Applications
- RFC 4520 (aka BCP 64) — Internet Assigned Numbers Authority (IANA) Cons > Функциональное описание протокола [ править | править код ]
В протоколе LDAP определены следующие операции для работы с Каталогом:
- Операции подключения/отключения
- Подключение (bind) — позволяет ассоциировать клиента с определённым объектом Каталога (фактическим или виртуальным) для осуществления контроля доступа для всех прочих операций чтения/записи. Для того, чтобы работать с Каталогом, клиент обязан пройти аутентификацию как объект, отличительное имя (Distinguished Name) которого находится в пространстве имён, описываемом Каталогом. В запросе операции bind клиент может не указывать отличительное имя, в таком случае будет осуществлено подключение под специальным псевдонимом anonymous (обычно это что-то наподобие гостевой учетной записи с минимальными правами)
- Отключение (unbind) — позволяет клиенту в рамках сеанса соединения с LDAP-сервером переключиться на аутентификацию с новым отличительным именем. Команда unbind возможна только после аутентификации на сервере с использованием bind, в противном случае вызов unbind возвращает ошибку
Логические операторы представлены стандартным «набором»: & (логическое «И»), | (логическое «ИЛИ») и ! (логическое «НЕ»).
Пример фильтра поиска [ где? ] :
(&(!(entryDN:dnSubtreeMatch:=dc=Piter,dc=Russia,ou=People,dc=example,dc=com))(object >(|(sn=Lazar*)(u >
- Операции модификации — позволяют изменять данные в Каталоге, при этом в понятие модификации входит как добавление, удаление и перемещение записей целиком, так и редактирование записей на уровне их атрибутов. Подтипы модификации:
- Добавление (add) — добавление новой записи
- Удаление (delete) — удаление записи
- Модификация RDN (modrdn) — перемещение/копирование записи
- Модификация записи (modify) — позволяет редактировать запись на уровне её атрибутов,
- добавляя новый атрибут или новое значение многозначного атрибута (add)
- удаляя атрибут со всеми его значениями (delete)
- заменяя одно значение атрибута на другое (replace)
- а также увеличивая (уменьшая) значение атрибута в рамках атомарной операции (increment)
Операция запроса возможностей [ править | править код ]
В стандарте LDAP определена специальная операция, позволяющая клиентам получать информацию о поддерживаемых сервером версиях протокола и возможностях LDAP-сервера. Эта команда является надстройкой (расширением) для операции search и выполняется при следующем сочетании параметров последней:
- BIND анонимный
- База поиска baseDN указана как "" (пустая строка)
- Глубина поиска scope указана как base
- Фильтр поиска: (object >Например, при использовании LDAP-клиента из поставки OpenLDAP команда запроса возможностей может выглядеть как:
ldapsearch -x -H ldap://host:port -LLL -b "" -s base ‘(object >
Операция запроса схемы [ править | править код ]
Для запроса информации о действующей схеме LDAP-каталога прежде необходимо выполнить Операцию запроса возможностей, получив значение атрибута subschemaSubentry.
ldapsearch -x -H ldap://host:port -LLL -s base -b "" ‘(object >
Полученное значение используется в качестве Отличительного имени базы поиска (baseDN) в Операции запроса схемы, которую можно описать так:
- BIND анонимный, либо полный. Большинство серверов каталогов поддерживают запрос схемы без предварительного BIND, но, есть исключения (например, Active Directory);
- База поиска baseDN равна значению атрибута subschemaSubentry, возвращаемого Операцией запроса возможностей;
- Глубина поиска scope указана как base;
- Фильтр поиска: (object >Например, при использовании LDAP-клиента из поставки OpenLDAP Операция запроса схемы может выглядеть так:
ldapsearch -x -H ldap://host:port -LLL -s base -b "cn=Subschema" ‘(object >
Реализации [ править | править код ]
Серверная часть [ править | править код ]
LDAP является широко используемым стандартом доступа к службам каталогов. Из свободно распространяемых открытых реализаций наиболее известен сервер OpenLDAP, из проприетарных — поддержка протокола имеется в Active Directory — службе каталогов от компании Microsoft, предназначенной для централизации управления сетями Windows. Сервер IBM Lotus Domino в своём составе также имеет службу LDAP. [2] [3] Свои реализации служб каталогов, поддерживающие LDAP как протокол доступа, предлагают и другие крупные компании, например, Novell и Sun — OpenDS [en] и, впоследствии, OpenDJ.
Перечень наиболее известных на сегодняшний день LDAP-серверов:
Клиентская часть [ править | править код ]
В качестве клиентов LDAP выступают как адресные книги почтовых клиентов, так и back-end’ы различных сетевых служб (серверы DNS, SMTP, Samba, UTS и т. д.).
По-умолчанию в Active Directory трафик по протоколу LDAP между контроллерами домена и клиентами не шифруется, т.е. данные по сети передаются в открытом виде. Потенциально это означает, что злоумышленник с помощью снифера пакетов может прочитать эти данные. Для стандартной среды Windows среды это в общем-то не критично, но ограничивает возможности разработчиков сторонних приложений, которые используют LDAP.
Так, например, операция смены пароля должна обязательно осуществляться через безопасный канал (например Kerberos или SSL/TLS). Это означает, что например, с помощью функции-php, обеспечивающей работу с AD по протоколу LDAP изменить пароль пользователя в домене не удастся.
Защитить данные, передаваемых по протоколу LDAP между клиентом и контроллером домена можно с помощью SSL версии протокола LDAP – LDAPS, который работает по порту 636 (LDAP «живет» на порту 389). Для этого на контроллере домена необходимо установить специальный SSL сертификат. Сертификат может быть как сторонним, выданным 3-ей стороной (например, Verisign), самоподписанным или выданным корпоративным центром сертификации.
В этой статье мы покажем, как с помощью установки сертификата задействовать LDAPS (LDAP over Secure Sockets Layer) на котроллере домена под управление Windows Server 2012 R2. При наличии требуемого сертификата служба LDAP на контроллере домена может устанавливать SSL соединения для передачи трафика LDAP и трафика сервера глобального каталога (GC).
Отметим, что LDAPS преимущественно используется сторонними приложениями (имеются в виде не-Microsoft клиенты) в целях защиты передаваемых по сети данных (обеспечить невозможности перехвата имена и паролей пользователей и других приватных данных).
Предположим, в вашей инфраструктуре уже развернут корпоративный удостоверяющий сервер Certification Authority (CA). Это может быть как полноценная инфраструктура PKI, так и отдельной-стоящий сервер с ролью Certification Authority.
На севере с ролью Certification Authority запустите консоль Certification Authority Management Console, выберите раздел шаблонов сертификатов (Certificate Templates ) и в контекстном меню выберите Manage. 
Найдите шаблон Kerberos Authentication certificate и создайте его копию, выбрав в меню Duplicate Template. 
На вкладке General переименуйте шаблон сертификата в LDAPoverSSL, укажите период его действия и опубликуйте его в AD (Publish certificate in Active Directory). 
На вкладке Request Handling поставьте чекбокс у пункта Allow private key to be exported и сохраните шаблон.

На базе созданного шаблона, опубликуем новый тип сертификата. Для этого, в контекстном меню раздела Certificate Templates выберем пункт New -> Certificate Template to issue.

Из списка доступных шаблонов выберите LDAPoverSSL и нажмите OK.

На контроллере домена, для которого планируется задействовать LDAPS, откройте оснастку управления сертификатами и в хранилище сертификатов Personal запросим новый сертификат (All Tasks -> Request New Certificate).

В списке доступных сертификатов выберите сертификат LDAPoverSSL и нажмите Enroll (выпустить сертификат).

Следующее требование – необходимо, чтобы контроллер домена и клиенты, которые будут взаимодействовать через LDAPS доверяли удостоверяющему центру (CA), который выдал сертификат для контроллера домена.
Если это еще не сделано, экспортируем корневой сертификат удостоверяющего центра в файл, выполнив на сервере с ролью Certification Authority команду:
certutil -ca.cert ca_name.cer 
А затем добавьте экспортированный сертификат в контейнере сертификатов Trusted Root Certification Authorities хранилища сертификатов на клиенте и контроллере домена. Сделать это можно через вручную через оснастку управления сертификатами, через GPO или из командной строки (подробнее здесь).
certmgr.exe -add C:ca_name.cer -s -r localMachine ROOT
Необходимо перезапустить службы Active Directory на контроллере домена, либо целиком перезагрузить DC.
Осталось протестировать работу по LDAPS. Для этого на клиенте запустим утилиту ldp.exe и в меню выбираем Connection-> Connect->Укажите полное (FQDN) имя контроллера домена, выберите порт 636 и отметьте SSL -> OK. Если все сделано правильно, подключение должно установиться.
Порты Active Directory
Порты Active Directory
Добрый день! Уважаемые читатели, подписчики и юные падаваны, познающие компьютерные хитрости. Хочу сегодня поделиться очень полезной и жизненной информацией, которую просто обязан знать любой системный администратор, особенно тот кто хочет устроиться на работу. В сегодняшней статье я хочу вам рассказать, по каким портам работает служба каталогов Active Directory. Данную информацию спрашивают практически на любом собеседовании на должность админа, сетевого инженера или представителя технической поддержки, так как это основа основ на большинстве современных предприятий, которую вы должны знать как отче наш.
По каким портам работает Active Directory
Если вы только знакомитесь с активным каталогом Active Directory, то я вам советую почитать, о ней подробнее по ссылке слева. Самый правильный метод получения списка портов и служб, это не гугление или яндексение, а на практике все проверить самому. Для таких вещей у вас под рукой должен быть сканер портов, в задачи которого входит просмотр открытых и активных портов, по которым слушает тот или иной сервис или сервер. Я вам ранее рассказывал подробно, про то, как проверить доступность портов на сервере, поэтому останавливаться на этом не буду, кому интересно переходите по ссылке и читайте.
Данное знание, окажется вам необходимым, когда вы будите настраивать доверительные отношения между лесами, когда вам будет необходимо сетевым инженерам сообщить, какие порты потребуется открыть на их сетевом оборудовании для корректной работы Active Directory.
Открываю свой порт-сканер и натравливаю его на свой свежеустановленный домен на Windows Server 2019 (/install-active-directory-windows-server-2019/). По результатам я вижу два контроллера домена dc01.root.pyatilistnik.org и dc02.root.pyatilistnik.org. Справа от них в соответствующем поле я вижу полный список портов, используемых Active Directory. Давайте подробнее остановимся на каждом из них.

- 53 порт — на нем работает DNS-сервер. Используется как TCP так и UDP, по UDP передаются зоны. Так же порт участвует в трастовых отношениях между доменами.
- 88 TCP и UDP порт — это краеугольная служба Kerberos, про ее алгоритм я подробно писал. Это протокол аутентификации.Используется в доверительных отношениях между лесами. Тип трафика Kerberos.
- 135 TCP и UDP — для операций взаимодействия контроллер-контроллер и контроллер-клиент, если сказать проще, то копирование. Тип трафика RPC или EPMAP
- 137 UDP — аутентификация пользователя и компьютера. Тип трафика NetLogon, разрешение имен NetBIOS.
- 138 TCP и UDP — DFS, групповая политика. Тип трафика DFSN, NetLogon, служба дейтаграмм NetBIOS
- 139 TCP и UDP — Аутентификация пользователя и компьютера, репликация. Тип трафика DFSN, служба сеансов NetBIOS, NetLogon.
- 389 порт — LDAP запросы от клиентов к контроллеру домена. Тип трафика LDAP
- 445 порт — MICROSOFT-DS — используется в Microsoft Windows 2000 и поздних версий для прямого TCP/IP-доступа без использования NetBIOS. Типы трафика SMB, CIFS, SMB2, DFSN, LSARPC, NbtSS, NetLogonR, SamR, SrvSvc.
- 464 порты UDP и TCP — через данный порт идет смена пароля пользователя. Тип трафика Kerberos (изменить / установить пароль)
- 593 порт — Тип трафика HTTP-RPC-EPMAP, может быть использован в DCOM и MS Exchange службах
- 636 TCP и UDP — LDAPS с шифрованием SSL или TLS. Тип трафика LDAP SSL
- 3268 — для доступа к Global Catalog от клиента к контроллеру, через LDAP. Тип трафика LDAP GC.
- 3269 — для доступа к Global Catalog от клиента к контроллеру, через LDAPS. Тип трафика LDAP GC SSL
- 5722 TCP — Репликация файлов. Тип трафика RPC, DFSR (SYSVOL).
- 9389 TCP — Веб-службы AD DS. Тип трафика SOAP
Так же вы можете обнаружить дополнительные порты которые можно встретить на контроллерах домена:
- 3389 — это порт подключения по RDP протоколу к контроллеру домена
- 67 TCP и 2535 UDP — эти порты относятся к DHCP службе, которую очень часто ставят вместе с Active Directory на одном контроллере домена.
- 123 UDP — NTP сервер в Active Directory





