A reinstalação do openssh-server altera a chave do host?

6

Recentemente, notei vários ataques ssh de força bruta no meu servidor que executam o Ubuntu e o OpenShServer. Além de tomar algumas contramedidas, naturalmente me tornei extremamente cuidadoso. Quando tentei entrar no servidor esta manhã, recebi o aviso de spoofing do DNS:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@       WARNING: POSSIBLE DNS SPOOFING DETECTED!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The ECDSA host key for somehost.com has changed,
and the key for the corresponding IP address xx.xx.xxx.xxx
is unknown. This could either mean that
DNS SPOOFING is happening or the IP address for the host
and its host key have changed at the same time.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.

O endereço IP provavelmente mudou, isso não seria surpreendente. Mas eu não mudei a configuração do ubuntu recentemente. No entanto, eu reinstalei o openssh-server executando

sudo apt-get remove openssh-server

e reinstalá-lo com

sudo apt-get install openssh-server

Isso me faz pensar que a chave do host depende apenas do diretório / etc / ssh /. No meu caso, parece assim:

drwxr-xr-x   2 root root   4096 Sep  3 19:12 .
drwxr-xr-x 160 root root  12288 Sep 27 08:41 ..
-rw-r--r--   1 root root 300261 Aug 11 18:24 moduli
-rw-r--r--   1 root root   1756 Aug 11 18:24 ssh_config
-rw-r--r--   1 root root   2542 Sep  3 19:09 sshd_config
-rw-------   1 root root    668 Apr 21 15:27 ssh_host_dsa_key
-rw-r--r--   1 root root    606 Apr 21 15:27 ssh_host_dsa_key.pub
-rw-------   1 root root    227 Apr 21 15:27 ssh_host_ecdsa_key
-rw-r--r--   1 root root    178 Apr 21 15:27 ssh_host_ecdsa_key.pub
-rw-------   1 root root    411 Apr 21 15:27 ssh_host_ed25519_key
-rw-r--r--   1 root root     98 Apr 21 15:27 ssh_host_ed25519_key.pub
-rw-------   1 root root   1675 Apr 21 15:27 ssh_host_rsa_key
-rw-r--r--   1 root root    398 Apr 21 15:27 ssh_host_rsa_key.pub
-rw-r--r--   1 root root    338 Sep  3 19:12 ssh_import_id

Hoje é 27 de setembro, então todos os arquivos ssh_host * não foram alterados desde abril. Não sei exatamente se a chave pública dos usuários influencia a chave do host. Então, só para ter certeza, eu verifiquei o diretório ssh do usuário ~ / .ssh /, que se parece com isto:

drwx------  2 user user 4096 Sep  5 18:41 .
drwxr-xr-x 49 user user 4096 Sep 27 08:43 ..
-rw-------  1 user user  748 Apr 21 19:20 authorized_keys
-rwx------  1 user user 3326 Jan 21  2016 id_rsa
-rw-rw-rw-  1 user user  748 Jan 21  2016 id_rsa.pub
-rw-r--r--  1 user user 2726 Mai  3 13:00 known_hosts

Portanto, a chave pública do usuário também não mudou.

Pergunta: Há mais alguma coisa que influencie a chave do host ou a impressão digital do host? Qualquer coisa que eu não esteja levando em conta? É possível que a reinstalação do openssh-server tenha alterado a chave do host? Se sim, onde estão os arquivos atualizados?

[EDITAR] Enquanto isso, verifiquei a impressão digital do ECDSA no próprio servidor executando (consulte this para detalhes)

$ nmap localhost --script ssh-hostkey

e a impressão digital corresponde àquela mostrada no aviso de falsificação. Portanto, parece que não o servidor mudou, mas sim o arquivo known_hosts na máquina que eu estava usando para se conectar ao servidor. Talvez Germar esteja certo e o endereço IP tenha correspondido a um servidor ao qual me conectei anteriormente. Ainda não sei exatamente por que recebi o aviso de spoofing. Mas, a menos que o comando nmap também não seja falsificado (suponho que não seja), eu deveria ter uma conexão segura.

    
por codepearlex 27.09.2016 / 10:18

2 respostas

3

Suas chaves de host originais seriam excluídas se você tivesse limpado openssh-server usando apt-get purge openssh-server ou apt-get remove --purge openssh-server . Nesse caso, as chaves seriam regeneradas e, naturalmente, seriam diferentes. Se openssh-server foi removido, os arquivos de chave não devem ter sido tocados na reinstalação.

As chaves do host de fato dependem apenas dos arquivos em /etc/ssh/ , a menos que o ssh esteja configurado para procurar em outro lugar. Isso seria evidente por qualquer% incomum de HostKey linhas em /etc/ssh/sshd_config . As linhas padrão da HostKey são:

# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

Definitivamente, vale a pena verificar o arquivo para ver se você está usando chaves de host de um local não padrão, já que seus arquivos de chave parecem não ter sido modificados.

Se as chaves no servidor forem as esperadas, o aviso provavelmente será gerado no final do cliente. Como Germar disse, o problema poderia ser causado pela reutilização de um endereço IP atribuído dinamicamente que já havia sido usado por outro servidor.

    
por Arronical 27.09.2016 / 11:16
1

Quando você remove o pacote e o reinstala, as chaves permanecem intactas. Somente se você limpar o pacote, eles serão removidos. E somente se os arquivos de chave não existir, o será criado. Para ter uma ideia completa do que está acontecendo, você pode ler esses arquivos:

/var/lib/dpkg/info/openssh-server.postinst
/var/lib/dpkg/info/openssh-server.postrm
/var/lib/dpkg/info/openssh-server.preinst
/var/lib/dpkg/info/openssh-server.prerm

Estes são os scripts que estão sendo executados pelo dpkg ao remover ou instalar - ou reconfigurar - o pacote.

    
por FredFoo 27.09.2016 / 10:42