Назад | Перейти на главную страницу

Защита OpenLDAP и AD

Мы используем сервер OpenLDAP в качестве прокси для AD, добавляя AD в качестве подчиненного OpenLDAP.

Я защитил трафик OpenLDAP с помощью соединения StartTLS. Теперь мне сказали использовать протокол LDAPS для привязки, которую мы делаем для подключения к серверу AD (мы используем простую привязку).

Итак, мой вопрос был: нужно ли использовать LDAPS для связи с AD, поскольку OpenLDAP уже использует StartTLS?

Я не очень разбираюсь в OpenLDAP и AD, поэтому просто хотел получить предложения.

Я использовал приведенную ниже конфигурацию для добавления базы данных ldap [Lightweight Directory Access Protocol (Proxy) backend].

dn: olcDatabase=ldap,cn=config
objectClass: olcDatabaseConfig
objectClass: olcLDAPConfig
olcDatabase: ldap
olcSuffix: ou=xyz,dc=xyz,dc=xyz
olcSubordinate: TRUE
olcAccess: to dn.subtree="ou=xyz,dc=xyz,dc=xyz"  by * read
olcAddContentAcl: FALSE
olcLastMod: FALSE
olcMaxDerefDepth: 15
olcReadOnly: FALSE
olcSyncUseSubentry: FALSE
olcMonitoring: FALSE
olcDbURI: "ldap://xx.xx.xx.xx"
olcDbStartTLS: none starttls=no
olcDbACLBind: bindmethod=simple timeout=0 network-timeout=0 binddn="cn=xyz,ou=xyz,dc=xyz,dc=xyz" credentials="xxxxxxxxxxxxxxxxxxxxxx"
olcDbIDAssertBind: mode=legacy flags=prescriptive,proxy-authz-non-critical bindmethod=simple timeout=0 network-timeout=0 binddn="cn=xyz,ou=xyz,dc=xyz,dc=xyz" credentials="xxxxxxxxxxxxxxxxxxxxxx"
olcDbRebindAsUser: TRUE
olcDbChaseReferrals: TRUE
olcDbNoRefs: FALSE
olcDbNoUndefFilter: FALSE

Простые привязки LDAP, не защищенные SSL / TLS, очень небезопасно, поскольку включает отправку учетных данных имени пользователя и пароля в открытом виде по сети.

Допускаются простые привязки LDAP только через SSL / TLS / LDAPS.

Все, что вам нужно сделать, чтобы включить LDAPS на контроллере домена Active Directory, - это установить подходящий сертификат с закрытым ключом на контроллере домена AD:

https://support.microsoft.com/en-us/help/321051/how-to-enable-ldap-over-ssl-with-a-third-party-certification-authority

Обязательно прочтите раздел требований в статье выше, чтобы узнать, что является приемлемым сертификатом.

После того, как вы установили приемлемый сертификат на контроллер домена, Active Directory автоматически обнаружит его присутствие и включит LDAPS через порт 636.

Вы можете получить сертификат в любом Центре сертификации по своему усмотрению, если ему доверяют все стороны, которые будут участвовать в обмене данными. Это может быть существующий PKI, интегрированный в AD, или это может быть центр сертификации, не принадлежащий Microsoft, в вашей корпоративной сети, или он может быть даже общедоступным, глобально доверенным центром сертификации, таким как Godaddy, Symantec и т. Д., Если он поддерживает о производстве сертификата, соответствующего требованиям:

  • Сертификат LDAPS находится в хранилище личных сертификатов локального компьютера (которое программно называется хранилищем сертификатов MY компьютера).
  • Закрытый ключ, соответствующий сертификату, присутствует в хранилище локального компьютера и правильно связан с сертификатом. Для закрытого ключа не должна быть включена сильная защита закрытого ключа.
  • Расширение Enhanced Key Usage включает идентификатор объекта Server Authentication (1.3.6.1.5.5.7.3.1) (также известный как OID).
  • Полное доменное имя Active Directory контроллера домена (например, DC01.DOMAIN.COM) должно появиться в одном из следующих мест:
    • Общее имя (CN) в поле «Тема».
    • Запись DNS в расширении альтернативного имени субъекта.
  • Сертификат был выдан центром сертификации, которому доверяют контроллер домена и клиенты LDAPS. Доверие устанавливается путем настройки клиентов и сервера на доверие корневому ЦС, к которому ведет цепочка выдающего ЦС.
  • Для создания ключа необходимо использовать поставщика службы шифрования (CSP) Schannel.

(Технически это может быть даже самозаверяющий сертификат, хотя это небезопасное решение.)

После установки этого сертификата контроллер домена автоматически включит службу LDAPS на порту 636. (и службу глобального каталога на 3269.)

До сих пор я описал только LDAPS, но не конкретно StartTLS.

Вы можете использовать startTLS против сервера Microsoft LDAP, если хотите:

https://msdn.microsoft.com/en-us/library/aa366997(v=vs.85).aspx

Никакой дополнительной настройки на сервере не требуется. Он просто включает в себя отправку клиентом правильных элементов управления (команд) LDAP на сервер. (Управляющий OID для startTLS - «1.3.6.1.4.1.1466.20037».)

Необходимо защитить два сегмента сети:

  • от клиентов к OpenLDAP;
  • из OpenLDAP в AD.

Они оба должны быть в безопасности.

Первая часть уже сделана с StartTLS.

Вам нужно только установить безопасность на втором сетевом переходе. Думаю, было бы достаточно изменить:

olcDbURI: "ldap://xx.xx.xx.xx"
olcDbStartTLS: none starttls=no

кому:

olcDbURI: "ldaps://xx.xx.xx.xx"
olcDbStartTLS: false

(потому что, конечно, невозможно иметь оба StartTLS и LDAPS)