A chave do host SSH parece estar mudando inesperadamente

A chave do host SSH parece estar mudando inesperadamente

Lancei um novo /etc/ssh/sshd_configcom o Puppet em um servidor de teste Ubuntu 12.04. A configuração era exatamente igual à configuração anterior, exceto que a seguinte linha foi removida:

HostKey /etc/ssh/ssh_host_ecdsa_key

Percebi que estava recebendo muitos erros semelhantes, mas variados, ao tentar conectar-me à caixa a partir de então, como: "A chave do host RSA para%nome de anfitrião%mudou e a chave para o endereço IP correspondente%endereço de IP% permanece inalterado."

Presumi que isso acontecia porque meu computador usava anteriormente a chave ECDSA por padrão e ela não estava disponível agora. Então adicionei essa linha de volta sshd_confige reiniciei o SSH.

Isso não resolveu totalmente o problema e, desde então, tenho enfrentado problemas constantes. Serei capaz de me conectar ao servidor várias vezes, talvez até por vários dias seguidos. Então, de repente, começo a receber erros informando que a chave do host foi alterada e o servidor para de aceitar minha chave pública para autenticação.

Sempre parece que, depois de mexer nele por um tempo e me conectar de um local diferente, de repente poderei me conectar com minha chave pública novamente e não receberei mais o erro sobre um possível intermediário. ataque.

Tentei regenerar todas as 3 chaves de host há vários dias (removi-as e executei dpkg-reconfigure openssh-servero que as regenerou). Como esperado, tive que remover as chaves antigas e aceitar as novas antes de poder conectar. Achei que talvez estivesse resolvido, mas o problema voltou.

Nada modificou nenhuma das chaves do host /etc/ssh/desde que eu as regenerei pela última vez - então o que poderia fazer com que eu frequentemente não conseguisse me conectar, fazer com que minha chave pública não funcionasse e, eventualmente, aceitar a nova chave e fazer com que as coisas começassem a funcionar bem novamente por um tempo?

Quando as coisas não estão funcionando (quando recebo o erro sobre a alteração da chave do host e o servidor para de aceitar minha chave pública), nada é gravado no arquivo /var/log/auth.log. Isso me leva a pensar que talvez às vezes esteja atingindo uma máquina diferente, mas também não sei como isso é possível, pois a entrada DNS está correta e sempre retorna o mesmo endereço IP.

Responder1

Existem três motivos comuns pelos quais você receberá essa mensagem.
Em ordem aproximada de probabilidade, eles são:

  1. Você mesmo alterou as chaves do host e não as limpou ou atualizou nas máquinas clientes.
    Esta é a situação mais comum. Faça a soma de verificação dos arquivos principais e tenha ABSOLUTA CERTEZA de que eles não foram alterados.

  2. Você alterou sua configuração SSH para apresentar (ou solicitar) um tipo de chave diferente do anterior.
    por exemplo, você queria chaves RSA ou DSA, agora você usa ECDSA - isso é uma "mudança de chave".
    Se for esse o caso, verifique e aceite as novas chaves (ou se não for isso que você deseja, desfaça a alteração).
    (Parece que você está na situação nº 2 - desfaça suas alterações, reinicie o sshd e verifique se tudo funciona conforme o esperado. Se você não aceitou as novas chaves em nenhum lugar, desfazer a alteração deve fazer com que o erro desapareça.)

  3. ALGUÉM ESTÁ FAZENDO ALGO DESAGRADÁVEL
    O ataque Man-in-the-Middle que o SSH avisa sobre o qual elevou sua cabeça feia. Alguém está ativamente tentando interceptar sua comunicação para roubar sua chave privada ou fazer outra coisa que você quase certamente não deseja que faça.


Se você eliminou 1 e tem certeza de que não fez 2, cabe a você assumir 3 até provar o contrário. Que significaNão faça login. - Toda a segurança SSH do mundo não ajuda quando os usuários ignoram o grande banner de aviso e entregam suas chaves aos invasores.

Investigue o canal entre você e seu servidor, verifique os logs de conexão do servidor (de um terminal em boas condições) enquanto tenta fazer login, etc. - há tantas maneiras de executar um ataque aqui que não consigo enumerar todas as possíveis contramedidas e estratégias de detecção, mas o pessoal daSegurança de TIcertamente teria algumas idéias.

Responder2

se possível/para teste/depuração:

  • use IPs em vez de nomes de host (só para ter certeza)
  • existem várias máquinas com o mesmo IP (DHCP deu IP que foi usado por outro host com IP fixo) na rede?
  • se as máquinas estiverem usando DHCP, seus IPs podem mudar em momentos aleatórios (ordem de inicialização, etc.). Talvez agora você esteja tentando se conectar a um host diferente - habilite a autenticação por senha e veja onde você chega.
  • no cliente cat /home/username/.ssh/known_hosts procure por linhas com chaves duplicadas, mas diferentes ips/hostnames

por exemplo:

192.168.56.3 ecdsa-sha2-nistp256 AAAAE2...fPfFAyoGSVAvs=
192.168.56.4 ecdsa-sha2-nistp256 AAAAE2...fPfFAyoGSVAvs=

informação relacionada