Gerenciamento prático de chaves SSH

3

Como muitos usuários sabem, eu corro muitos servidores Debian, para organizações pessoais, de trabalho e voluntárias. Recentemente, vi muitos posts sobre Superusuário e Segurança de TI sobre a desativação de senhas e apenas o uso de autenticação baseada em chaves.

Eu uso a autenticação baseada em chave para todos os meus root de acesso do meu servidor pessoal, meu laptop de trabalho e o computador que uso a maior parte do tempo fora do trabalho. No entanto, para entrar em qualquer um dos servidores que não usam WinSCP (onde tenho minhas chaves salvas, pelo menos no meu PC com Windows), faço login como minha conta de usuário padrão e, em seguida, su para root usando a senha muito longa.

Nos servidores que não gerencio para fins de trabalho, mantenho essas chaves apenas nesses três locais, principalmente para fazer backups. Eu uso senhas muito strongs (na minha opinião), e apenas PermitRootLogin withoutpassword (adoro quando arquivos de configuração me permitem usá-los em sentenças!). Quando eu faço login de outro lugar, eu uso minha conta normal com uma senha strong, porque eu não tenho um lugar onde eu possa manter minhas chaves e puxar para cima se eu precisar logar normalmente de um novo dispositivo .

Eu vejo isso como tendo duas soluções possíveis:

  1. Armazenando as chaves em texto simples ou criptografadas em algum lugar remoto, desabilitando todos os métodos de autenticação com base em senha para os meus servidores. Em caso afirmativo, onde e como posso armazená-los com segurança para que eles não fiquem comprometidos?
  2. Uso de uma senha strong de usuário regular e alteração a cada 90 dias. Esta é uma boa prática, tenho certeza, mas minha memória é uma droga. Tenho certeza de que continuaria usando a mesma senha de qualquer maneira, apenas por puro hábito, o que quebra todo o sentido de fazer isso.

Eu realmente gostaria de usar o método 1, mas não sei qual seria a melhor prática com tantos servidores, e muitos deles usando senhas diferentes apenas para INICIAR o login de um novo local. Por exemplo, uso regularmente meu celular para fazer um túnel para casa ou para verificar o status de um serviço em um site remoto.

    
por Canadian Luke 03.02.2016 / 06:55

1 resposta

1

Tanto a experiência quanto a pesquisa mostraram que as senhas mais seguras são aquelas grande em comprimento, em vez de complexo , o que na verdade é uma droga para aqueles cuja memória é péssima (eu incluído!). Portanto, na minha opinião, usar a autenticação baseada em chave é o caminho certo a seguir quando se trata de gerenciar um grande número de servidores.

Ao mesmo tempo, qualquer coisa envolvendo segurança e armazenando remotamente na mesma sentença geralmente causa irritação nos ouvidos. Não estou dizendo que qualquer lugar remoto seja potencialmente inseguro, mas você não pode saber se realmente é. Por outro lado, em termos de praticidade, você terá para armazenar a chave SSH em um local remoto.

Então, tendo esses ingredientes todos misturados, eu tenho duas sugestões:

Use um gerenciador de configuração de TI

Exemplos são: Puppet, servidor Chef ou similares.

Você menciona que tem um servidor pessoal. Provavelmente este é o lugar menos pior para hospedar seu servidor de configuração central. Você poderia criar um módulo que salvaria sua chave SSH de forma criptografada e permitiria que seu computador pessoal, seu laptop de trabalho e novos dispositivos em potencial fossem implantados.

Nós usamos o servidor Chef para realizar essas tarefas. Ele tem um recurso chamado de bolsas de dados e muito interessante, chamado de pacotes de dados criptografados que, de fato, permitem armazenar todas as suas senhas , Chaves SSH e quaisquer dados sensíveis.

Independentementedogerenciadordeconfiguraçãoescolhido,vocêpodeusá-loparaimplantaraschavesnoscomputadorespessoaisedosservidores.

Essaabordagemtemumagrandevantagem:seporqualqueralteraçãosuachaveprivadaforcomprometida,vocêaalteraemumlugareelaseráimplantadaemtodososservidoreseclientessemperdertempo.

Temumladonegativo,noentanto.Sevocêplanejaacessarseusservidoresapartirdedispositivosmóveis,comotelefonescelulares,tablets,etc.,provavelmentenãoteráumChef|Puppet|Coloque-o-seu-configurador-de-configuração-favorito-aquiclientelá.

Maisinformaçõessobreisso:

Use um gerenciador de arquivos local criptografado

Existem alguns softwares que criptografam suas chaves, independentemente de serem senhas, chaves SSH ou dados bancários. Isso tem uma desvantagem evidente: para proteger suas senhas, você precisa de uma senha (e provavelmente desejará uma senha muito boa). De qualquer forma, se você gostar dessa abordagem, poderá salvar sua chave criptografada em um pen-drive e levá-lo para onde for.

Isso tem outro lado negativo em potencial: você pode perder seu pen-drive, alguém pode roubá-lo ... Nesse caso, ele ainda está criptografado, mas você provavelmente desejará ter algumas xícaras de café para mudar a chave SSH em todos os seus servidores e clientes Debian, o que provavelmente levará você a pensar que a abordagem 1 é bem mais escalável.

Em qualquer caso, eu só conheço um software desse tipo que é seguro o suficiente para armazenar todas as suas chaves (a propósito: você pode proteger seu arquivo de senhas com uma senha (como mencionado), um arquivo de chave ou ambos).

Se você gosta dessa abordagem, provavelmente vai querer dar uma olhada em Keepass .

    
por 03.02.2016 / 07:43