Login sem senha do Ubuntu SSH usando kerberos

4

Isso está me deixando louco. Estou tentando configurar um servidor Ubuntu 16.04 integrado ao AD para aceitar tickets do Kerberos ao efetuar login via SSH. Eu tenho um servidor do CentOS 7 que aceita tickets sem nenhum problema depois de se juntar ao domínio do AD, mas eu não consegui a configuração muito bem no servidor Ubuntu.

Aqui está a configuração:

  • Domínio AD do Windows 2012 (realdomain.tld)
  • Estação de trabalho Fedora 25 (wksf25.realdomain.tld)
  • Servidor do CentOS 7 (sc7.realdomain.tld)
  • Ubuntu 16.04 Server (su16.realdomain.tld)

Tudo foi adicionado ao AD pela região e isso funciona sem problemas. Tudo também ganha ingressos Kerberos no login ou via kinit muito bem. O SSHing do wksf25 para o sc7 funciona muito bem, e consigo fazer o login via SSH usando o ticket do kerberos que obtenho no login no wkfs25.

Aqui estão os passos de configuração para o Ubuntu:

  1. Instale os pacotes:

    apt install realmd oddjob oddjob-mkhomedir sssd sssd-tools adcli samba-common krb5-user chrony packagekit libpam-krb5
    
  2. Edite o chrony.conf para usar os DCs do AD.
  3. Setup realmd.conf: vim /etc/realmd.conf

    [users]
    default-home = /home/%D/%U
    
    [realdomain.tld]
    fully-qualified-names = no
    manage-system = no
    automatic-id-mapping = yes
    
  4. Participe do domínio: realm join -vU domainuser realdomain.tld

  5. Permitir logins: realm permit -R realdomain.tld -g linuxadmins
  6. Específico do Ubuntu - Configurar pam para criar homedir no login: 'vim /etc/pam.d/common-session'

    session optional        pam_mkhomedir.so umask=0077
    
  7. Específico do Ubuntu - Ative a autenticação GSSAPI no OpenSSH: vim /etc/ssh/sshd_config

    GSSAPIAuthentiction yes
    GSSAPICleanupCredentials no
    
  8. Faça login com uma conta de domínio e verifique se tudo está funcionando. Tudo funciona neste ponto menos logins SSH sem senha via tickets Kerberos no servidor Ubuntu.

Aqui está o que eu recebo de realm list :

realdomain.tld
  type: kerberos
  realm-name: REALDOMAIN.TLD
  domain-name: realdomain.tld
  configured: kerberos-member
  server-software: active-directory
  client-software: sssd
  required-package: sssd-tools
  required-package: sssd
  required-package: libnss-sss
  required-package: libpam-sss
  required-package: adcli
  required-package: samba-common-bin
  login-formats: %U
  login-policy: allow-permitted-logins
  permitted-logins: 
  permitted-groups: linuxusers

sssd.conf:

[sssd]
domains = realdomain.tld
config_file_version = 2
services = nss, pam

[domain/realdomain.tld]
ad_domain = realdomain.tld
krb5_realm = REALDOAMIN.TLD
realmd_tags = joined-with-adcli 
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = False
fallback_homedir = /home/%d/%u
access_provider = simple
simple_allow_groups = linuxusers

krb5.conf:

[libdefaults]
    dns_lookup_realm = false
    ticket_lifetime = 24h
    renew_lifetime = 7d
    forwardable = true
    rdns = false
    default_ccache_name = KEYRING:persistent:%{uid}

    default_realm = REALDOMAIN.TLD

[realms]
    REALDOMAIN.TLD = {
    }

[domain_realm]
    realdomain.org = REALDOMAIN.TLD
    .realdomain.org = REALDOMAIN.TLD

O que estou perdendo?

    
por quinnr 01.02.2017 / 22:10

2 respostas

2

Corrigido. realm join -vU domainuser --membership-software=samba --client-software=sssd realdomain.tld para unir o domínio AD no Ubuntu, em vez de deixar realm usar os padrões.

Houve uma pequena diferença nas configurações do SSSD que eu não achei pertinente, mas aconteceu que foi.

Ubuntu: realmd_tags = joined-with-adcli

CentOS: realmd_tags = joined-with-samba

Para obter uma perspectiva diferente sobre o problema, criei uma VM do OpenSUSE e comecei a pesquisar como o SUSE faz sua integração com o AD. Enquanto eu estava descobrindo como o SUSE faz as coisas, eu me deparei com uma postagem que sugere que o Samba deveria ser usado para unir o Windows Server 2012+ AD em vez de adcli . 1 Adicione isso à diferença nas configurações acima, e que foi uma pista para o que estava acontecendo.

Deixar o domínio e voltar ao comando realm corrigido corrigiu o problema e tudo ficou estável no último dia.

Eu não tenho uma causa exata das diferenças entre os dois métodos, mas isso vai exigir mais pesquisas e é uma luta para outro dia.

    
por 03.02.2017 / 17:29
0

Tivemos uma situação semelhante coincidindo com a adição de um certificado SSL para suportar LDAPS (embora eu nunca revertesse essa alteração para determinar se era causal). Não tenho certeza se há algum motivo para preferir adcli , mas eu encontrei duas opções fixas realm join enquanto ainda usava adcli (no Ubuntu 14.04 e 16.04):

Solução 1 (Ubuntu 16.04 ou 14.04)

Adicione duas configurações ao nosso krb5.conf (nem sozinho ajudou):

[libdefaults]
    ...
    canonicalize = true
    rdns = false

Solução 2 (somente no Ubuntu 14.04)

Mais tarde, deparei com essa questão git que sugeriu outra opção que (sozinha) também está trabalhando para nós em 14.04:

[libdefaults]
    ...
    dns_canonicalize_hostname = false

FWIW

Na verdade, temos controle total sobre nosso DNS e não conseguimos encontrar nenhum problema em nossos registros existentes ou quaisquer alterações que eliminaram a necessidade deles.

    
por 14.04.2017 / 19:08