ИТ База знаний
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Популярное и похожее
Погружение в Iptables – теория и настройка
Создание доменного пользователя и ввод компьютера в домен
URL и URI — в чем различие?
Telegram чат для сисадминов
NMS системы – полный контроль
Конвертация виртуальных машин/дисков
Apache или IIS – сравнение и преимущества
Avaya 1616-I BLK C2
Еженедельный дайджест
Что такое Active Directory и LDAP?
Работаем с каталогами
Active Directory, который является службой каталогов играет такую важную роль в структуре ИТ-инфраструктуры большинства организаций.
Служба каталогов — это система программного обеспечения, которая хранит, организует и предоставляет доступ к информации в каталоге операционной системы компьютера. В разработке программного обеспечения каталог представляет собой карту между именами и значениями. Это позволяет искать именованные значения, аналогично словарю. Чаще всего используется для представления персонала, материальных или сетевых ресурсов.
Коротко говоря: AD — это база данных служб каталогов, а LDAP — один из протоколов, которые вы можете использовать для общения с ней. LDAP — это протокол, а Active Directory — это сервер.

Что такое Active Directory?
Active Directory — это реализация служб каталогов, которая предоставляет все виды функций, таких как аутентификация, управление группами и пользователями, администрирование политик и многое другое. Active Directory служит единым хранилищем данных для быстрого доступа к данным для всех пользователей и контролирует доступ для пользователей на основе политики безопасности каталога.
Active Directory (AD) поддерживает как Kerberos, так и LDAP — Microsoft AD на сегодняшний день является наиболее распространенной системой служб каталогов, используемой сегодня. AD обеспечивает Single-SignOn (SSO) и хорошо работает в офисе и через VPN. AD и Kerberos не являются кроссплатформенными, что является одной из причин, по которой компании внедряют программное обеспечение для управления доступом для управления входами с разных устройств и платформ в одном месте. AD поддерживает LDAP, что означает, что он все еще может быть частью вашей общей схемы управления доступом.
Active Directory — это только один пример службы каталогов, которая поддерживает LDAP. Также есть и другие варианты: служба каталогов Red Hat, OpenLDAP, сервер каталогов Apache и другие.
А еще Active Directory можено интегрировать с Asterisk
Что такое LDAP?
LDAP (Lightweight Directory Access Protocol) — это открытый и кроссплатформенный протокол, используемый для аутентификации служб каталогов.
LDAP позволяет приложениям взаимодействовать с другими серверами служб каталогов. Это важно, потому что службы каталогов хранят и передают важную конфиденциальную информацию, связанную с пользователями, паролями и учетными записями компьютеров.
Как Active Directory и LDAP работают вместе?
Active Directory поддерживает LDAP, что означает, что вы можете объединить их, чтобы улучшить управление доступом. Фактически, многие различные службы каталогов и решения для управления доступом могут понимать LDAP, что делает его широко используемым в средах без Active Directory.
Что такое аутентификация LDAP?
В LDAP v3 есть два варианта аутентификации LDAP — простой и SASL (Simple Authentication and Security Layer).
Простая аутентификация допускает три возможных механизма аутентификации:
- Анонимная аутентификация: предоставляет клиенту анонимный статус для LDAP.
- Аутентификация без аутентификации: только для целей регистрации, не должна предоставлять доступ клиенту.
- Аутентификация по имени или паролю: Предоставляет доступ к серверу на основе предоставленных учетных данных — простая аутентификация пользователя или пароля не является безопасной и не подходит для аутентификации без защиты конфиденциальности.
Аутентификация SASL связывает сервер LDAP с другим механизмом аутентификации, таким как Kerberos. Сервер LDAP использует протокол LDAP для отправки сообщения LDAP другой службе авторизации. Это инициирует серию ответных сообщений запроса, которые приводят либо к успешной аутентификации, либо к неудачной аутентификации.
Важно отметить, что по умолчанию LDAP передает все эти сообщения в виде открытого текста, поэтому любой человек, имеющий сетевой анализатор, может читать пакеты. Вам нужно добавить шифрование TLS или подобное, чтобы сохранить ваши имена пользователей и пароли в безопасности.
Что такое запрос LDAP?
Запрос LDAP — это команда, которая запрашивает у службы каталогов некоторую информацию. Например, если вы хотите увидеть, в какие группы входит конкретный пользователь, отправьте запрос, который выглядит следующим образом:
Синтаксис не очень простой, но в официальном вики можно найти много примеров.
Было полезно?
Почему?
😪 Мы тщательно прорабатываем каждый фидбек и отвечаем по итогам анализа. Напишите, пожалуйста, как мы сможем улучшить эту статью.
😍 Полезные IT – статьи от экспертов раз в неделю у вас в почте. Укажите свою дату рождения и мы не забудем поздравить вас.
Активируем LDAP over SSL (LDAPS) в Windows Server 2012 R2
По-умолчанию в 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. Если все сделано правильно, подключение должно установиться.
Часть 1. Обзор LDAP
Серия контента:
Этот контент является частью # из серии # статей: Работа с данными Active Directory c помощью сценариев
Этот контент является частью серии: Работа с данными Active Directory c помощью сценариев
Следите за выходом новых статей этой серии.
В корпоративной среде часто возникает необходимость создания неких справочников, содержащих адреса электронной почты, телефоны или другую информацию о всех сотрудниках, что приводит к появлению различных приложений разной степени работоспособности. Однако, возможно, разрабатывать новые приложения и не потребуется, если суметь воспользоваться уже имеющимися ресурсами, например Microsoft Active Directory, который нередко используется для построения внутренней сети.
В приведенных ниже примерах используется имя домена – shelton.int, короткое имя — CATS.
Часто используемые сокращения:
- AD – Active Directory (служба каталогов);
- LDAP – Lightweight Directory Access Protocol (облегченный протокол доступа к каталогам);
- DN – Distinguished Name (уникальное имя).
Подключение к службе Active Directory и просмотр объектов
Если рассматривать любой контроллер домена Windows как LDAP-сервер, то становится очевидным, что с ним можно работать стандартными средствами, предназначенными для чтения и записи данных в LDAP. Так, на нем можно обнаружить список открытых портов, похожий на приведенный в листинге 1 (из списка удалены порты, не относящиеся к LDAP):
Листинг 1. Список открытых портов типичного контроллера домена Windows
Как видно из листинга 1, контроллер домена предоставляет все необходимые сервисы: ldap на порту 389, ldap over ssl на порту 636 и т.д. В данном случае компания Microsoft не стала разрабатывать собственное решение, а воспользовалась хорошо известной и документированной службой LDAP. Правда, сама схема LDAP от Microsoft значительно отличается от существующих аналогов, так в листинге 2 приведено описание стандартного объекта «пользователь» (некоторые поля были опущены), полученное с помощью утилиты ldapsearch.
Листинг 2. Поля стандартного объекта AD «пользователь», создаваемые по умолчанию.
Для просмотра и редактирования объектов, загруженных из LDAP, существуют различные программы, например, GUI-приложение ldapbrowser, написанное на Java, или ldapsearch — программа, работающая из командной строки.
Программа ldapsearch — это важный инструмент администратора LDAP-сервера, примерно как ping и traceroute для системного администратора. Она позволяет загружать и использовать практически любые данные, существующие в LDAP. Некоторая проблема может возникнуть из-за того, что в этой программе используется собственный язык запросов. Он построен в соответствии с принципом «обратной польской записи», как в старинных программируемых калькуляторах, когда сначала задается знак операции, а потом перечисляются операнды. Все операнды разделяются отдельными скобками, из-за чего выражения становятся очень громоздкими. Поскольку это язык запросов, то в нем присутствуют только логические операции — И (&), ИЛИ (|), НЕ (!). Рассмотрим несколько примеров с использованием данного языка запросов.
- ( description=* ) — любой объект, у которого определено поле description. При этом совершенно неважно какой будет длина этого поля, так, один символ точно так же попадет под фильтр » * «, как и длинная строка.
- ( &(objectClass=user)(mail=*) ) — любой объект, у которого поле objectClass равно user И определено поле mail .
- В листинге 3 приведен огромный запрос, используемый для загрузки глобальной адресной книги из LDAP (все содержимое запроса — это одна строка).
Листинг 3. Пример запроса к LDAP-серверу
Это запрос можно упросить, если воспользоваться знанием структуры каталога AD:
В значениях sAMAccountType нет ничего секретного — это просто 0x30000000 и 0x10000000 в десятичной форме, обозначающие соответственно тип объекта «пользователь» или «контакт». Ссылку на подробное описание языка запросов можно найти в разделе «Ресурсы».
После изучения языка запросов остается решить вопрос — как подключиться к LDAP из командной строки? При этом необходимо учитывать несколько моментов.
- В Windows Server отсутствует так называемый anonymous bind (возможность подключения к LDAP без указания имени пользователя и пароля). Эту возможность можно активировать при наличии необходимых полномочий, но по умолчанию она отключена. Поэтому перед тем, как начать работать с LDAP через ldapsearch или создавать сценарии, необходимо получить отдельную учетную запись и установить достаточно простой пароль. Я обычно использую пароль » qwerty <123>«, так как Windows 2003 Server считает его достаточно сложным, и имя пользователя ldapread . Для ldapsearch (и далее повсюду) в качестве значения параметра bind dn указывается строка @ , где домен — это имя AD, переведенное в верхний регистр, например ldapread@SHELTON.INT .
- Что указывать в качестве исходной точки для подключения ( base dn )? Обычно base dn формируется следующим образом: если AD называется shelton.int , то соответствующим значением base dn будет dc=shelton,dc=int . Если же оно называется kitten.cats.shelton.int (такие длинные имена возможны в больших инсталляциях), то соответствующим значением base dn будет dc=kitten,dc=cats,dc=shelton,dc=int . Разумеется, при подключении можно указать не корень AD, а какую-либо его ветку, например, CN=Computers,DC=shelton,DC=int , но в таком случае поиск никогда не поднимется выше ее границы. Проблема состоит в том, что логически правильным является создание организационных единиц ( ou — Organizational Unit), соответствующих разным филиалам, непосредственно в корне AD, поскольку эти ou будут содержать объекты разных типов — пользователей, компьютеры, группы и т.д. Поэтому для просмотра всей структуры AD лучше указывать корневой элемент.
- Как в AD хранится не-ASCII информация, т.е. данные на национальных (и на русском, в том числе) языках? Подобная информация хранится в виде текста в кодировке UTF-8, преобразованного с помощью Base64 в набор символов ASCII (см. соответствующую ссылку в разделе «Ресурсы»).
- Сразу же после установки OpenLDAP необходимо внести в файл /usr/local/etc/openldap/ldap.conf (который может храниться и в другом месте) строку » REFERRALS off «. Это необходимо сделать для всех версий AD, начиная с Windows 2003 Server.
После подготовки можно переходить к практическому использованию ldapsearch.
Листинг 4. Пример использования ldapsearch
Использованные ключи имеют следующее значение:
- -D задает значение bind dn ;
- -w — пароль для подключения;
- -LLL обеспечивает максимальное упрощение выводимой информации;
- -h — адрес сервера;
- -b задает значение base dn ;
- -P — версия протокола LDAP;
- -a описан в man ldapsearch.
Далее приводится простой фильтр отбора записей и перечень атрибутов, которые нужно вывести. Если ничего не указывать, то будут выведены все атрибуты. В данном случае мы запросили атрибуты distinguishedName и sAMAccountType . Обратите внимание, что атрибуты, которые необходимо вывести, перечисляются через пробел, а не через запятые. Теперь можно попробовать добавить в информацию о пользователе (средствами Microsoft) поле title , равное » Читатель » и запросить его через ldapsearch.
Листинг 5. Пример использования ldapsearch
Заключение
В статье был представлен краткий обзор протокола LDAP и утилиты ldapsearch, использующейся для выполнения запросов к LDAP-серверам. В следующей статье мы рассмотрим использование ldapsearch из сценариев Bourne Shell.











