Ubuntu ignora default_ccache_name

Ubuntu ignora default_ccache_name

Estou tendo problemas com Kerberos e Ubuntu 20.04.
Estou executando um servidor FreeIPA, mas como funciona em minhas máquinas Centos, acho que é um problema do cliente.

O grande objetivo é ter um Sistema SSO, para múltiplos serviços. Na maioria das vezes funciona como esperado, mas uma coisa se recusa a funcionar para mim:
fazer com que automount/autofs aceite minha configuração para Kerberos. Um grande problema é que o autofs não consegue ler a KRB5CCNAMEvariável de ambiente. Ele sempre usa o libdefault, o que seria bom se o Ubuntu também fizesse isso. No entanto, por algum motivo, não importa o que eu tente, o Ubuntu não define o ambiente KRB5CCNAME. var. durante o login corretamente, mas sempre o padrão é FILE:/tmp/krb5cc_\<UID>_\<VALUE>.
Eu preferiria usar o chaveiro, então escrevi default_ccache_name = KEYRING:persistent:%{uid}no krb5.conf na seção libdefaults. Ao configurar manualmente o KRB5CCNAME, tudo fica bem e a montagem automática se conecta às minhas unidades de samba.
Mas deixar o sistema decidir o que a variável deve conter sempre resulta emFILE:...

Meus clientes krb5.conf são assim:

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>

A configuração 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]

Alguma ideia?

Responder1

sempre o padrão éFILE:/tmp/krb5cc_<UID>_<VALUE>

Se KRB5CCNAME apontar para um cache com um sufixo aleatório, isso indica que algum software decidiu configurar explicitamente um cache isoladoem vez deusando o padrão.

(O valor padrão não é colocado em KRB5CCNAME – seu objetivo é ser usado quando a variável de ambienteestá ausente. Além disso, se estivesse usando o caminho padrão tradicional, você não obteria FILE:/tmp/krb5cc_<UID>nenhum valor aleatório extra no final.)

Instalei tudo com o pacote freeipa-client do repositório. Ele instalou o pam_krb5 e o usou em senha comum, -account, -session(-interactive) e -auth. sss é usado em senha comum, -account, -session, -auth e em alguns .pam-olds

Seu problema é que a senha é verificada no Kerberos por dois módulos independentes: uma vez por pam_sss (SSSD) e uma vez por pam_krb5. Ambos usam caches exclusivos por sessão e definirão KRB5CCNAME para um caminho de cache temporário baseado em arquivo.

Idealmente, você não deveria usar pam_krb5 – as mesmas tarefas já são realizadas pelo SSSD como parte de sua integração com o FreeIPA. Considere desabilitar pam_krb5 em todas as configurações do PAM se elas já invocarem pam_sss na mesma seção.

Se isso não for possível, pam_krb5 possui seu próprio parâmetro para o modelo de cache por sessão, que pode ser definido /etc/krb5.conf(ou diretamente na configuração do PAM, mas isso não é tão conveniente):

  • Pam_krb5 de Russ Allbery (usado pelo Debian/Ubuntu/Arch):

    [appdefaults]
        pam = {
            ccache = KEYRING:persistent:%u
        }
    
  • Pam_krb5 do Fedora:

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

Finalmente, observe que quando você faz ssh em um servidor com autenticação e delegação GSSAPI habilitadas (por exemplo, usando ssh -K), o sshdem siarmazena o TGT delegado em um cache exclusivo por sessão. Este comportamento está codificado em sshd e não pode ser alterado.

informação relacionada