SSH logon único com Kerberos

0

Eu quero autenticar com o SSH através do SSO do Kerberos. Agora, quando estou logado com meu usuário principal em sourcehost , recebo meu ticket do Kerberos, mas não consigo usá-lo para o SSH em targethost .

O problema parece ser o nome do host. Eu tenho um host principal host/[email protected] mas não importa se eu ssh targethost ou ssh targethost.example.com é traduzido para o host principal host/[email protected] (veja a mensagem de erro abaixo), que não existe.

Eu posso estar errado, mas acho que deveria ser o contrário e ambos ssh targethost e ssh targethost.example.com devem ser traduzidos para o host principal host/[email protected] .

Aqui está o erro:

$ ssh targethost.example.com -v
...
debug1: Unspecified GSS failure.  Minor code may provide more information
Server host/[email protected] not found in Kerberos database

debug1: Unspecified GSS failure.  Minor code may provide more information
Server host/[email protected] not found in Kerberos database

debug1: Unspecified GSS failure.  Minor code may provide more information
...
debug1: Next authentication method: password
[email protected]'s password: 

Alguém pode explicar como o principal do host é derivado do nome do host e como isso pode ser configurado (eu estou no Ubuntu, a propósito)?

Editar:

a resposta do grawity me levou a uma solução que acho boa para minha configuração.

  • Eu encontrei no livro Kerberos de Garman que a canonização do lado do KDC era a maneira preferida.
  • Para o meu KDC com backup LDAP encontrado na documentação do Kerberos (na parte inferior de nesta página ) a maneira como isso pode ser realizado.

Portanto, depois de criar o principal do host com kdadmin.local / addprinc com o FQDN, tive que adicionar um alias à nova entrada principal no LDAP executando ldapmodify com a seguinte entrada:

dn: krbPrincipalName=host/[email protected],cn=EXAMPLE.COM,cn=krbContainer,dc=example,dc=com
replace: krbCanonicalName
krbCanonicalName: host/[email protected]
-
add: krbPrincipalName
krbPrincipalName: host/[email protected]
    
por bassjoe 11.01.2017 / 19:33

1 resposta

1

Tradicionalmente, o Kerberos usa o DNS reverso para canonizar o nome principal. Ou seja, depois de resolver targethost.example.com para um endereço IP, ele tenta resolver o endereço de volta para o nome "canônico" e usa isso para o principal.

Se o seu targethost foi resolvido via / etc / hosts, o nome do primeiro na linha correspondente será usado como o nome "canônico":

# good:
1.2.3.4  targethost.example.com  targethost

# bad:
1.2.3.4  targethost  targethost.example.com

Se você quiser, pode desativar totalmente a canonização baseada em DNS via /etc/krb5.conf:

[libdefaults]
    dns_canonicalize_hostname = false

... e simplesmente crie dois princípios para o host - um para o nome abreviado, um para o longo. (Isso é realmente o que o Active Directory faz, e não é diferente de como o SSL / TLS se comporta - é sempre mais seguro usar diretamente a entrada do usuário em vez de perguntar ao DNS.)

    
por 11.01.2017 / 19:45