Usando chaves SSH com Kerberos

3

Portanto, há um problema que estamos tendo em nossa empresa, o que me levou a perder o cabelo na semana passada:

Temos centenas de caixas de servidores (uma mistura do CentOS6 / 7, se necessário) que precisam ser rapidamente conectadas em uma base diária entre uma equipe. Todo mundo está usando mRemoteNG ou SuperPutty como a capacidade de salvar e organizar informações de conexão, bem como conexões com guias são um must have. Atualmente todo mundo está compartilhando uma única chave SSH para entrar em todas as caixas. Obviamente, nossa prática atual é uma ideia terrível, então o que gostaríamos de fazer é fornecer a cada usuário uma conta individual e uma chave para serem usadas em todas as caixas.

Olhando em volta, parecia que o Kerberos é uma opção perfeita para gerenciar vários usuários e lidar com a autenticação em todo o mundo. grande quantidade de servidores. Infelizmente, parece que estamos tendo alguns problemas para fazê-lo funcionar da maneira que queremos. Conseguimos configurar o Kerberos para lidar com conexões SSH para usuários com senhas, mas quando se trata de desabilitar senhas e usar chaves SSH, não conseguimos descobrir.

Também procuramos usar os keytabs Kerberos, no entanto, não conseguimos fazer com que funcionassem via PuTTY ou encontrar uma solução viável para salvar informações de conexão e ter conexões com guias com keytabs.

A principal questão aqui é: O Kerberos pode ser usado para gerenciar usuários do SSH com chaves SSH? Caso contrário, existe uma compilação do PuTTY disponível que funcione com os keytabs do Kerberos ou uma alternativa que possa organizar e ter conexões com guias? Obrigado!

    
por Mark O'Reilly 01.07.2015 / 20:35

3 respostas

5

O

PuTTY 0.61 ou mais recente pode usar tíquetes Kerberos / GSSAPI (em vez de autenticação de chave pública) para autenticar em um servidor SSH. Para habilitar isso, vá no menu de configuração do PuTTY para "Connection | SSH | Auth | GSSAPI" e certifique-se de que "Attempt GSSAPI authentication" esteja habilitado. (O equivalente ao cliente Linux OpenSSH é "ssh -K".)

Existem duas maneiras pelas quais o PuTTY pode obter o tíquete de concessão de tíquete do Kerberos:

  1. O PuTTY tem acesso a qualquer ticket que o Windows obteve de seu servidor de domínio do Active Directory quando você fez login em uma máquina Windows que está em um domínio. Nesse caso, não há necessidade de fazer nada de especial para conseguir um ingresso.

  2. Como alternativa (por exemplo, em uma máquina Windows que não esteja em um domínio), o PuTTY também tem acesso a todos os tickets gerados pela ferramenta GUI "MIT Kerberos Ticket Manager" que vem com o "MIT Kerberos for Windows". pacote do link . Apenas use isso para obter seu tíquete Kerberos antes de iniciar o PuTTY. Se o "MIT Kerberos Ticket Manager" estiver em execução, ele solicitará automaticamente a senha do Kerberos se o PuTTY precisar de uma. Portanto, é uma boa ideia adicionar um atalho ao "MIT Kerberos Ticket Manager" à sua pasta de inicialização.

No lado do servidor sshd:

  • Obtenha do seu KDC e instale em /etc/krb5.keytab um keytab do servidor.

  • Em /etc/ssh/sshd_config , verifique se você tem GSSAPIAuthentication yes para ativar a autenticação Kerberos.

Certifique-se de que krb5.conf esteja configurado corretamente em ambos os lados, de modo que as bibliotecas GSSAPI usadas pelo putty e pelo sshd encontrem o mesmo domínio e contatem o mesmo KDC (a menos que seu território e KCD já estejam devidamente anunciados via DNS, caso em que nada precisa ser adicionado a krb5.conf ).

    
por 21.10.2015 / 13:12
4

Primeiro, um esclarecimento. Kerberos e SSH Keys são dois métodos de autenticação mutuamente exclusivos para o SSH. Você não usa o Kerberos com chaves SSH. Você usa o Kerberos em vez de chaves SSH. Ambos permitem o logon SSH "sem senha". Um pouco de leitura no protocolo Kerberos pode estar em ordem.

Com o Kerberos, você precisa obter um TGT que prove que você é quem você é antes de tentar se conectar ao seu endpoint. Se você estiver no Windows associado a um domínio do Active Directory, receberá automaticamente um Kerberos TGT para o domínio do Active Directory no login. Mas muitas organizações não se incomodam em configurar seus hosts Linux para usar o domínio Kerberos do Active Directory. Se você fizer isso, a vida é muito mais fácil. Se você não fizer isso, significa que o Windows precisa ser configurado para saber sobre o seu outro território do Kerberos e como solicitar um ticket. É também uma etapa extra para seus usuários, pois eles precisarão abandonar o AD TGT e solicitar um TGT para seu outro domínio.

Você também tem a opção de usar uma confiança entre as regiões do Kerberos, de modo que (por exemplo) os usuários do AD possam se autenticar em recursos na outra região do Kerberos.

Um arquivo keytab Kerberos é apenas uma representação de arquivo da senha da sua conta Kerberos. Portanto, ao solicitar seu TGT inicial, você não precisaria digitar sua senha se tivesse um arquivo keytab válido. Mas isso também é geralmente fora do escopo do seu cliente SSH.

Depois de ter um TGT válido, você precisa verificar se o seu cliente SSH está configurado para usar o GSSAPI. O PuTTY suporta isso fora da caixa e tenho certeza que a maioria dos outros também.

Supondo que tudo está configurado corretamente, ele deve "apenas funcionar". Mas há muitos percalços de configuração que podem acontecer ao longo do caminho. Há também muitos produtos de terceiros que podem facilitar as coisas, mas vou me abster de mencionar algo específico.

    
por 01.07.2015 / 23:30
-1

Eu sei que o ssh no cygwin suportaria os keytabs.

Siga estas instruções para configurar o kerberos e o ssh no cygwin: link

Em vez do passo 'kinit username', execute:

kinit -kt /path/to/keytab username

(Então ssh como normal.)

    
por 13.05.2016 / 16:23