Como rolar sobre chaves de host ssh?

17

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

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

HostKey / etc / ssh / ssh_host_rsa_key             (chave antiga de 2k bits primeiro) 
HostKey / etc / ssh / ssh_host_rsa4096_key         (nova chave maior 2ª )

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

Isso parece tornar impossível a substituição de chaves do host SSH - é difícil acreditar que esse seja realmente o caso, considerando que a segurança exige rotineiramente a atualização de chaves.

Eu sei que você pode simplesmente trocar a chave e, em seguida, todo cliente precisa executar ssh-keygen -Rpara remover a chave antiga, verificar e aceitar manualmente a nova chave - mas isso é uma dor real, especialmente se você tiver muitos clientes se conectando ou não administrar todos os clientes. Sem mencionar, se você não administrar os clientes, há uma chance muito boa de que eles não verifiquem a chave do host e, em vez disso, apenas pressione Y - então a tentativa de melhorar a segurança provavelmente o abrirá para o homem ataques intermediários.

Existe alguma maneira de fazer as atualizações de chave do host SSH funcionarem? Ou seja, os clientes devem aprender a nova chave mais segura (e também desaprender a chave obsoleta). E, sem dar a chave do host, mudou o aviso do homem no meio.

derobert
fonte
Por favor, dê uma olhada nisso . Embora não forneça uma solução para o que você deseja agora, pode ajudá-lo a alcançar seus objetivos finais no futuro.
Rda #

Respostas:

14

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

Portanto, o processo deve funcionar assim:

  • Gere e adicione novas chaves com a opção HostKey newkey(depois das existentes) ao/etc/ssh/sshd_config
  • Reiniciar sshd
  • Os clientes precisam fazer UpdateHostKeys yessua configuração (globalmente ou por host)
  • Os clientes que conectam receberão todas as novas chaves
  • Depois de algum tempo (meses?), Você pode remover as chaves antigas do sshd_confige reiniciarsshd
  • Os clientes (conectados durante o período de transição) já terão as novas chaves (as antigas não serão removidas, que é o único problema aqui) e não mostrarão o aviso de ataque do MitM.

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

Jakuje
fonte
-4

O sshd sempre usa a primeira linha, exclua-a e reinicie o sshd.

Ipor Sircer
fonte
11
... que resulta na chave do host assustador mudou o aviso. Tentando evitar isso, fazendo com que os clientes aprendam a nova chave (e eliminem a antiga).
derobert
Você está certo. Você não pode usar 2 teclas diferentes ao mesmo tempo. ssl não é tls. Não há recurso de adição de chave apenas mudando.
Ipor Sircer 3/17/17
4
Não é SSL nem TLS. O protocolo suporta várias chaves de host - por exemplo, costumava ser que todos tinham chaves RSA e DSA. Agora são tipicamente chaves ED25519, ECDSA e RSA.
derobert