keytab auth contra samba 4 DC: Cliente não encontrado no banco de dados Kerberos enquanto obtém credenciais iniciais

6

Eu configurei um diretório ativo do samba 4 no ubuntu 14.04 seguindo o Samba AD DC HOWTO . Em princípio, tudo funciona bem, mas estou empenhado em fazer com que a autenticação do kerberos seja executada usando SPNs para aplicativos da web. Quando tento correr

kinit -k -t keytabfile http/myserver.mycompany.com 

Eu sempre recebo um

kinit: Client not found in Kerberos database while getting initial credentials

O que eu já verifiquei até agora:

  • O DNS está trabalhando nos dois lados para frente e para trás retornando FQNs
  • o kinit funciona usando o nome de usuário
  • myserver.mycompany.com é retornado pelo nslookup em dc e o servidor da web
  • myserver allready entrou no domínio e está listado no
    CN = Computadores, DC = minhaempresa, DC = com
  • não há SPNs dublicados

Eu criei a conta de serviço / SPNs / keytabs da seguinte forma:

samba-tool user create $ADS_USER $ADS_PW --userou=$USER_OU
samba-tool user setexpiry --noexpiry $ADS_USER

samba-tool spn add ${SERVICE_TYPE}/${SERVICE_HOST}.${MY_DOMAIN} $ADS_USER
samba-tool spn add ${SERVICE_TYPE}/${SERVICE_HOST} $ADS_USER

samba-tool spn list $ADS_USER
rm -f $MY_KEYTAB
samba-tool domain exportkeytab $MY_KEYTAB --principal=${SERVICE_TYPE}/${SERVICE_HOST}.${MY_DOMAIN}
samba-tool domain exportkeytab $MY_KEYTAB --principal=${SERVICE_TYPE}/${SERVICE_HOST}

ao correr     klist -k -e $ MY_KEYTAB tudo parece bem:

root@myhost:~# klist -ke ./test.keytab
Keytab name: FILE:./test.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   1 http/[email protected] (des-cbc-crc)
   1 http/[email protected] (des-cbc-md5)
   1 http/[email protected] (arcfour-hmac)
   1 http/[email protected] (des-cbc-crc)
   1 http/[email protected] (des-cbc-md5)
   1 http/[email protected] (arcfour-hmac)

Estou perdido, pesquisei várias horas no google e não tenho ideia de como solucionar / corrigir o erro 'Cliente não encontrado no banco de dados Kerberos'. Qualquer dica é bem vinda!

Obrigado

meu "/etc/krb5.conf" no cliente

[libdefaults]
    debug = true
        default_realm = MYCOMPANY.COM
        dns_lookup_realm = false
        dns_lookup_kdc = false
        default_tkt_enctypes = rc4-hmac
        default_tgs_enctypes = rc4-hmac
[realms]
        MYCOMPANY.COM = {
                kdc = dc01.mycompany.com
                admin_server = dc01.mycompany.com
                kpasswd_server = dc01.mycompany.com

                #ktpasswd_server = dc01.mycompany.com
                #admin_server = dc01.mycompany.com
        }
[domain_realm]
        .mycompany.com = MYCOMPANY.COM
        mycompany.com = MYCOMPANY.COM

no servidor dc /etc/samba/smb.conf

[global]
        debug level = 1
        syslog = 1
        max log size = 0

        workgroup = MYCOMPANY
        realm = MYCOMPANY.COM
        netbios name = DC01
        server role = active directory domain controller
        server string = MYCOMPANY domain controller
        server role check:inhibit = yes
        dns forwarder = 192.168.22.1
        idmap_ldb:use rfc2307 = yes
    
por Heiko Robert 18.06.2014 / 19:39

2 respostas

4

Finalmente - eu entendi!

O

samba-tool spn add ...

não (re) nomeia o UPN como esperado no diretório. Eu o encontrei comparando com entradas de ADS do MS. Portanto, a solução é alterar o valor manualmente antes de emitir o comando exportkeytab:

  • Abra a entrada do usuário do serviço com uma ferramenta ldap (usei o Apache Directory Studio) e
  • localize o usuário recém-criado Editar "userPrincipalName" para refletir servicePrincipleName + REALM (no meu caso http/[email protected])
  • export keytab e tudo funciona conforme o esperado

na máquina de destino

kinit -k -t http/myserver.mycompany.com

funciona sem reclamações! Espero que isso ajude os outros tentando configurar o SSO com o Samba4 ...

    
por 20.06.2014 / 20:04
0

Inicialmente, recebi um erro abaixo do ambiente Redhat Linux.

kinit: Client not found in Kerberos database while getting initial credentials

Enquanto eu tentei com a conta de serviço abaixo registerdd com o F_KEY

$ kinit  HOST/[email protected]

E isso me levou a fornecer a senha e funcionou!

Eu posso gerar o arquivo de cache 'Credenciais krb5cc_0' na pasta / tmp no servidor.

Eu posso listar todos os detalhes usando o comando 'klist' sobre o TGT temporário.

  1. Início válido
  2. expira
  3. Diretor de serviços
por 02.09.2015 / 12:35