Por que a autenticação por senha SSH é um risco à segurança?

Por que a autenticação por senha SSH é um risco à segurança?

A maioria dos guias de configuração do OpenSSH aconselha desabilitar a autenticação por senha em favor da autenticação baseada em chave. Mas, na minha opinião, a autenticação por senha tem uma vantagem significativa: a capacidade de conectar-se de qualquer lugar sem uma chave. Se usado sempre com uma senha forte, isso não deverá representar um risco à segurança. Ou deveria?

Responder1

Existem prós e contras para autenticação baseada em senha ou chave.

Em alguns casos, por exemplo, a autenticação baseada em chave émenosseguro do que a autenticação por senha. Em outros casos, é baseado em pw que é menos seguro. Em alguns casos, um é mais conveniente, em outros, menos.

Tudo se resume a isto: quando você faz autenticação baseada em chave, vocêdeveproteja sua chave com uma senha. A menos que você tenha o ssh-agent em execução (o ssh-agent libera você de inserir sua senha todas as vezes), você não ganhou nada em termos de conveniência. A segurança é discutível: o vetor de ataque agora mudou do servidor para VOCÊ, ou para sua conta, ou para sua máquina pessoal, (...) - esses podem ou não ser mais fáceis de quebrar.

Pense fora da caixa ao decidir isso. Se você ganha ou perde em termos de segurança depende do resto do seu ambiente e de outras medidas.

edit: Ah, acabei de ver que você está falando de um servidor doméstico. Eu estava na mesma situação, “senha” ou “pendrive com chave” sempre comigo? Eu fui para o primeiromasmudou a porta de escuta SSH para algo diferente de 22. Isso impede que todos aqueles script kiddies coxos forcem faixas inteiras de rede.

Responder2

O uso de chaves ssh tem um recurso exclusivo em comparação ao login com senha: você pode especificar os comandos permitidos. Isso pode ser feito modificando ~/.ssh/authorized_keyso arquivo no servidor.

Por exemplo,

command="/usr/local/bin/your_backup_script.sh", ssh-rsa auiosfSAFfAFDFJL1234214DFAfDFa...

permitiria apenas o comando `/usr/local/bin/your_backup_script.sh" com essa chave específica.

Você também pode especificar os hosts permitidos para a chave:

from="yourclient,yourotherclient", ssh-rsa auiosfSAFfAFDFJL1234214DFAfDFa...

Ou combine os dois:

from="yourbackupserver", command="/usr/local/bin/your_backup_script.sh", ssh-rsa auiosfSAFfAFDFJL1234214DFAfDFa...

Com as chaves você também pode conceder acesso temporário a algum usuário (digamos, um consultor) a um servidor sem revelar a senha dessa conta específica. Depois que o consultor terminar seu trabalho, a chave temporária poderá ser removida.

Responder3

Você pode obter o melhor dos dois mundos permitindo apenas a autenticação por senha na sua rede. Adicione o seguinte ao final do seu sshd_config:

PasswordAuthentication no
Match Address 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
    PasswordAuthentication yes

Responder4

As chaves ssh evitam ataques man in the middle em sua senha.

quando você tenta fazer login com uma chave, o servidor criará um desafio baseado em sua chave pública e o enviará ao seu cliente. que irá descriptografá-lo e construir uma resposta apropriada para enviar.

Sua chave privada nunca é enviada ao servidor e qualquer pessoa que esteja ouvindo não poderá fazer nada, exceto interceptar aquela única sessão.

com uma senha, eles teriam suas credenciais.

Minha solução é ter uma chave ssh portátil em formatos adequados em uma partição criptografada em uma chave USB. isso me permite:
retrair facilmente essa chave no caso de ela ser perdida.
restringir quais servidores ele me permite acessar
e ainda carregá-lo

embora instalar o software de montagem seja uma dor (truecrypt)

informação relacionada