
Ich habe Probleme mit Kerberos und Ubuntu 20.04.
Ich verwende einen FreeIPA-Server, aber da er auf meinen Centos-Maschinen funktioniert, gehe ich davon aus, dass es sich um ein Client-Problem handelt.
Das große Ziel ist ein SSO-System für mehrere Dienste. Meistens funktioniert es wie vorgesehen, aber eine Sache will bei mir nicht funktionieren:
Automount/Autofs dazu zu bringen, meine Konfiguration für Kerberos zu akzeptieren. Ein großes Problem ist, dass Autofs die Umgebungsvariable nicht lesen kann KRB5CCNAME
. Es verwendet immer die libdefault, was in Ordnung wäre, wenn Ubuntu das auch tun würde. Aus irgendeinem Grund setzt Ubuntu jedoch, egal was ich versuche, die Umgebungsvariable KRB5CCNAME während des Anmeldevorgangs nicht richtig, sondern verwendet immer standardmäßig FILE:/tmp/krb5cc_\<UID>_\<VALUE>
.
Ich würde lieber den Schlüsselbund verwenden, also habe ich default_ccache_name = KEYRING:persistent:%{uid}
in krb5.conf im Abschnitt libdefaults geschrieben. Wenn ich KRB5CCNAME manuell einstelle, ist alles in Ordnung und Automount verbindet sich mit meinen Samba-Laufwerken.
Aber wenn ich das System entscheiden lasse, was die Variable enthalten soll, führt das immer zuFILE:...
Die krb5.conf meines Clients sieht folgendermaßen aus:
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>
Die SSSD-Konfiguration:
[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]
Irgendwelche Ideen?
Antwort1
wird standardmäßig immer
FILE:/tmp/krb5cc_<UID>_<VALUE>
Wenn KRB5CCNAME auf einen Cache mit einem zufälligen Suffix verweist, deutet dies darauf hin, dass eine Software entschieden hat, explizit einen isolierten Cache einzurichten.anstattmit Verwendung der Standardeinstellung.
(Der Standardwert wird überhaupt nicht in KRB5CCNAME eingetragen – sein Zweck ist es, ihn zu verwenden, wenn die Umgebungsvariableist abwesend. Darüber hinaus würden Sie, wenn der herkömmliche Standardpfad verwendet würde, FILE:/tmp/krb5cc_<UID>
am Ende tatsächlich keinen zusätzlichen Zufallswert erhalten.)
Ich habe alles mit dem Freeipa-Client-Paket aus dem Repo installiert. Es hat pam_krb5 installiert und in common-password, -account, -session(-interactive) und -auth verwendet. sss wird in common-password, -account, -session, -auth und in einigen .pam-olds verwendet.
Ihr Problem besteht darin, dass das Passwort von zwei unabhängigen Modulen gegen Kerberos überprüft wird: einmal von pam_sss (SSSD) und einmal von pam_krb5. Beide verwenden eindeutige Caches pro Sitzung und beide setzen KRB5CCNAME auf einen solchen temporären dateibasierten Cachepfad.
Idealerweise sollten Sie pam_krb5 überhaupt nicht verwenden – dieselben Aufgaben werden bereits von SSSD als Teil seiner FreeIPA-Integration ausgeführt. Erwägen Sie, pam_krb5 in allen PAM-Konfigurationen zu deaktivieren, wenn sie pam_sss bereits im selben Abschnitt aufrufen.
Wenn dies nicht möglich ist, verfügt pam_krb5 über einen eigenen Parameter für die Cache-Vorlage pro Sitzung, der festgelegt werden kann /etc/krb5.conf
(oder direkt in der PAM-Konfiguration, was aber nicht so praktisch ist):
pam_krb5 von Russ Allbery (verwendet von Debian/Ubuntu/Arch):
[appdefaults] pam = { ccache = KEYRING:persistent:%u }
Fedoras pam_krb5:
[appdefaults] pam = { ccname_template = KEYRING:persistent:%U }
Beachten Sie schließlich, dass wenn Sie per SSH auf einen Server zugreifen, auf dem GSSAPI-Authentifizierung und -Delegierung aktiviert sind (z. B. durch die Verwendung von ssh -K
), der sshdselbstspeichert das delegierte TGT in einem eindeutigen Cache pro Sitzung. Dieses Verhalten ist in sshd fest codiert und kann nicht geändert werden.