Não é possível unir domínio usando samba tool net ou realm / sssd

3

Em um servidor rhel7, estou tentando unir o servidor a um domínio, mas estou recebendo a seguinte falha:

net ads join -S domain.example.org -U name
Enter name's password:
Failed to join domain: failed to set machine kerberos encryption types: Insufficient access

As configurações relacionadas ao pam, krb5, samba, dns, bem como o objeto no servidor de diretório ativo remoto, estão configuradas corretamente, o que significa que o sistema se ligará usando rhel6 e ubuntu 14.04 com sucesso.

Eu não consegui encontrar muita informação com relação ao erro específico que estou recebendo. Eu tentei definir allow_weak_crypto = true em krb5.conf apenas para ver se tinha algo a ver com isso, mas não teve efeito.

Segui algumas dicas de solução de problemas no link , mas não tive sorte. As coisas que tentei aparecer para funcionar bem.

Especificamente, posso fazer o seguinte, o que significa que posso adquirir uma credencial inicial para o usuário name :

kinit name
Password for [email protected]: 

Eu também sou capaz de gerar um arquivo keytab usando o ktutil e quando o movi para /etc/krb5.keytab klist -e ele mostra o conteúdo correto. Mas a adesão de anúncios líquidos continua a falhar.

Editar: Depois de examinar o pacote de código-fonte rhel7 samba, encontrei o seguinte em README.dc :

We'll provide Samba AD DC functionality as soon as its support of MIT Kerberos KDC will be ready.

Eu suspeito que esse seja o problema e eu tenho que esperar até que esteja pronto.

Edit2: O uso de realm e sssd parece ter o mesmo problema. Depois de fazer:

realm -v join --user=example ad.example.org

Eu acho o seguinte erro:

* LANG=C /usr/sbin/adcli join --verbose --domain ad.example.org --domain-realm AD.EXAMPLE.ORG --domain-controller 192.0.2.11 --login-type user --login-user example --stdin-password
! Insufficient permissions to set encryption types on computer account: CN=example,OU=w,OU=x,DC=ad,DC=example,DC=org: 00002098: SecErr: DSID-03150BB9, problem 4003 (INSUFF_ACCESS_RIGHTS), data 0

Note que isso funciona com o rhel6. Eu também não tenho permissão para fazer alterações no servidor do AD ou na minha conta.

A versão do rhel é 7.2 e os pacotes relevantes estão nas seguintes versões:

Name        : realmd
Version     : 0.16.1
--
Name        : adcli
Version     : 0.7.5
--
Name        : krb5-workstation
Version     : 1.13.2
--
Name        : samba-common
Version     : 4.2.3

Saída higienizada de journalctl -e SYSLOG_IDENTIFIER = realmd :

Jan 21 14:56:20 host.example.org realmd[25796]:  * Using domain name: example.org
Jan 21 14:56:20 host.example.org realmd[25796]:  * Using computer account name: HOST
Jan 21 14:56:20 host.example.org realmd[25796]:  * Using domain realm: example.org
Jan 21 14:56:20 host.example.org realmd[25796]:  * Calculated computer account name from fqdn: HOST
Jan 21 14:56:20 host.example.org realmd[25796]:  * Generated 120 character computer password
Jan 21 14:56:20 host.example.org realmd[25796]:  * Using keytab: FILE:/etc/krb5.keytab
Jan 21 14:56:20 host.example.org realmd[25796]:  * Using fully qualified name: host.example.org
Jan 21 14:56:20 host.example.org realmd[25796]:  * Using domain name: example.org
Jan 21 14:56:20 host.example.org realmd[25796]:  * Using computer account name: HOST
Jan 21 14:56:20 host.example.org realmd[25796]:  * Using domain realm: example.org
Jan 21 14:56:20 host.example.org realmd[25796]:  * Looked up short domain name: AD
Jan 21 14:56:20 host.example.org realmd[25796]:  * Found computer account for HOST$ at: CN=host,OU=w,OU=x,DC=ad,DC=example,DC=org
Jan 21 14:56:20 host.example.org realmd[25796]:  * Set computer password
Jan 21 14:56:20 host.example.org realmd[25796]:  * Retrieved kvno '87' for computer account in directory: CN=host,OU=w,OU=x,DC=ad,DC=example,DC=org
Jan 21 14:56:20 host.example.org realmd[25796]:  ! Insufficient permissions to set encryption types on computer account: CN=host,OU=w,OU=x,DC=ad,DC=example,DC=org: 00002098: SecErr: DSID-03150BB9, problem 4003 (INSUFF_ACCESS_RIGHTS),  
Jan 21 14:56:20 host.example.org realmd[25796]:  * Modifying computer account: userAccountControl
Jan 21 14:56:20 host.example.org realmd[25796]:  * Modifying computer account: operatingSystem, operatingSystemVersion, operatingSystemServicePack
Jan 21 14:56:20 host.example.org realmd[25796]:  ! Couldn't set operatingSystem, operatingSystemVersion, operatingSystemServicePack on computer account: CN=host,OU=w,OU=x,DC=ad,DC=example,DC=org: Insufficient access
Jan 21 14:56:20 host.example.org realmd[25796]:  * Updated existing computer account: CN=host,OU=w,OU=x,DC=ad,DC=example,DC=org
Jan 21 14:56:20 host.example.org realmd[25796]:  * Discovered which keytab salt to use
Jan 21 14:56:20 host.example.org realmd[25796]:  * Added the entries to the keytab: [email protected]: FILE:/etc/krb5.keytab
Jan 21 14:56:20 host.example.org realmd[25796]:  * Added the entries to the keytab: HOST/[email protected]: FILE:/etc/krb5.keytab
Jan 21 14:56:20 host.example.org realmd[25796]:  * Added the entries to the keytab: HOST/[email protected]: FILE:/etc/krb5.keytab
Jan 21 14:56:21 host.example.org realmd[25796]:  * Added the entries to the keytab: RestrictedKrbHost/[email protected]: FILE:/etc/krb5.keytab
Jan 21 14:56:21 host.example.org realmd[25796]:  * Added the entries to the keytab: RestrictedKrbHost/[email protected]: FILE:/etc/krb5.keytab
Jan 21 14:56:21 host.example.org realmd[25796]: process exited: 25879
Jan 21 14:56:21 host.example.org realmd[25796]:  * /usr/bin/systemctl enable sssd.service
Jan 21 14:56:21 host.example.org realmd[25796]: process started: 25880
Jan 21 14:56:21 host.example.org realmd[25796]: Created symlink from /etc/systemd/system/multi-user.target.wants/sssd.service to /usr/lib/systemd/system/sssd.service.
Jan 21 14:56:21 host.example.org realmd[25796]: process exited: 25880
Jan 21 14:56:21 host.example.org realmd[25796]:  * /usr/bin/systemctl restart sssd.service
Jan 21 14:56:21 host.example.org realmd[25796]: process started: 25894
Jan 21 14:56:22 host.example.org realmd[25796]: process exited: 25894
Jan 21 14:56:22 host.example.org realmd[25796]:  * /usr/bin/sh -c /usr/sbin/authconfig --update --enablesssd --enablesssdauth --enablemkhomedir --nostart && /usr/bin/systemctl enable oddjobd.service && /usr/bin/systemctl start oddjobd.se
Jan 21 14:56:22 host.example.org realmd[25796]: process started: 25901
Jan 21 14:56:23 host.example.org realmd[25796]: process exited: 25901
Jan 21 14:56:23 host.example.org realmd[25796]:  * Successfully enrolled machine in realm
Jan 21 14:56:23 host.example.org realmd[25796]: released daemon: current-invocation
Jan 21 14:56:23 host.example.org realmd[25796]: client gone away: :1.3100
Jan 21 14:56:23 host.example.org realmd[25796]: released daemon: :1.3100
Jan 21 14:57:23 host.example.org realmd[25796]: quitting realmd service after timeout
Jan 21 14:57:23 host.example.org realmd[25796]: stopping service

Saída sanitizada de anúncios na rede -P status :

objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
objectClass: computer
cn: host
distinguishedName: CN=host,OU=w,OU=x,DC=ad,DC=example,DC=org
instanceType: 4
whenCreated: 2012
whenChanged: 2016
uSNCreated: 1687590
memberOf: CN=group,OU=groups,OU=w,DC=ad,DC=example,DC=org
uSNChanged: 1212121212
name: host
objectGUID: x
userAccountControl: 6
badPwdCount: 0
codePage: 0
countryCode: 0
badPasswordTime: 1
lastLogoff: 0
lastLogon: 1
localPolicyFlags: 0
pwdLastSet: 1
primaryGroupID: 600
objectSid: S-1-5-21
accountExpires: 9
logonCount: 1
sAMAccountName: HOST$
sAMAccountType: 8
dNSHostName: host.ad.example.org
servicePrincipalName: RestrictedKrbHost/HOST
servicePrincipalName: RestrictedKrbHost/host.ad.example.org
servicePrincipalName: HOST/host.ad.example.org
servicePrincipalName: HOST/HOST
objectCategory: CN=Computer,CN=Schema,CN=Configuration,DC=ad,DC=example,DC=org
isCriticalSystemObject: FALSE
dSCorePropagationData: 2
dSCorePropagationData: 3
dSCorePropagationData: 4
dSCorePropagationData: 5
dSCorePropagationData: 6
lastLogonTimestamp: 1
    
por aseq 25.11.2015 / 04:34

3 respostas

1

O problema também apareceu no debian e ubuntu após o upgrade do samba de 4.1 para a versão 4.3 minor. O que significa que não foi redhat específico. Como um aparte eu entrei em contato com o suporte do redhat.

Não consegui encontrar uma solução, mas encontrei uma solução que é boa o suficiente. Por algum motivo, quando a falha específica ocorre, o keytab não é criado ou um incorreto é criado. O vínculo com os servidores de diretório ativo foi realmente bem-sucedido e, para fazer as coisas funcionarem, um novo keytab precisa ser criado.

Failed to join domain: failed to set machine kerberos encryption types: Insufficient access

Execute isto para criar o keytab:

net -P ads keytab create

Embora tenha optado por continuar usando o samba, acho que ao usar o domínio você também pode usar esse trabalho.

    
por 20.05.2016 / 04:40
3

Por que você está usando net? Você deve entrar no domínio com a ferramenta samba

samba-tool domain join domain.example.org DC -Uadministrator --realm=domain.example.org

net não é mais usada no samba 4, exceto em compartilhamentos e outras coisas.
Não mexa nas configurações criptográficas do kerberos.

    
por 25.11.2015 / 18:21
3

Eu tive o mesmo problema, realm plus adcli foi a solução. realm usa o backend samba-common por padrão. Obtenha os pacotes realmd e adcli e use

# realm join --membership-software=adcli -U <username> <domain>

Você nunca precisa usar adcli diretamente. Observe que ocorre o mesmo erro de permissão, mas você continua a ingressar no domínio em vez de falhar na negação do tipo de criptografia.

Isso me deixou amarrada por semanas. O projeto acabou ficando atrasado até que eu pudesse descobrir. Aprenda com minha dor.

Infelizmente, até onde eu sei, adcli parece não ter nenhuma maneira de verificar a associação sem fazer alterações no AD. Para verificar, você pode fazer o backup do /etc/samba/smb.conf e substituí-lo por (apenas):

realm = <REALM>
workgroup = <WORKGROUP>

Em seguida, execute net ads -P status para obter uma grande quantidade de informações extraídas do AD sobre sua conta de máquina recém-inscrita.  Você pode fazer o mesmo com ldapsearch no DC, pesquisando com ferramentas do Windows ou perguntando aos administradores do AD, mas não sei quais opções usar para o LDAP e gostaria de ser auto-suficiente.

Freqüentemente, adcli / net registra uma máquina, mas o sssd_ad não funciona bem para o gerenciamento de identidade pronto para uso. Eu acho especialmente em ambientes de empresa AD com RIDS acima de 200000 ou que foram atualizados de versões muito mais antigas várias vezes, problemas geralmente aparecem. Se você obtiver resultados do comando net ads status , mas ainda não conseguir obter informações do usuário, procure problemas com sssd e sssd_ad. systemctl status sssd.service é um bom lugar para começar. No entanto, a solução de problemas sssd_ad para mapeamento e autenticação não está no escopo da sua pergunta original.

Leitura de crédito extra:

Documentos para o reino em freedesktop.org.

Documentos para adcli no freedesktop.org.

Página man do sssd_ad

    
por 14.01.2016 / 01:41