SSH: Seguro para o cliente hospedar chave RSA privada?

10

É seguro gerar um par de chaves públicas / privadas no servidor, adicionar a chave pública à lista de autorizado_chave e copiar a chave privada para cada cliente, conforme descrito aqui ( http://www.rebol.com/docs/ ssh-auto-login.html ) Supondo que você mantenha controle permanente sobre cada cliente? (ou seja, mesmo usuário, muitos computadores).

O procedimento típico é gerar o par de chaves pública / privada no cliente e, em seguida, adicione a chave pública do cliente à lista de keys_chave no servidor, conforme descrito aqui ( http://www.linuxproblem.org/art_9.html ). Com esse método, se você tiver vários computadores clientes, cada um deles deve ser concatenado na lista author_keys e mantido ao longo do tempo.

user345807
fonte

Respostas:

22

Parabéns, você encontrou um tutorial na Internet com maus conselhos.

O problema do uso de um único par de chaves para vários computadores ocorre quando qualquer um dos computadores é comprometido. Então você não tem escolha a não ser revogar o par de chaves em todos os lugares e reescrever todos os computadores que estavam usando esse par de chaves. Você sempre deve usar pares de chaves exclusivos por máquina e por usuário, para limitar os danos que uma chave comprometida pode causar.

Quanto ao tutorial, é um conselho incrivelmente ruim para gerar o par de chaves no servidor e copiar a chave privada para o cliente . Isso é totalmente ao contrário. Em vez disso, o par de chaves deve ser gerado no cliente e a chave pública copiada para o servidor. Existe até um script auxiliar ssh-copy-idque faz exatamente isso e, ao longo do caminho, garante que todas as permissões estejam corretas, o cliente obtém a chave do host do servidor etc.

De fato, pode haver situações em que você deseja gerenciar centralmente as chaves de identidade dos usuários, por exemplo, para scripts automatizados, mas, nesse caso, você realmente deve fazer isso a partir de um terceiro host ou, idealmente, de um sistema de gerenciamento de configuração, como o fantoche.

Michael Hampton
fonte
2
Além disso, o usuário da máquina cliente deve se lembrar de que essa chave específica não pode ser usada com segurança para outros fins, pois você não sabe onde a chave privada esteve. Se você sabe que a chave secreta foi gerada no cliente e nunca saiu do cliente, geralmente é seguro usar a mesma chave para efetuar login em sistemas diferentes.
kasperd
7
Uma analogia com o compartilhamento de agulhas me veio à mente, mas eu realmente não tinha certeza se queria ir tão longe ...
Michael Hampton
Não tenho certeza de como você incluiria a parte assimétrica nessa analogia.
kasperd
1
Bem ... depende de qual extremidade da agulha você está.
Mircea Vutcovici 27/03
3

O maior problema com o protocolo descrito nesse tutorial é que ele não especifica como você "baixa a chave privada para a máquina cliente" de maneira segura (isto é, evita a interceptação). Se você ainda não possui um canal seguro, presumivelmente a chave será transferida de forma clara pela Internet (HTTP, FTP, email, etc.). Você pode usar HTTPS, mas se você não tiver um certificado real, poderá ser MITM para farejar a chave. Apenas faça como você deveria; gere o par de chaves na máquina cliente, transfira a chave pública para o servidor e não se esqueça de verificar uma soma de verificação do arquivo para garantir que não tenha sido modificado na transferência.

Atsby
fonte