Atualizando as chaves SSL (SSH) do Debian

Como muitos já sabem o Debian passou por uma atualização crítica, os pacotes de criação de chaves SSL (Utilizadas pelo SSH) estavam com um bug muito sério, e acabavam gerando chaves menos seguras do que deveriam.
Para quem tem servidores SSH instalados é obrigatório fazer a atualização do sistema e também das chaves.
Eu utilizo, nos servidores, o Debian Etch, então fiz esses procedimentos para atualizar os pacotes necessários e gerar as chaves novamente:



# aptitude update
# atitude dist-upgrade



Ele pediu para atualizar os seguintes pacotes:
openssh-client openssh-server



E pediu também para instalar o novo pacote:
openssh-blacklist




Esse pacote é novo no Debian e tem uma lista de chaves OpenSSH ruins e conhecidas, que são usadas pelo sistema para reconhecer chaves SSH suspeitas.
Durante a instalação dos pacotes o instalador vai lhe sugerir a renovação das chaves, ele NÃO fará isso automaticamente! Então temos que fazer "na unha" mesmo, primeiro é possível ver as chaves atuais:



# ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key
# ssh-keygen -l -f /etc/ssh/ssh_host_dsa_key


Claro que você não precisa vê-las. Então removemos as chaves atuais:



# rm /etc/ssh/ssh_host_rsa_key
# rm -l -f /etc/ssh/ssh_host_dsa_key


Agora simplificamos a renovação das chaves assim:


# dpkg-reconfigura openssh-server


Pronto, chaves renovadas e sistema seguro novamente. Mas espere um pouco, se eu troquei a identificação OpenSSH da máquina, os clientes que logavam nela não mais a reconhecerão? É isso mesmo! Veja só, eu fui logar no meu servidor e ele deu esse erro:



# ssh infog@192.168.1.1
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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 the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00.
Please contact your system administrator.



Ou seja, ele está me dizendo que existe a possibilidade de estar acontecendo um ataque, ou que simplesmente a chave RSA (do SHH) foi alterada. Isso acontece porque o cliente SSH guarda as chaves dos hosts que ele conhece (onde já logou), e quando ele tenta conferir a chave ele vê que ela foi alterada. Isso é muito importante pois previne que você digite seu usuário e senha em um servidor que está tentando se passar pelo que você se loga sempre.
Ok, como corrijo isso? Usando o comando ssh-keygen você pode retirar o host da sua lista de hosts conhecidos, no meu caso o comando foi esse:


$ ssh-keygen -R 192.168.1.1



Com isso ele remove a chave da lista (que fica no arquivo ~/.ssh/known_hosts) e você pode fazer a conexão normalmente. É claro que na primeira conexão ele irá perguntar se você quer adicionar a nova chave à lista de hosts conhecidos, basta aceitar.
É importante lembrar que você não pode remover o hosts da sua lista de hosts conhecidos sempre que a identificação dele mudar, lembre-se sempre se contatar o administrador do servidor para perguntar se realmente a chave mudou, ou se tem algum engraçadinho pelo caminho.
Os filhotes do Debian, como o Ubuntu, também precisam de atualização. Este texto recebeu algumas modificações depois de alguns teste realizados com o sr. Kretcheu.
O SSH também permite o login sem senha com a utilização de chaves públicas e privadas, para saber mais sobre isso leia esse texto.


Gostou do Blog? Assine nosso Feed RSS


Evaldo Junior

Desenvolvedor web, palestrante, escritor e usuário e contribuidor do Software Livre.

comments powered by Disqus