Como passar as chaves do host ssh?

16

Estou tentando atualizar meu servidor ssh de chaves RSA de 2048 bits para chaves maiores, já que as recomendações são para descontinuar as chaves de 2048 bits em breve.

Gerei uma nova chave e adicionei-a à configuração do sshd, assim:

HostKey /etc/ssh/ssh_host_rsa_key            (old 2k-bit key first)
HostKey /etc/ssh/ssh_host_rsa4096_key        (new larger key 2nd)

Depois de reiniciar o sshd , eu ssh'd para o host, eu não recebo o aviso de identificação alterada, no entanto, o novo também não é armazenado em cache em ~/.ssh/known_hosts . Se eu colocar as linhas na ordem oposta, recebo o aviso de identificação alterada. Da mesma forma, quando eu adiciono uma chave ed25519, não importa em que ordem eu a coloque, o cliente não adiciona a nova chave ao arquivo de hosts conhecidos.

Isso parece impossibilitar a sobreposição de chaves de host SSH - difícil de acreditar, mas considerar a segurança rotineiramente requer a atualização de chaves.

Sei que você pode simplesmente trocar a chave, então cada cliente precisa executar ssh-keygen -R para remover a chave antiga, depois verificar manualmente e aceitar a nova chave, mas isso é um problema real, especialmente se você tiver muitos clientes conectando ou não administrar todos os clientes. Sem mencionar que, se você não administrar os clientes, há uma boa chance de eles não verificarem realmente a chave do host e, em vez disso, apertar Y - então a tentativa de melhorar a segurança provavelmente irá te abrir para o man-in. ataques do meio-termo.

Existe alguma maneira de fazer as atualizações de chave de host SSH funcionarem? Ou seja, os clientes devem aprender a nova chave mais segura (e também, esperamos, não aprender a chave obsoleta). E sem dar a chave do host mudou o aviso man-in-the-middle.

    
por derobert 03.01.2017 / 19:04

2 respostas

12

A rotação da Chave do Host é suportada desde o OpenSSH 6.8 (cliente e servidor adicionam suporte nesta versão).

O processo deve funcionar assim:

  • Gere e adicione novas chaves com a opção HostKey newkey (após as existentes) à /etc/ssh/sshd_config
  • Reinicie o sshd
  • Os clientes precisam configurar UpdateHostKeys yes em sua configuração (globalmente ou por host)
  • Os clientes de conexão coletarão todas as novas chaves
  • Depois de algum tempo (meses?), você pode remover as chaves antigas do sshd_config e reiniciar sshd
  • Os clientes (que se conectaram durante o período de transição) já terão as novas chaves (o antigo não será removido, que é o único problema aqui) e não exibirão o aviso de ataque MitM.

Os novos clientes suficientes poderão pegar as novas chaves. Esse recurso não está habilitado por padrão, provavelmente porque é bastante novo e logo mostrou alguma consideração de segurança. Mas hoje em dia, não há problema em usá-lo.

    
por 04.01.2017 / 11:20
-3

sshd sempre usa a primeira linha, então apague-a, então reinicie o sshd.

    
por 03.01.2017 / 19:16

Tags