Gerenciando vários servidores, atualmente acima de 90, com 3 devops via Ansible. Tudo está funcionando muito bem, no entanto, há um problema de segurança gigante no momento. Cada devop está usando sua própria chave ssh local para obter acesso diretamente aos servidores. Cada devop usa um laptop e cada laptop pode ser comprometido, abrindo toda a rede de servidores prod até um ataque.
Estou procurando uma solução para gerenciar centralmente o acesso e, assim, bloquear o acesso a qualquer chave. Não é diferente de como as chaves são adicionadas ao bitbucket ou ao github.
No topo da minha cabeça, eu assumiria que a solução seria um túnel de uma máquina, o gateway, para o servidor de prod desejado ... ao passar o gateway, o pedido pegaria uma nova chave e usaria para obter acesso ao prod servidor. O resultado seria que podemos matar de forma rápida e eficiente o acesso a qualquer devop em segundos, apenas negando o acesso ao gateway.
Essa é uma boa lógica? Alguém já viu uma solução por aí para impedir esse problema?
fonte
Respostas:
Isso é muito complicado (verificar se uma chave tem acesso a um servidor de prod específico). Use o servidor de gateway como host de salto que aceita todas as chaves válidas (mas pode remover facilmente o acesso a uma chave específica que remove o acesso a todos os servidores por vez) e adicione apenas as chaves permitidas a cada servidor respectivo. Depois disso, verifique se você pode alcançar a porta SSH de todos os servidores apenas através do host de salto.
Essa é a abordagem padrão.
fonte
Os engenheiros não devem estar executando diretamente do laptop, a menos que este seja um ambiente de desenvolvimento / teste.
Em vez disso, tenha um servidor central que retire os runbooks do git. Isso permite controles adicionais (quatro olhos, revisão de código).
Combine isso com um bastião ou host de salto para restringir ainda mais o acesso.
fonte
A Netflix implementou sua configuração e lançou algum software gratuito para ajudar nessa situação.
Veja este vídeo https://www.oreilly.com/learning/how-netflix-gives-all-its-engineers-ssh-access ou esta apresentação em https://speakerdeck.com/rlewis/how-netflix-gives- all-its-engineer-ssh-access-to-instance-running-in-production com o ponto principal:
O software deles está disponível aqui: https://github.com/Netflix/bless
Algumas dicas interessantes, mesmo que você não implemente toda a solução:
fonte
O SPS do OneIdentity (ex-Balabit) é exatamente o que você precisa neste cenário. Com esse dispositivo, você pode gerenciar as identidades do usuário em praticamente qualquer máquina, rastrear o comportamento do usuário, monitorar e alertar e indexar o que os usuários estão fazendo para análises posteriores.
fonte
Minha sugestão é proibir o acesso SSH das máquinas dos usuários.
Em vez disso, você deveria
O modelo de execução de amostra,
OU
Se você estiver limitado aos recursos do servidor, o mesmo servidor Jenkins também poderá hospedar o Git (scm-manager), embora exista um risco adicional à segurança se uma das máquinas do desenvolvedor estiver infectada. Você pode atenuar isso desconectando o servidor Jenkins da Internet e resolver dependências Ansible localmente.
fonte