SSH: É seguro que o cliente hospede a chave RSA privada?

10

É seguro gerar um par de chaves pública / privada no servidor, adicionar a chave pública à lista authorized_keys e depois copiar a chave privada para cada cliente, conforme descrito aqui ( link ) Presumindo 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, adicionar a chave pública do cliente à lista authorized_keys no servidor, conforme descrito aqui ( link ). Com esse método, se você tiver vários computadores clientes, cada um deles deve ser concatenado à lista authorized_keys e mantido ao longo do tempo.

    
por user345807 27.03.2015 / 00:49

2 respostas

22

Parabéns, você encontrou um tutorial da Internet com conselhos ruins.

O problema com o 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 re-digitar todos os computadores que estavam usando esse par de chaves. Você deve sempre usar pares de chaves exclusivos por máquina e por usuário, para limitar os danos que uma chave comprometida pode fazer.

Quanto a esse tutorial, é um conselho incrivelmente ruim gerar o par de chaves no servidor e copiar a chave privada para o cliente . Isso é totalmente atrasado. Em vez disso, o par de chaves deve ser gerado no cliente e a chave pública copiada para o servidor. Existe até mesmo um script de ajuda ssh-copy-id que faz exatamente isso, e ao longo do caminho garante que todas as permissões estejam corretas, o cliente obtém a chave de 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 neste caso você realmente deve fazer isso de um terceiro host, ou idealmente de um sistema de gerenciamento de configuração como o fantoche.

    
por 27.03.2015 / 00:53
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 tiver um canal seguro, a chave será presumivelmente transferida de forma clara pela Internet (HTTP, FTP, email, etc). Você pode usar o HTTPS, mas se você não tiver um certificado real, ele pode ter o MITM para farejar a chave. Apenas faça do jeito que você deveria; gere o par de chaves na máquina do 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 ele não tenha sido modificado na transferência.

    
por 27.03.2015 / 11:35

Tags