Vários usuários, vários servidores, gerenciamento de chaves SSH

4

Aqui está a situação.

Tenho 5000 servidores divididos em "grupos" de 100.
Cada "grupo" tem 1 par de chaves SSH, que permitirá o acesso a qualquer um dos servidores do grupo. Eu tenho 60 usuários (alguns humanos, outros não) que precisam acessar todos os 5000 servidores. Os usuários estão todos em computadores diferentes, alguns PCs (putty), alguns Linux (ssh).

manualmente: Adicionar um novo servidor a um "grupo" parece ser simples. Adicionar / atualizar um usuário seria um pesadelo. Adicionar / atualizar um novo grupo seria um pesadelo. Sincronizar chaves de grupo para estações de usuários seria um pesadelo.

ssh-agent / pageant funciona para um único usuário, em uma única estação de trabalho, mas não parece ser escalável.

Existe algum software que possa lidar com esse gerenciamento? Algum tipo de proxy, talvez? Ou protocolo automatizado de recuperação de chaves baseado em servidor?

EDITAR

Agradeço a ajuda até agora, mas acho que não estou sendo claro ou não entendo as sugestões.

Mais algumas informações: Cada um dos servidores é um sistema remoto sem acesso à Internet e a velocidade de conexão é geralmente lenta. Cada servidor possui apenas uma entrada em seu arquivo authorized_keys. Eu não quero ou preciso de chaves de usuário individuais. Eu só quero que muitas pessoas diferentes usem a mesma chave para cada grupo. No momento, estamos usando a autenticação por senha e mantemos uma lista de senhas para cada grupo em um pedaço de papel. Isso funciona para a nossa equipe. Mas isso não funcionará se mudarmos para a autenticação baseada em chave.

As sugestões ainda fazem sentido? Se sim, você pode ser mais específico quanto aos detalhes da implementação.

    
por AllenKll 22.04.2014 / 00:22

4 respostas

1

Except it puts its own key on to the server, where instead I need it to use the keys I provide it.

Eu tive algumas pessoas perguntando por isso. Eu adicionei uma maneira de especificar o par de chaves na última versão.

link

link

Deixe-me saber se você tem algum problema. Thx!

    
por 11.05.2014 / 15:54
2

Confira Userify , gerencia contas de usuário, chaves SSH e funções sudo e não precisa de um servidor de diretório central que possa ser desativado ( trancando você de todas as suas instâncias ... esteve lá.)

É muito fácil implantar usando os Dados do usuário da AWS (na guia Avançado de lançamento da instância) ou colocá-los no script UserData para um grupo de escalonamento automático ou sempre que você estiver lançando uma instância manualmente, o que é ótimo porque funciona antes mesmo de fazer o login. (Ou você pode simplesmente colar o one-liner no console do seu servidor, mas isso não é tão divertido ...)

Ele suporta Chef, Puppet, Ansible, CloudFormation / CloudInit e TerraForm para implantação, e cada usuário (desenvolvedor / admin / etc) obtém seu próprio login na web para atualizar várias chaves (basta colar). interface decente, bastante indolor.

    
por 13.11.2014 / 06:17
1

Você pode usar o LDAP com chaves públicas link

Isso tornaria significativamente mais fácil re-emitir uma chave para um usuário se alguém ficar comprometido. A chave privada de cada usuário pode ser gerenciada por esse usuário ou salva no armazenamento apenas para o qual ele tem acesso (por exemplo, diretório inicial).

    
por 22.04.2014 / 08:34
1

Parece que o Keyholder seria uma boa opção para suas necessidades.

Na página da wiki :

Keyholder is a set of scripts that allow a group of users to use an SSH key without sharing the private key with the members of the group. This is accomplished by running a locked-down instance of ssh-agent, and running ssh-agent-proxy in front of it.

Depois de executar e configurar o proxy ssh-agent, os usuários são autenticados configurando SSH_AUTH_SOCK para apontar para o soquete do proxy e, em seguida, ssh-agent-proxy permitirá que os usuários autentiquem usando uma chave que eles estão autorizados a usar sua associação ao grupo unix local.

A configuração é assim:

---
group-name: ["ssh:key:fingerprint"]

E as chaves são armazenadas separadamente, somente acessíveis pelo usuário root.

Alguém com acesso ao root deve "armar" o serviço keyholder uma vez após a reinicialização do servidor, e qualquer pessoa com associação de grupo apropriada pode usar as chaves armazenadas no keyholder ssh_agent.

Atualização:

Desde que escrevi originalmente esta resposta, o keyholder foi extraído do repositório de fantoches da Wikimedia e recebeu o tratamento adequado para se tornar um projeto autônomo. Deve ser muito mais fácil de usar agora, especialmente para usuários do Debian, pois os scripts e metadados do pacote debian estão incluídos em um filial do repositório de origem .

    
por 05.05.2016 / 20:07

Tags