SSH mais seguro ainda - não deixando vestígios PDF Imprimir E-mail
Escrito por Miguel Di Ciurcio Filho   
Sex, 05 de Agosto de 2011 02:28

SSH mais seguro ainda - não deixando vestígios

Segurança não é uma ciência exata. Só existe uma certeza: nada é 100% seguro. As vezes do nada, quando você pensa que está fazendo tudo certinho descobrimos que ainda há brechas a serem fechadas. Estava eu felizão e querendo facilitar minha vida, descobri que o bash já faz auto-completar (com ou sem hífen?) de hosts no ssh. Ó que beleza! Porém, li que a opção HashKnownHosts tem que ser desligada para isso funcionar. Hmmm... Mas peraí, posso desligar essa opção? Vejamos.

Quando você acessa uma máquina, o nome dela e sua respectiva chave pública ficam armazenados em ~/.ssh/known_hosts. Então quando você dá "ssh a[tab]" o bash vai mostrar os hosts que começam com a. Concorda que uma listagem de todas as máquinas que você já logou é uma informação muito quente para ser deixada às claras? Vejamos, no caso de alguém ter pego sua senha e conseguido logar em sua conta, essa pessoa teria acesso aos nomes dessas máquinas e poderia tentar sua senha nelas e expandir a invasão. Só de saber de bandeja mais máquinas com ssh para tentar ataques de dicionário, força bruta, etc, já vale apena.

Vamos mais além, caso você use o putty no Windows (usando Windows meu, pela mor) o seu histórico fica salvo no registro, facilmente legível por um bot, worm, vírus, etc. Existe um artigo que fala sobre esse assunto, chamado known_hosts Address Harvesting. Mais informações você encontra aqui.

Solução pra isso: usar a opção HashKnownHosts do OpenSSH. Todas os hostnames do seu arquivo known_hosts serão armazenados como um hash, tornando impraticável saber quais máquinas você logou. Porém, essa opção não é ativada por padrão no OpenSSH. O Debian já vem com ela habilitada, segurança++. No CentOS não, segurança--.

Edite o seu ~/.ssh/config ou deixe ativado globalmente no seu sistema em /etc/ssh/ssh_config:
HashKnownHosts yes

Caso você já tenha um known_hosts com nomes às claras, rode um ssh-keygen -H para que os hosts do seu arquivo sejam convertidos para hashes.

Tudo lindo, né? Err, não.
history|grep ssh

Ó que beleza! De que adiantou ter seu known_hosts protegido se eu posso ver onde você deu ssh? Faça com que o bash não guarde no histórico os comandos ssh. Coloque no seu .bash_profile:
export HISTIGNORE="&:ssh *"


O & serve para que ele não guarde entradas repetidas. Separamos cada entrada com dois pontos, e depois vem o "ssh *".

Bem melhor, né? Só que tem mais. Alguns servidores que eu logo não funcionam na porta 22, pra poupar digitação, eu tenho algumas entradas no meu ~/.ssh/config, com os devidos hostnames e portas. Hmmm, mais um ponto de rastros. M****.

Bom, fazendo uma análise mais detalhada, eu fiz uma busca por .ssh/config nos homedirs de alguns grupos de usuário aqui do IC. De cerca de 140 usuários, 2 tinham 2 ou 3 hosts especificados cada um. Então, cerca de 98.5% dos usuários têm seu histórico de ssh protegido, já que não estão especificando nenhum host no arquivo de configuração. Certamente o Ulisses vai aparecer me falando mais alguma coisa que eu não percebi.

Fonte: http://osysadmin.blogspot.com

 

Adicionar comentário


Código de segurança
Atualizar