Ubuntu ignora default_ccache_name

Ubuntu ignora default_ccache_name

Tengo problemas con Kerberos y Ubuntu 20.04.
Estoy ejecutando un servidor FreeIPA, pero como funciona en mis máquinas Centos, supongo que es un problema del cliente.

El gran objetivo es tener un sistema SSO, para múltiples servicios. En general, funciona según lo previsto, pero una cosa se niega a funcionar para mí:
lograr que automount/autofs acepte mi configuración para Kerberos. Un problema importante es que autofs no puede leer la KRB5CCNAMEvariable de entorno. Siempre usa libdefault, lo cual estaría bien si Ubuntu también hiciera eso. Sin embargo, por alguna razón, no importa lo que intente, Ubuntu no configura el entorno KRB5CCNAME. var. durante el inicio de sesión correctamente, pero siempre el valor predeterminado es FILE:/tmp/krb5cc_\<UID>_\<VALUE>.
Preferiría usar el conjunto de claves, así que escribí default_ccache_name = KEYRING:persistent:%{uid}en krb5.conf en la sección libdefaults. Al configurar manualmente KRB5CCNAME, todo está bien y el montaje automático se conecta a mis unidades Samba.
Pero dejar que el sistema decida qué debe contener la variable siempre resulta enFILE:...

Mis clientes krb5.conf se ven así:

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>

La configuración 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]

¿Algunas ideas?

Respuesta1

siempre por defecto esFILE:/tmp/krb5cc_<UID>_<VALUE>

Si KRB5CCNAME apunta a un caché con un sufijo aleatorio, esto indica que algún software ha decidido configurar explícitamente un caché aislado.en lugar deutilizando el valor predeterminado.

(El valor predeterminado no se coloca en KRB5CCNAME en absoluto; su propósito es usarse cuando la variable de entornoestá ausente. Además de eso, si estuviera usando la ruta predeterminada tradicional, en realidad FILE:/tmp/krb5cc_<UID>no obtendría ningún valor aleatorio adicional al final).

Instalé todo con el paquete freeipa-client del repositorio. Instaló pam_krb5 y lo usó en contraseña común, -cuenta, -session(-interactive) y -auth. sss se usa en common-password, -account, -session, -auth y en algunos .pam-olds

Su problema es que la contraseña se verifica con Kerberos mediante dos módulos independientes: una vez por pam_sss (SSSD) y otra por pam_krb5. Ambos utilizan cachés únicos por sesión y ambos configurarán KRB5CCNAME en una ruta de caché basada en archivos temporales.

Lo ideal sería no utilizar pam_krb5 en absoluto: SSSD ya realiza las mismas tareas como parte de su integración FreeIPA. Considere deshabilitar pam_krb5 en todas las configuraciones de PAM si ya invocan pam_sss en la misma sección.

Si eso no es posible, pam_krb5 tiene su propio parámetro para la plantilla de caché por sesión, que se puede configurar /etc/krb5.conf(o directamente dentro de la configuración de PAM, pero eso no es tan conveniente):

  • pam_krb5 de Russ Allbery (usado por Debian/Ubuntu/Arch):

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

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

Finalmente, tenga en cuenta que cuando ingresa a un servidor con autenticación y delegación GSSAPI habilitadas (por ejemplo, usando ssh -K), el sshdsí mismoalmacena el TGT delegado en una caché única por sesión. Este comportamiento está codificado en sshd y no se puede cambiar.

información relacionada