Aplicar senhas de chave SSH?

7

Eu estou olhando para remover logins baseados em senha para SSH. No entanto, eu não quero permitir chaves ssh sem senha, pois isso seria ainda pior.

Como posso ter certeza de que somente chaves SSH com senhas podem se conectar?

Se isso não puder ser feito, existem alternativas, como gerenciar centralmente a geração de chaves SSH e impedir que os usuários gerem e / ou usem suas próprias chaves? Algo como PKI, suponho.

    
por Lee B 08.11.2009 / 10:44

5 respostas

17

A frase secreta que pode ser definida na chave privada é não relacionada ao servidor SSH ou à conexão com ela. A definição de uma frase secreta para a chave privada é apenas uma medida de segurança que o dono da chave pode tomar para impedir o acesso ao seu shell remoto por terceiros, caso a chave privada seja roubada.

Infelizmente, você não pode forçar os usuários a proteger suas chaves privadas com senhas. Às vezes, chaves privadas desprotegidas são necessárias para automatizar o acesso ao servidor SSH remoto. Um bom hábito que recomendo strongmente para tais casos é aconselhar os usuários a hash o arquivo known_hosts (armazenado em ~ / .ssh / known_hosts ), que mantém informações sobre os hosts remotos aos quais o usuário se conecta, usando o seguinte comando:

ssh-keygen -H -f ~/.ssh/known_hosts

Dessa forma, mesmo que um terceiro tenha acesso a uma chave privada desprotegida, seria extremamente difícil descobrir para quais hosts remotos essa chave é válida. É claro que limpar o histórico do shell é obrigatório para que essa técnica tenha algum valor.

Além disso, outra coisa que você deve sempre ter em mente, não é permitir que o root faça o login remotamente adicionando o seguinte na configuração do seu servidor SSH (sshd_config):

PermitRootLogin no

Por outro lado, se você quiser impedir que os usuários usem as chaves para autenticar, mas ao invés disso use senhas, você deve adicionar o seguinte ao seu sshd_config :

PasswordAuthentication yes
PubkeyAuthentication no
    
por 08.11.2009 / 11:49
7

Não é possível.

Os usuários podem fazer qualquer coisa com seus arquivos de chaves, converter em sem senha, mesmo se você gerou, por exemplo.

    
por 08.11.2009 / 10:47
3

Você não pode. Depois que o usuário tiver os dados principais em sua posse, você não poderá impedi-los de remover a frase secreta. Você precisará procurar outras formas de fazer sua autenticação.

    
por 08.11.2009 / 10:48
2

Para obter o controle das chaves do usuário, todas as chaves devem ser movidas para um diretório de propriedade raiz, onde as chaves sejam legíveis, mas não possam ser modificadas pelo usuário final. Isso pode ser feito atualizando o sshd_config.

Quando os arquivos-chave estiverem em um local controlado, você precisará de uma interface de gerenciamento para atualizar (e impor a política de senha) seguida da distribuição das chaves para os hosts necessários. Faça uma rolagem ou veja produtos como FoxT / Tectia, etc.

    
por 11.09.2012 / 12:19
0

SIMPLESMENTE, basta estender o protocolo SSH para que o cliente SSH ou o agente SSH informe / defina um sinalizador para informar se a chave privada original foi criptografada ou não (talvez o servidor possa fazer uma consulta) - já que o cliente lado tem visibilidade da chave privada e até mesmo já pede a senha quando a chave é criptografada.

    
por 12.11.2018 / 05:49