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

SSSD на основе KDC и OpenLDAP?

Я установил экземпляр MIT KDC, поддерживаемый экземпляром OpenLDAP, и все они работают на RHEL 7. Я хочу настроить SSSD для извлечения пользователей и групп из этой комбинации, но у меня много проблем, поскольку большая часть документации предполагает AD.

Проблема, на которой я сейчас застрял, заключается в том, что SSSD из журналов, похоже, нуждается в каком-то числовом идентификаторе для каждого пользователя, который он использует для создания UID локально. Проблема в том, что KDC вообще не хранит это в LDAP. Я также замечаю, что KDC хранит только полного участника (user@DOMAIN.COM), что означает, что когда я пытаюсь войти в систему, используя только имя пользователя, у меня нет никаких полей, чтобы указать SSSD для использования.

Есть ли способ заставить KDC хранить больше информации в LDAP или способ заставить SSSD работать с тем, что у нас есть?

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

Конфигурация SSSD:

[sssd]
services = nss, pam
domains = DOMAIN.COM
debug_level = 10

[nss]
debug_level = 10

[pam]
debug_level = 10

[domain/DOMAIN.COM]
debug_level = 10
id_provider = ldap
auth_provider = krb5
access_provider = ldap
chpass_provider = krb5
dyndns_update = False
realmd_tags = manages-system joined-with-samba
cache_credentials = False
enumerate = False
entry_cache_timeout = 86400
min_id = 1000000
default_shell = /bin/bash
fallback_homedir = /home/%u@%d
use_fully_qualified_names = True

#LDAP Configuration
ldap_uri = ldap://ldapserver:389
ldap_search_base = dc=domain,dc=com
ldap_user_search_base = dc=domain,dc=com
ldap_group_search_base = dc=domain,dc=com
ldap_id_mapping = True
ldap_idmap_range_min = 100000
ldap_idmap_range_max = 2000100000
ldap_idmap_range_size = 2000000000
ldap_idmap_default_domain = <DOMAIN>
ldap_access_filter = &(objectClass=krbPrincipal)
ldap_user_object_class = krbPrincipal
ldap_user_name = krbPrincipalName
ldap_user_principal = krbPrincipalName
ldap_user_fullname = krbPrincipalName
ldap_user_uid_number = krbPrincipalName
ldap_user_objectsid = krbPrincipalName

#KRB5 Configuration
krb5_server = kdc_server
krb5_realm = DOMAIN.COM

Образец записи:

dn: krbPrincipalName=test-user2@DOMAIN.COM,cn=DOMAIN.COM,cn=kerberos,dc=domain,dc=com
ufn: test-user2@DOMAIN.COM, DOMAIN.COM, kerberos, DOMAIN.com
krbLoginFailedCount: 0
krbPrincipalName: test-user2@DOMAIN.COM
krbPrincipalKey:: ...
krbLastPwdChange: 20190524234020Z
krbExtraData:: ...
krbExtraData:: ...
objectClass: krbPrincipal
objectClass: krbPrincipalAux
objectClass: krbTicketPolicyAux

Так что я так и не нашел хорошего ответа на этот вопрос, но я смог обойти его и хотел опубликовать это для пользователей Google, которые наткнулись на это.

В итоге я просто использовал OpenLDAP и KDC, как будто они были полностью разделены. Я сохранил поддержку KDC с помощью LDAP из соображений удобства, но я больше не использую этот факт. Вместо этого, когда мы добавляем пользователя, я добавляю его как в KDC, так и в LDAP отдельно. Затем я указал SSSD на область LDAP, куда я добавляю пользователей вручную, но все еще использую KDC для аутентификации. Кажется, работает в основном хорошо, хотя до сих пор у меня было несколько глюков.

Если у кого-то есть реальное решение для вышеуказанного, я все равно хотел бы его услышать!