O SSH Key Exchange é mais seguro que a autenticação por senha?

9

Usuários remotos conectam-se a vários serviços em nosso escritório principal pela Internet usando o SSH. A senha do SSH é sincronizada com sua conta LAN A / D.

Ter usuários trazendo uma cópia de uma chave SSH para casa usando algo como um CD ou um pedaço de papel é mais seguro do que ter usuários que digitam a senha? Ou devo exigir ambos?

Minha pergunta provavelmente poderia ser reformulada da seguinte forma: existe alguma vulnerabilidade no protocolo de autenticação de senhas do SSH?

É esta mensagem que me faz duvidar:

The authenticity of host 'xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:.
Are you sure you want to continue connecting (yes/no)?
    
por srmark 18.11.2010 / 21:14

2 respostas

21

A mensagem que você está vendo é um problema separado. Ele está pedindo para você confirmar se o host ao qual você está se conectando é realmente aquele que você espera que seja. No servidor, você pode obter a impressão digital executando ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub . Então, quando você estiver se conectando remotamente pela primeira vez, pode ter certeza de que as impressões digitais coincidem.

As chaves do host, vistas em ação aqui, solucionam o problema dos ataques homem no meio - talvez o DNS tenha sido subvertido e você esteja se conectando à máquina de um concorrente em vez de ao seu. Essa máquina reúne suas credenciais e encaminha sua conexão para o servidor real de forma transparente, roubando suas informações sem que você saiba. Certificar-se de que a chave do host corresponda evita que isso aconteça, a menos que o invasor realmente tenha roubado a chave pública do servidor.

Um problema permanece, porém - como você sabe qual chave está certa? Após a primeira conexão, a chave pública é armazenada no arquivo ~/.ssh/known_hosts , portanto as conexões subseqüentes são adequadas. Mas na primeira vez, você precisa de alguma maneira fora de banda para obter a impressão digital, ou então você segue o modelo "TOFU": confiança no primeiro uso.

Mas nada disso tem a ver com senhas versus chaves, exceto pelo fato de que ambas as chaves e senhas podem ser roubadas por meio desse ataque - em certo sentido, é a vulnerabilidade que você está pedindo.

Há (pelo menos) três razões pelas quais as senhas são piores que as chaves:

  1. Eles podem ser forçados a brutalidade. Uma típica senha de 8 caracteres selecionada pelo usuário tem cerca de 30 bits de entropia de adivinhação. Um par de chaves pública / privada ssh é de 1024 bits ou maior. É efetivamente impossível forçar brutalmente uma chave ssh, mas a adivinhação automatizada de senhas acontece o tempo todo.
  2. Eles podem ser burros. Os usuários selecionam rotineiramente senhas horríveis, mesmo com restrições, e tendem a usar senhas mais difíceis em vários lugares. Isso obviamente torna os ataques mais fáceis.
  3. As senhas podem ser roubadas remotamente. Quando você está usando o SSH, a senha é criptografada na conexão, mas é muito comum que o servidor ssh seja substituído em sistemas comprometidos por um que registre todas as senhas. Com as chaves, a chave privada fica no sistema local e nunca é enviada, portanto, não pode ser roubada sem comprometer a máquina do cliente.

Além disso, as chaves ssh oferecem conveniência quando usadas com algo como ssh-agent - você obtém a operação sem problemas de conectar-se sem re-autenticar a cada vez, mantendo um grau razoável de segurança.

Não há vantagem significativa em pedir os dois, já que alguém com acesso suficiente para roubar a chave privada pode facilmente roubar a senha do usuário. Se você precisar de mais segurança do que isso, considere pesquisar um sistema de autenticação de dois fatores, como RSA SecurID ou WiKID .

    
por 18.11.2010 / 21:37
1

o que você está realmente perguntando é, "é um fator melhor do que outro", o tópico é a autenticação com vários fatores e é aconselhável que você analise o tópico.

Normalmente, um "fator" é algo que você sabe (senha), algo que você tem (arquivo ssh ou cartão magnético) ou algo que você é (impressão digital).

Um não é melhor do que um em si, eles são complementares. Perder um cd com o arquivo de chaves é tão ruim quanto divulgar sua senha, se isso é tudo que você precisa. Para ambientes seguros, é comum a autenticação de dois fatores.

    
por 18.11.2010 / 21:30