LDAP (Lightweight Directory Access Protocol, облегчённый протокол доступа к каталогу) — протокол прикладного уровня для работы со службами каталогов. Каталог в терминах LDAP — иерархическая база данных, оптимизированная для операций чтения, хранящая информацию об объектах сети: пользователях, группах, компьютерах, принтерах. Стандарт RFC 4511 (LDAPv3).
Как работает
LDAP-каталог организован как дерево (Directory Information Tree, DIT). Каждый объект (entry) идентифицируется уникальным именем DN (Distinguished Name):
cn=Иван Иванов,ou=Developers,dc=company,dc=ru
Компоненты DN:
cn(Common Name) — имя объекта.ou(Organizational Unit) — подразделение.dc(Domain Component) — компонент домена.
Основные операции LDAP: bind (аутентификация), search (поиск), add (добавление), modify (изменение), delete (удаление). Поиск задаётся фильтрами в LDAP-синтаксисе: (&(objectClass=person)(mail=ivan@company.ru)).
LDAP работает на порту 389 (незашифрованный) или 636 (LDAPS — LDAP over TLS). При интеграции со сторонними приложениями (Nginx, GitLab, почтовые серверы) используется bind-аутентификация: приложение подключается к LDAP с сервисной учётной записью и проверяет учётные данные пользователя.
LDAP и Active Directory
Microsoft Active Directory — служба каталогов на основе LDAP. Active Directory добавляет поверх LDAP: Kerberos-аутентификацию (более безопасная, чем LDAP Simple bind), политики групп (Group Policy), репликацию между контроллерами домена. Большинство корпоративных приложений поддерживают LDAP-аутентификацию именно для интеграции с Active Directory.
Основные LDAP-сервера
- OpenLDAP — наиболее распространённая open-source реализация LDAP для Linux. Бесплатная.
- Microsoft AD DS — Active Directory Domain Services. Windows Server.
- FreeIPA — Red Hat / community решение: LDAP + Kerberos + DNS + CA.
- 389 Directory Server — Red Hat Directory Server, open-source.
История
X.500 — международный стандарт служб каталогов (ISO/IEC 9594, 1988). DAP (Directory Access Protocol) — исходный протокол доступа к X.500 — был слишком тяжёлым для TCP/IP-сетей. В 1993 году Тим Хоувс и коллеги из Университета Мичигана создали LDAP как упрощённый (Lightweight) вариант DAP для TCP/IP. LDAPv2 (RFC 1777, 1995) получил широкое распространение. LDAPv3 (RFC 2251, 1997; RFC 4511, 2006) добавил TLS, SASL, расширения. Microsoft включил LDAP в Windows NT 4.0 Active Directory (1996).
На что обращать внимание
Используйте LDAPS (порт 636) или StartTLS — незашифрованный LDAP (порт 389) передаёт пароли в открытом виде. Service account для bind-аутентификации должен иметь минимальные права (только чтение нужных атрибутов). Базовая DN для поиска должна быть как можно уже (OU= конкретного отдела), а не корень дерева — это снижает нагрузку на сервер при больших каталогах. Тестировать LDAP-запросы удобно через ldapsearch: ldapsearch -x -H ldap://server -D "cn=admin,dc=company,dc=ru" -W -b "dc=company,dc=ru".
LDAP в хостинге
LDAP (Lightweight Directory Access Protocol) используется для централизованной аутентификации: один каталог пользователей → доступ к нескольким сервисам. Интеграция с nginx: модуль ngx_http_auth_ldap_module аутентифицирует через LDAP. GitLab: встроенная LDAP-интеграция — пользователи входят через корпоративные учётные данные. Active Directory — реализация LDAP от Microsoft. OpenLDAP — open-source реализация на Linux. Kerberos используется вместе с LDAP для Single Sign-On (SSO). На VPS: OpenLDAP устанавливается как Docker-контейнер или пакет (apt install slapd). FreeIPA — комплексное решение (LDAP + Kerberos + DNS + Certificate Authority) для Linux-инфраструктуры.