Gerenciamento de chaves SSH em ambientes grandes e mistos (Linux)

Gerenciamento de chaves SSH em ambientes grandes e mistos (Linux)

Em todas as empresas em que trabalhei, sempre foi difícil gerenciar chaves ssh. Tínhamos diferentes maneiras de gerenciá-los. Mas principalmente eram alguns sistemas CM como puppet/chef/ansible ou apenas cópia manual de chaves ou até mesmo alguns scripts bash feios:D

Também ouvi dizer que algumas pessoas usam LDAP ou qualquer banco de dados como armazenamento de chaves ssh. Mas ainda assim você precisa de alguma automação adicional aqui, como alguma ferramenta CM para colocar/excluir chave no servidor.

Então a questão é: existe alguma maneira legal e moderna de fazer isso que eu não conheça? Quão grandes empresas de TI (como Google ou Facebook, etc.) estão lidando com chaves?

Responder1

(Meta: IMO, esta questão não é baseada em opinião.)

Se você estiver em versões Linux/Unix bastante modernas com um OpenSSH bastante recente, poderá usar certificados OpenSSH. Se você quiser uma sensação de "bilhete" com o MFA, poderá emitir certificados OpenSSH temporários.

O ponto com os certificados OpenSSH é que a única coisa que precisa ser instalada no lado do sshd é a chave pública do SSH-CA referenciada pela diretivaTrustedUserCAKeys em sshd_config.

Com as diretrizesDiretores Autorizados*você também pode aceitar um conjunto de nomes principais (basicamente os nomes de usuário) em certificados OpenSSH para outra conta de usuário local.

Os certificados OpenSSH não são certificados X.509, eles têm um formato diferente especificado no documento da árvore de origemPROTOCOLO.certkeys.

Você encontrará várias páginas da web sobre como usarssh-keygenassinar chaves públicas com um SSH-CA (por exemploUsando certificados SSH).

Implementei um SSH-CA tão pequeno para um cliente executando como um serviço da web para emitir certificados de usuário temporários com base na autenticação multifator (LDAP e OTP).

Você encontrará diversas implementações de código aberto nos locais habituais. Deliberadamente não forneço uma lista aqui, porque depois de analisar alguns deles, implementei a minha própria e, portanto, não quero endossar uma implementação específica. Isso não significa que essas implementações não funcionem. Eles simplesmente não atendiam aos requisitos específicos do cliente.

Embargo:

Atualmente só funciona comOpenSSHoubibliotecano lado do cliente.massaainda não suporta isso. Também não há suporte em dispositivos de rede e outros dispositivos especiais.

PS: Ainda assim, eu recomendo usar um gerenciamento de usuários decente baseado em LDAP, que fornecerá mais do que você precisa.

informação relacionada