우분투는 default_ccache_name을 무시합니다.

우분투는 default_ccache_name을 무시합니다.

Kerberos 및 Ubuntu 20.04에 문제가 있습니다.
저는 FreeIPA 서버를 실행하고 있지만 Centos 시스템에서 작동하기 때문에 클라이언트 문제인 것 같습니다.

가장 큰 목표는 여러 서비스를 위한 SSO 시스템을 갖추는 것입니다. 대부분은 의도한 대로 작동하지만 한 가지 작동하지 않는 것이 있습니다.
automount/autofs가 Kerberos에 대한 구성을 수락하도록 하는 것입니다. 한 가지 주요 문제는 autofs가 KRB5CCNAME환경 변수를 읽을 수 없다는 것입니다. 항상 libdefault를 사용하는데 우분투도 그렇게 한다면 괜찮을 것입니다. 그러나 어떤 이유로 내가 무엇을 시도해도 Ubuntu는 KRB5CCNAME 환경을 설정하지 않습니다. var. 사인온 부분에서는 올바르게 수행되지만 항상 기본값은 FILE:/tmp/krb5cc_\<UID>_\<VALUE>.
저는 키링을 사용하고 싶어서 default_ccache_name = KEYRING:persistent:%{uid}libdefaults 섹션의 krb5.conf에 썼습니다. KRB5CCNAME을 수동으로 설정하면 모든 것이 정상이며 자동 마운트가 삼바 드라이브에 연결됩니다.
그러나 변수에 무엇을 포함해야 하는지 시스템이 결정하게 하면 항상 다음과 같은 결과가 발생합니다.FILE:...

내 클라이언트 krb5.conf는 다음과 같습니다.

includedir /etc/krb5.conf.d/
includedir /var/lib/sss/pubconf/krb5.include.d/

[logging]
  default = FILE:/var/log/krb5.log

[libdefaults]
  default_realm = EXAMPLE.COM
  dns_lookup_realm = true
  dns_lookup_kdc = true
  rdns = false
  dns_canonicalize_hostname = false
  ticket_lifetime = 24h
  forwardable = true
  udp_preference_limit = 0
  default_ccache_name = KEYRING:persistent:%{uid}
  ccache_type = 4

[realms]
  EXAMPLE.COM = {
    kdc = ipa.example.com:80
    master_kdc = ipa.example.com:88
    admin_server = ipa.example.com:749
    kpasswd_server = ipa.example.com:464
    default_domain = example.com
    pkinit_anchors = FILE:/var/lib/ipa-client/pki/kdc-ca-bundle.pem
    pkinit_pool = FILE:/var/lib/ipa-client/pki/ca-bundle.pem

  }


[domain_realm]
  .example.com = <EXAMPLE.COM>
  example.com = <EXAMPLE.COM>
  client.example.com = <EXAMPLE.COM>

SSSD 구성:

[domain/example.com]
debug_level=10
cache_credentials = True
krb5_store_password_if_offline = True
ipa_domain = EXAMPLE.COM
id_provider = ipa
auth_provider = ipa
access_provider = ipa
ipa_hostname = client.example.com
chpass_provider = ipa
ipa_server = _srv_, ipa.example.com
ldap_tls_cacert = /etc/ipa/ca.crt
ldap_search_base = cn=accounts,dc=example,dc=com
krb5_ccname_template = KEYRING:persistent:%U

[sssd]
services = nss, sudo, pam, ssh
config_file_version = 2
domains = example.com
debug_level=10
[nss]
override_shell = /bin/bash

[pam]
offline_credentials_expiration = 60
debug_level=10

[domain/default]
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
access_provider = ldap
ldap_access_filter = (objectClass=posixAccount)
debug_level=10
[ssh]

[sudo]

어떤 아이디어가 있나요?

답변1

항상 기본값은FILE:/tmp/krb5cc_<UID>_<VALUE>

KRB5CCNAME이 임의의 접미사가 붙은 캐시를 가리키는 경우 이는 일부 소프트웨어가 명시적으로 격리된 캐시를 설정하기로 결정했음을 나타냅니다.대신에기본값을 사용합니다.

(기본값은 KRB5CCNAME에 전혀 입력되지 않습니다. 환경 변수를 사용할 때 사용하기 위한 것입니다.결석하다. 게다가 기존 기본 경로를 사용하는 경우 실제로 FILE:/tmp/krb5cc_<UID>는 끝에 추가 임의 값이 표시되지 않습니다.)

저장소의 freeipa-client 패키지로 모든 것을 설치했습니다. pam_krb5를 설치하고 common-password, -account, -session(-interactive) 및 -auth에서 사용했습니다. sss는 common-password, -account, -session, -auth 및 일부 .pam-olds에서 사용됩니다.

문제는 두 개의 독립 모듈, 즉 pam_sss(SSSD)와 pam_krb5를 통해 Kerberos에 대해 비밀번호를 확인한다는 것입니다. 둘 다 고유한 세션별 캐시를 사용하며 둘 다 KRB5CCNAME을 임시 파일 기반 캐시 경로로 설정합니다.

이상적으로는 pam_krb5를 전혀 사용하지 않는 것이 좋습니다. SSSD가 FreeIPA 통합의 일부로 동일한 작업을 이미 수행하고 있습니다. 동일한 섹션에서 pam_sss를 이미 호출한 경우 모든 PAM 구성에서 pam_krb5를 비활성화하는 것이 좋습니다.

이것이 가능하지 않은 경우 pam_krb5에는 세션별 캐시 템플릿에 대한 자체 매개변수가 있습니다. 이 매개변수는 /etc/krb5.confPAM 구성 내에서 직접 설정할 수 있지만 그다지 편리하지는 않습니다.

  • Russ Allbery의 pam_krb5(Debian/Ubuntu/Arch에서 사용):

    [appdefaults]
        pam = {
            ccache = KEYRING:persistent:%u
        }
    
  • Fedora의 pam_krb5:

    [appdefaults]
        pam = {
            ccname_template = KEYRING:persistent:%U
        }
    

마지막으로, GSSAPI 인증 및 위임이 활성화된 서버에 SSH를 통해 연결하면(예: 를 사용하여 ssh -K) sshd그 자체위임된 TGT를 고유한 세션별 캐시에 저장합니다. 이 동작은 sshd에 하드코딩되어 있으며 변경할 수 없습니다.

관련 정보