Kerberos를 오랫동안 관리하지 않으면 벽돌이 됩니까?

Kerberos를 오랫동안 관리하지 않으면 벽돌이 됩니까?

이상한 문제가 있습니다. kerberos/openldap 환경이 벽돌로 덮여 있습니다. 내가 시도하는 모든 결과가 SERVER_NOT_FOUND PERMISSION_DENIED, , 에 INSUFFICIENT ACCESS다양하게 변경되기 때문에 새 사용자, 컴퓨터 또는 기타 항목을 추가할 수 없습니다. CLIENT_NOT_FOUND

Kerberos 환경을 수정하지 않은 경우(예: 1년 동안) 이런 일이 일반적으로 발생합니까?

그 목적은 NFS 공유를 보호하는 것입니다. 이제 데이터를 복제하기 위해 또 다른 NFS 공유를 추가하고 싶지만 어떤 방식으로도 구성을 변경할 수 없습니다.

로 로그인했지만 root다음 kadmin.local을 사용하여 다음 작업을 수행할 수 없습니다.

  • 새로운 관리자 생성
  • 관리 사용자의 비밀번호를 변경하십시오.
  • 관리자로 로그인
  • 주 구성원 추가

나는 이것을 할 수 있다:

  • openLDAP 비밀번호를 사용하여 명령(예: 항목 추가)을 실행합니다.

나는 또한 이것을 할 수 있습니다 :

  • 기존 공유를 설치하고 사용합니다. (이것은 openLDAP와 krb5가 모두 여전히 실행 중임을 의미하며 어떤 구성도 변경할 수 없습니다.)

이런 것들을 확인했습니다.

  • krb5kdc/openldap이 실행 중입니다.
  • ACL은 .acl 파일에 설정됩니다.
  • 도메인 이름, 도메인 이름 등이 정확합니다.
  • 호스트 파일은 도메인 이름을 로컬 호스트로 가리킵니다.
  • krb5kdc, slapd, kadmind는 해당 포트에서 수신 대기 중입니다.
  • 방화벽 규칙이 없습니다.
  • 의류/SELinux가 존재하지 않습니다.

이러한 오류는 다양한 시스템에서 뱉어집니다. 예: 다음 krb5kdc을 통해 본문을 추가하려는 경우 kadmin.local:

10.0.26.21: SERVER_NOT_FOUND: kadmin/[email protected] for kadmin/[email protected], Server not found in Kerberos database

kadmin이 말했지만 :Principal add failed: Insufficient access while creating "[email protected]@COMPANY.COM"

이것은 캐치-22를 생성합니다. 어떻게든 주체를 추가하려면 주체가 필요합니까? 내 생각에는 kadmin.local이것이 설정을 생성할 때 "부트스트래핑" 메커니즘인 것 같습니다. 오류 메시지는 의미가 없습니다.

로그인을 시도해 kadmin/admin도 작동하지 않습니다. 에서 동일한 메시지가 나타납니다 krb5kdc.

나는 또한 이것을 보았는데 흥미롭다고 생각했습니다 preauth spake failed to initialize: No SPAKE preauth groups configured. 이 마법(이해할 수 없는 두문자어가 왜 나오는지)을 검색해도 SPAKE유용한 결과가 나오지 않았습니다.

slapcatLDAP 데이터베이스의 모든 항목을 나열하려고 하면 . LDAP에 관한 한 로그인이 진행되지 않습니다 kadmin/admin. krbLoginFailedCount: 0아마도? 문서(이러한 구성 요소가 서로 어떻게 상호 작용합니까?)가 형편없기 때문에 이것이 무엇을 의미하는지 모르겠습니다.

lo패킷 캡처를 시도했지만 all interfacesLDAP 트래픽이 전혀 전송되지 않았습니다. Even 및 둘 다 다음 부분을 /etc/krb5.conf갖습니다 /etc/krb5kdc/kdc.conf.

[dbmodules]
    openldap_ldapconf = {
        ldap_servers = ldapi:///

        

궤도에서 발사하고 처음부터 시작하기 전에 시도해 볼 수 있는 다른 것이 있나요?

답변1

아니요, 그럴 수 없습니다.

10.0.26.21: SERVER_NOT_FOUND: kadmin/[email protected] for kadmin/[email protected], Server not found in Kerberos database

"kadmin.local"을 전혀 사용하고 있지 않은 것 같습니다. 비록 그렇긴 하지만정상kadmin/<fqdn>주체가 존재하지 않지만(선호되는 경우 ) kadmin/adminRPC 기반 "kadmin"만 먼저 이러한 티켓을 가져오고 "kadmin.local"은 LDAP 데이터베이스에 직접 액세스합니다.

또한 오류 메시지를 보면 을(를) 사용하고 있는 것으로 보입니다 -p kadmin/admin. 이렇게 하지 마세요. 이는 "user" 또는 "admin" 주체가 아닌 서비스 주체입니다. (Kadmin.local은 Kerberos 자체를 사용하지 않기 때문에 주체가 전혀 필요하지 않습니다.)

kadmin이 다음과 같이 말했지만: 주체 추가 실패: 생성 시 액세스 권한이 부족합니다."[이메일 보호됨]@COMPANY.COM”

액세스 문제는 제쳐두고, 이는 Kerberos 주체 이름에 대한 유효한 구문처럼 보이지 않습니다. 이 형식은 일반적으로 GSSAPI에서 사용되지만 Kerberos로 service@fqdn변환되었습니다 .service/fqdn

이것은 캐치-22를 생성합니다. 어떻게든 주체를 추가하려면 주체가 필요합니까? 내 생각에 kadmin.local은 설정을 생성할 때 "부트스트랩" 메커니즘이라는 것입니다. 오류 메시지는 의미가 없습니다.

실제로 그렇지 않습니다. 왜냐하면전혀표시한 내용이 인쇄됩니다 kadmin.local. 일반 네트워크 기반 시스템을 실행하려는 것 같습니다 kadmin. (전자의 내용이 후자의 내용을 덮어쓰게 만드는 파일 시스템 손상이 있습니까? 누군가 실수로 cp다른 내용을 덮어썼습니까?)

slapcat을 사용해 ldap 데이터베이스의 모든 내용을 나열한 결과 kadmin/admin에 해당 내용이 있는 것으로 나타났습니다 krbLoginFailedCount: 0. 그러면 LDAP에 관한 한 로그인이 이루어지지 않았습니까?

이는 클라이언트(사용자) 주체가 아닌 서비스 주체이므로 로그인이 이루어지지 않습니다. 이 속성은 kinit특정 서비스에 대해 발행된 티켓 수가 아니라 사용자 계정에서 수행된 작업 수만 추적합니다 .

(호스트 주체는 일반적으로 클라이언트이자 서비스이지만, 그렇지 않습니다.)

클라이언트 주체의 경우에도 KDC에 백엔드 LDAP 데이터베이스에 대한 읽기 전용 액세스 권한이 부여된 경우 이 값이 0인 경우가 많습니다.

LDAP에 관해서는 아직 로그인하지 않으셨나요? 아마도? 문서(이러한 구성 요소가 서로 어떻게 상호 작용합니까?)가 형편없기 때문에 이것이 무엇을 의미하는지 모르겠습니다.

이 경우 LDAP는 실제로 멍청한 데이터베이스에 지나지 않습니다. krb5kdc 서비스(또는 kadmin.local 도구)가 여기에 연결하여 일부 데이터를 읽거나 씁니다. 거기Kerberos 인증과 상호 작용하지 않거나 kinit기껏해야 서비스에 krb5kdc 및 kadmin.local이 데이터베이스 콘텐츠에 액세스하는 데 사용하는 LDAP 비밀번호(ldap.stash에 있음)가 있습니다.

나는 또한 이것을 보았는데 흥미롭다고 생각했습니다. preauth speaking failed to 초기화: No SPAKE preauth groupsconfigured. 이 마법의 SPAKE(이해할 수 없는 약어인 이유)를 검색해도 유용한 결과가 나오지 않았습니다.

약어에 관한 한 이는 "RSA" 또는 "AES"와 같은 계열에 속합니다. 비밀번호 기반 kinit네트워크 모니터링(오프라인 비밀번호 크래킹)을 강화하기 위해 선택적으로 사용할 수 있는 암호화 알고리즘입니다.

SPAKE는 선택 사항입니다. 기존 레거시(타임스탬프) 사전 인증 메커니즘이 항상 작동합니다.

lo 또는 모든 인터페이스에서 패킷 캡처를 시도했지만 LDAP 트래픽이 전혀 전송되지 않습니다. /etc/krb5.conf 및 /etc/krb5kdc/kdc.conf에도 다음 섹션이 있습니다.

ldap_servers = ldapi:///

그건왜냐하면이런 부분이 있습니다. /run/openldap/ldapi로컬 TCP 연결 대신 Unix 소켓을 사용하도록 LDAP 클라이언트 코드에 지시합니다 .

olcLogLevel진행 중인 쿼리에 대한 자세한 정보를 얻으 려면 LDAP 서버를 전환하세요 stats.

관련 정보