Temos muitos sistemas diferentes que são gerenciados por várias pessoas. Optamos por usar a autenticação de chave pública SSH para acessar esses sistemas. Isso funciona muito bem, pois não há necessidade de gerenciar ou compartilhar senhas de contas administrativas, não há necessidade de lembrar senhas para os vários sistemas (apenas a frase secreta para sua chave privada), não há necessidade de interação (digitando senha) com todos os comandos remotos .
O problema é que as chaves públicas instaladas nos sistemas precisam ser gerenciadas de alguma forma. As pessoas vêm e vão, as chaves podem ficar comprometidas, as responsabilidades mudam (uma pessoa autorizada a entrar em um sistema hoje pode ser autorizada a acessar outro amanhã). Atualmente, nós o gerenciamos editando manualmente os arquivos ~ / .ssh / allowed_keys em todas as contas que precisam disso, mas isso é muito trabalhoso e propenso a erros.
Existe alguma ferramenta pronta para gerenciar chaves públicas nesse cenário? Você tem suas próprias soluções? Ou toda essa ideia de gerenciar sistemas dessa maneira é falha?
fonte
Respostas:
Como já mencionado pelo pulegium, qualquer software genérico de gerenciamento de configurações, como Puppet , Chef , Bcfg2 ou cfengine, poderia realizar a tarefa.
Desde o authorized_keys arquivo não é tão complicado, você também pode usar rsync ou um (D) SCM como git ou hg para gerir este arquivo. Você tem o arquivo "mestre" em um de seus servidores e o serve via rsync / git / hg /…. Em qualquer outro servidor, você executa uma tarefa cron que recupera periodicamente a cópia principal (se ela tiver sido alterada) e a copia para o local local correto. Caramba, isso funcionaria mesmo com HTTP ou FTP puro.
A linha inferior é: Tenha uma cópia "principal" do seu arquivo allowed_keys e atualize-o. Permita que os "clientes" (os computadores, que devem ter o arquivo current_keys atual) o busquem no servidor mestre e os implemente localmente.
fonte
Existe um patch disponível para o OpenSSH que permite o uso de chaves públicas de um servidor LDAP, mas isso só faz sentido se as verificações de autenticação / conta também forem feitas no servidor LDAP (que é como meu ambiente está configurado). Além disso, é tão seguro quanto a sua configuração LDAP (então você deseja usar SSL e verificar chaves).
Consulte http://code.google.com/p/openssh-lpk/ para obter o patch e mais detalhes. Por padrão, não conheço nenhum sistema operacional que acompanhe esse patch, mas se você estiver executando o FreeBSD, ele será opcional se você usar o OpenSSH de ports.
fonte
Eu corro uma solução muito fácil, que faz o mesmo com regras de firewall
arquivo de exemplo hosts.conf:
distribut.sh:
isso é toda a mágica :-)
fonte
Atualmente, estou verificando o SSH KeyDB . Destina-se a fazer exatamente isso, administrar funções, servidores e usuários, distribuir chaves de usuário, reunir chaves de host etc. Ele ainda possui algo chamado "locais".
Ainda não resolvi tudo e não tenho certeza se está funcionando totalmente. No entanto, o código está em python e parece ser bastante gerenciável, portanto não deve ser muito difícil limpá-lo e fazê-lo funcionar.
fonte
Não sei ao certo o que você quer dizer com muitos, nem sei se você está disposto a mudar, mas o Kerberos é o dróide que você está procurando. Isso resolverá seus problemas com elegância e autenticará pessoas e máquinas.
fonte
Você tem dois (que geralmente se transformam em 3) problemas diferentes que está tentando resolver:
A autenticação de chave pública é uma boa maneira de autenticar às vezes, mas não trata da autorização. Não gosto de autenticação de chave pública, pois é muito fácil comprometer (especialmente internamente), a menos que você tenha alguns bons controles.
É aí que soluções como o Kerberos entram em ação. No mundo do Windows, o Active Directory resolve esse problema. No mundo Unix, há uma abundância de opções, o que é uma coisa boa e uma coisa ruim.
Eu verificaria o projeto Red Hat FreeIPA , que é um pacote de software que facilita a instalação rápida de um sistema Kerberos / LDAP / DNS do tipo AD.
fonte
Você pode usar o Bcfg2 com bcfg2-accounts para distribuir
authorized_keys
. Como bônus adicional, você terá a capacidade de controlar usuários e grupos.O Bcfg2 também permite a manutenção sem dor
/etc/ssh/ssh_known_hosts
com o SSHbase .fonte
Há também SKM
fonte