discover you're being sniffed
Isso é exatamente o que o SSH protege contra. Contanto que você verifique cuidadosamente a chave do host, não importa se alguém está lendo seu tráfego: tudo é criptografado.
disconnecting before any sensitive information is disclosed
Novamente, o SSH padrão ficará bem. A verificação da chave do host é uma das primeiras tarefas feitas ao estabelecer uma conexão SSH; se você cancelá-lo, a conexão é fechada imediatamente sem transmitir nenhum dado de autenticação.
For example, if you refuse to connect in case the fingerprint isn't the one you expected, do MITM still work?
O atacante não receberá dados SSH "privados", se é isso que você quer dizer. Veja acima - a verificação da chave do host é uma das primeiras coisas feitas. Nada mais é enviado até que o servidor seja verificado.
maybe there's a way of garbling the data so it doesn't make sense or something?
Ele é chamado de "criptografia" e acontece de ser uma parte essencial do SSH. :) O atacante não poderá ler nada a menos que você aceite o seu hostkey em vez do real. Da mesma forma, a criptografia junto com a verificação de integridade (usando o HMAC) torna impossível inserir pacotes.
Eu admito que não sou um criptógrafo nem nada. Mas, IMHO, se você verificar cuidadosamente a impressão digital da chave do host, o SSHv2 será o mais seguro possível.
-
Se não fosse seguro, ele teria sido corrigido / substituído / atualizado. Isso aconteceu uma vez: o SSH v1 foi substituído pelo SSH v2.
-
Isso significa que você deve desativar o SSH v1 no servidor e no cliente.
A versão 1 do SSH é muito insegura e, embora a maioria dos clientes esteja configurada para usar o SSHv2 primeiro, eles ainda retornam à v1 se um servidor não oferecer a v2. Isto introduz uma oportunidade para um ataque MITM ... embora eu não me lembre dos detalhes, tem algo a ver com o atacante gerando uma chave v1 com uma impressão digital muito similar.
Para o OpenSSH, coloque
Protocol 2
no seu arquivo de configuração. -
Existe uma pequena possibilidade de um dos algoritmos usados pelo SSH ser quebrado. Mas se alguém conseguir quebrar RSA ou DH, o mundo terá problemas maiores para se preocupar do que a segurança do seu servidor ... (Além disso, existem algoritmos alternativos).
A propósito, o OpenSSH v5.8 mudou de DH e DSA para ECDH e ECDSA como seus algoritmos primários (para troca de chaves e chaves de host, respectivamente).