Kerberos 인증을 사용한 LDAP syncrepl

Kerberos 인증을 사용한 LDAP syncrepl

syncrepl을 사용하여 LDAP용 복제 서버를 설정하려고 합니다. Kerberos를 사용하여 소비자를 인증하고 싶습니다. Kerberos가 설정되어 있고 더 안전해 보이기 때문입니다. 내 공급자와 소비자에 대한 데이터베이스 정의는 다음과 같습니다.

소비자를 시작하면 다음 오류가 발생합니다.

GSSAPI Error: Unspecified GSS failure.  Minor code may provide more information 
(Credentials cache file '/tmp/krb5cc_55' not found)

나는 이것이 소비자가 유효한 TGT를 가지고 있지 않다는 것을 의미한다고 생각합니다. 유효한 TGT를 얻으려면 소비자를 어떻게 구성해야 합니까? k5start 또는 cron 작업 사용을 권장하는 일부 이전 소스를 읽었습니다. 아직도 이런 식으로 하고 있나요?

slapd.conf 매뉴얼 페이지에는 authcidauthzid와 함께 사용할 수 있다고 명시되어 있지만 bindmethod=sasl형식을 지정하는 방법은 지정하지 않습니다. 여기에 DN이나 Kerberos 주체 또는 다른 것을 입력해야 합니까? 이것을 지정해야 합니까?

도움을 주셔서 감사합니다

소비자 구성:

database        bdb
suffix          "dc=example"
rootdn          "uid=someuser,cn=realm,cn=gssapi,cn=auth"
directory       /var/lib/ldap
dirtyread
overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100
syncrepl rid=1
    provider=ldap://provider.realm
    type=refreshAndPersist
    starttls=yes
    searchbase="dc=example"
    schemachecking=off
    bindmethod=sasl
    saslmech=gssapi
    retry="10 +"

공급자 구성

database        bdb
suffix          "dc=example"
rootdn          "uid=someuser,cn=realm,cn=gssapi,cn=auth"
directory       /var/lib/ldap
dirtyread
overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100

답변1

나는 이것이 소비자가 유효한 TGT를 가지고 있지 않다는 것을 의미한다고 생각합니다.

네, 그게 바로 그 뜻이에요.

유효한 TGT를 얻으려면 소비자를 어떻게 구성해야 합니까? k5start 또는 cron 작업 사용을 권장하는 일부 이전 소스를 읽었습니다. 아직도 이런 식으로 하고 있나요?

cron에 대해서는 잘 모르겠지만 k5start는 여전히 좋은 방법입니다.

그러나 최근 MIT Kerberos는 다음과 같은 내장 방법을 지원합니다.클라이언트 키탭 시작, 설정이 훨씬 간단합니다. $KRB5_CLIENT_KTNAMEslapd 환경에 추가하고 $KRB5_KTNAME. (이는 에 대해 별도의 키탭이 있다고 가정합니다 ldap/*. 그래야 합니다.)

마지막으로 Kerberos의 ssh-agent와 같은 gss-proxy를 사용하도록 slapd에 지시할 수 있습니다. GSS_USE_PROXY=1slapd를 개시자(클라이언트)와 수락자(서버)로 인식하도록 /etc/gssproxy를 설정 하고 구성합니다.

slapd.conf 매뉴얼 페이지에는 authcid 및 authzid를 binmethod=sasl과 함께 사용할 수 있다고 명시되어 있지만 이러한 형식을 지정하는 방법은 지정되어 있지 않습니다. 여기에 DN이나 Kerberos 주체 또는 다른 것을 입력해야 합니까? 이것을 지정해야 합니까?

무슨 목적인지 기억이 안나는데인증GSSAPI(있는 경우)와 함께 제공됩니다. – IIRC, 이 메커니즘은 티켓에서 결정된 ID를 자동으로 사용하므로 수동으로 지정할 필요가 없습니다.

수락 측에서 slapd는 수신된 Kerberos 주체를 와 같은 의사 DN으로 변환하며 uid=foo@realm,cn=gssapi,cn=auth이를 ACL에서 직접 사용하거나 다음을 사용할 수 있습니다.인증 정규식(일명olcAuthzRegexp) 더 좋은 DN으로 변환합니다.

그 동안에,인증 ID메커니즘과 관계없이 동일한 방식으로 작동합니다. 선택 사항이지만 지정하는 경우 접두사가 붙은 DN이거나 dn:접두사가 붙는 사용자 이름이어야 합니다 u:. (여기서 authcids와 같은 사용자 이름은 의사 DN으로 변환되어olcAuthzRegexp, 결과 DN이 사용됩니다.)

정책이 허용하는 경우 slapd는 authzid에 있는 권한을 부여합니다. (LDAP의 sudo와 같습니다.)

답변2

다음 구성으로 작동하는 Kerberos 인증을 사용하여 syncrepl을 얻었습니다.이 웹사이트nslcd.conf에 대해서는 authzid"dn:<고유 이름>" 또는 "u:<사용자 이름>" 형식이어야 한다고 나와 있습니다. 나는 또한 k5start를 사용하여 someuser@REALMat 에 대한 캐시 파일을 생성 /tmp/krb5cc_55했고 chown ldap:ldap. 55는 LDAP UID입니다. 그러나 파일 이름을 이렇게 지정할 필요가 있는지 잘 모르겠습니다. 내 공급자 구성에서는 전체 데이터베이스에 대한 액세스를 허용하도록 someuser으로 지정했습니다 .rootdn

이것이 나에게 효과가 있었다는 점을 명확히 하고 싶지만 LDAP에 대한 이해가 제한되어 있으므로 다른 곳에서도 작동할 것이라고 보장할 수 없으며 이 구성의 모든 것이 필요한지 모르겠습니다.

syncrepl rid=1
    provider=ldap://provider.realm
    type=refreshAndPersist
    starttls=yes
    searchbase="dc=realm"
    schemachecking=off
    retry="10 +"
    tls_cacert="/path/to/ca.crt"
    bindmethod=sasl
    saslmech=gssapi
    authcid="someuser@REALM"
    authzid="uid=someuser,cn=realm,cn=gssapi,cn=auth"

관련 정보