
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.conf
PAM 구성 내에서 직접 설정할 수 있지만 그다지 편리하지는 않습니다.
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에 하드코딩되어 있으며 변경할 수 없습니다.