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

Openldap включает ssl при репликации

Не могли бы вы сказать мне, как я могу изменить текущую конфигурацию для olcSyncRepl?

У меня такая ситуация:

  1. I Настроил главный сервер ldap и подчиненный сервер
  2. Настроил репликацию между этими двумя серверами (все работает)
  3. У меня есть следующая конфигурация для подчиненного клиента:
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
  provider=ldap://10.101.11.130:389/
  bindmethod=simple
  binddn="uid=rpuser,dc=itzgeek,dc=local"
  credentials=root1234
  searchbase="dc=itzgeek,dc=local"
  scope=sub
  schemachecking=on
  type=refreshAndPersist
  retry="30 5 300 3"
  interval=00:00:05:00

И хочу добавить:

  1. Учетные данные не в виде обычного текста (я хочу добавить {SSHA} ....)
  2. Добавить сертификаты (я также включил ldaps с самозаверяющими сертификатами .crt и .key)

Хочу посоветовать, как его безопасно настроить, доработать. Не хочу портить текущие настройки сервера. Например, как я могу изменить IP-адрес текущего главного сервера? Если кто-то ответит, смогу протестировать остальные изменения набора

PS

Я знаю, что можно изменять файлы в /etc/openldap/slapd.d/cn=config, но не могли бы вы рассказать мне, как я могу использовать файлы ldif и ldapi для обновления конфигурации?

В качестве справки я публикую директивы syncrepl, используемые в Æ-DIR:

olcSyncrepl: rid=001
  provider=ldaps://ae-dir-p1.example.com
  bindmethod=sasl
  saslmech=EXTERNAL
  starttls=no
  tls_cert="/opt/ae-dir/etc/tls/ae-dir-c1.example.com.crt"
  tls_key="/opt/ae-dir/etc/tls/ae-dir-c1.example.com.key"
  tls_cacert="/opt/ae-dir/etc/tls/my-ae-dir-testca-2017-06.pem"
  tls_reqcert=demand
  crlcheck=none
  filter="(objectClass=*)"
  searchbase="dc=ae-dir,dc=example,dc=org"
  scope=sub
  schemachecking=on
  type=refreshAndPersist
  retry="30 +"

Прежде всего, вы не должны использовать IP-адрес в URL-адресе LDAP для provider=. Лучше получите правильно выданный сертификат сервера TLS для имени хоста, а затем OpenLDAP пощечина выполнит правильную проверку имени хоста TLS для предотвращения атак MITM (см. RFC 6125).

Я предполагаю, что у вас настроен TLS у вашего провайдера и экземпляры потребителей. Приведенная выше конфигурация syncrepl использует уже настроенный TLS сервер сертификат также как TLS клиент сертификат для репликации.

В случае сертификата клиента TLS полученный аутентификация identity (authc-DN) - это DN субъекта в сертификате клиента. Возможно, вы захотите сопоставить это с удостоверением авторизации (authz-DN) существующей записи LDAP. Этого можно добиться, добавив olcAuthzRegexp к cn = config как это:

olcAuthzRegexp:
  "(cn=[^,]+,OU=ITS,O=My Org)"
  "ldap:///dc=ae-dir,dc=example,dc=org??sub?(&(objectClass=pkiUser)(seeAlso=$1)(seeAlso:dnSubordinateMatch:=OU=ITS,O=My Org)(aeStatus=0))"

С указанным выше DN субъекта заканчивается на OU=ITS,O=My Org будет сопоставлен с записью LDAP с классом объекта pkiUser с DN субъекта сертификата клиента, хранящимся в атрибуте смотрите также как это:

dn: uid=ae-dir-slapd_ae-dir-deb-c1,cn=ae,dc=ae-dir,dc=example,dc=org
aeStatus: 0
cn: ae-dir-slapd_ae-dir-deb-c1
memberOf: cn=ae-replicas,cn=ae,dc=ae-dir,dc=example,dc=org
objectClass: account
objectClass: aeObject
objectClass: aeService
objectClass: pkiUser
objectClass: posixAccount
seeAlso: cn=ae-dir-c1.example.com,OU=ITS,O=My Org
[..]

Затем вы можете правильно авторизовать эту запись пользователя службы, в приведенном выше примере через группу LDAP. ae-реплики.