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

9

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

Ter usuários trazendo uma cópia de uma chave SSH para casa usando algo como um CD ou um pedaço de papel seria mais seguro do que ter que digitar sua senha? Ou devo exigir os dois?

Minha pergunta provavelmente poderia ser reformulada da seguinte maneira: existe alguma vulnerabilidade no protocolo de autenticação de senha 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)?
srmark
fonte

Respostas:

22

A mensagem que você está vendo é um problema separado. Ele está pedindo para você confirmar que o host ao qual você está se conectando é realmente o 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, verifique se as impressões digitais correspondem.

As chaves do host, vistas em ação aqui, abordam o problema dos ataques intermediários - talvez o DNS tenha sido subvertido e você esteja se conectando à máquina de um concorrente, e não à sua. Essa máquina reúne suas credenciais e encaminha de forma transparente sua conexão com o servidor real, roubando suas informações sem que você saiba. Garantir que a chave do host corresponda impede que isso aconteça, a menos que o invasor tenha realmente roubado a chave pública do servidor.

Um problema permanece: como você sabe qual chave está certa? Após a primeira conexão, a chave pública é armazenada no seu ~/.ssh/known_hostsarquivo, para que as conexões subsequentes sejam boas. Mas, na primeira vez, você precisa de uma maneira fora de banda para obter a impressão digital, ou então segue o modelo "TOFU": confiança no primeiro uso.

Mas nada disso tem a ver com senhas x chaves, exceto que chaves e senhas podem ser roubadas por esse ataque - em certo sentido, é a vulnerabilidade que você está solicitando.

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

  1. Eles podem ser brutais. Uma senha típica de 8 caracteres selecionada pelo usuário possui cerca de 30 bits de adivinhação-entropia. Um par de chaves pública / privada ssh é 1024 bits ou maior. É efetivamente impossível forçar uma chave ssh com força bruta, mas a adivinhação automática de senha 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 locais. Obviamente, isso facilita os ataques.
  3. As senhas podem ser roubadas remotamente. Quando você usa o SSH, a senha é criptografada na conexão, mas é muito comum o servidor ssh ser substituído em sistemas comprometidos por um que registre todas as senhas. Com as chaves, a chave privada permanece no sistema local e nunca é enviada e, portanto, não pode ser roubada sem comprometer a máquina do cliente.

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

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

mattdm
fonte
Ótima resposta. Exatamente o que eu estava procurando. Obrigado!
srmark
referente ao número 3) Se você estiver acessando um servidor já comprometido ... por que alguém iria querer sua senha? A única razão pela qual consigo pensar é se você usar a mesma senha em todos os lugares.
Sirex
Sirex - certo; eles roubam sua senha e a usam em outros sistemas. Observe na pergunta que as senhas são usadas como "LAN A / D". Portanto, eles roubam sua senha do servidor de login ssh e também têm acesso ao servidor Windows. Além disso, agora, sempre que o sistema estiver comprometido, você deverá passar pela broca de incêndio "ok, todo mundo muda sua senha novamente".
mattdm
Além disso, conforme observado no número 2, os usuários estão usando a mesma senha em todos os lugares. Suspiro.
mattdm
Abaixo usuários chatos! :(
Sirex
1

o que você realmente está perguntando é: "é um fator melhor do que outro", o tópico é autenticação multifatorial e é recomendável que você analise o tópico.

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

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

Sirex
fonte
Sim, entendo o que você está dizendo. Neste caso, no entanto, estou apenas tentando descobrir se a autenticação por senha pode ser hackeada usando algo como o homem no meio.
srmark 18/11/2010
para ssh como um exemplo específico, não, pois a seção de entrega de senha também é criptografada e as chaves mudam durante a sessão (acredito que 30 segundos). Porém, isso não é um reflexo de senha vs senha
Sirex