Segurança quando as chaves privadas SSH são perdidas

7

O usuário A tem duas chaves privadas SSH e, com o tempo, usou essa chave pública em diversos servidores Ele perdeu um deles e criou um novo par.

Como o Usuário A me informa (o administrador do sistema), que ele perdeu sua chave e como eu gerencio todos os servidores aos quais ele tinha acesso (eu não tenho uma lista de todos os servidores que o Usuário A tem acesso) para). Em outras palavras, como faço para lembrar a chave pública associada a essa chave privada.

Na autenticação baseada em LDAP, todos os servidores se comunicariam com um único repositório de servidores para autenticação e se eu removesse o acesso ou modificasse a senha no servidor, todos os sistemas que usam esse LDAP para autenticação serão protegidos quando o usuário perder sua senha .

    
por Shree Mandadi 24.03.2012 / 14:32

5 respostas

4

Qual versão do sshd você está usando? O OpenSSH 5.4 aparentemente tem uma opção de revogação de chave:

* Add the ability to revoke keys in sshd(8) and ssh(1). User keys may
be revoked using a new sshd_config(5) option "RevokedKeys". Host keys 
are revoked through known_hosts (details in the sshd(8) man page).   
Revoked keys cannot be used for user or host authentication and will  
trigger a warning if used.

Se você estiver usando uma versão anterior, provavelmente precisará executar todos os arquivos authorized_keys possíveis em todos os servidores para procurar e remover a chave pública suspeita. Isso incluiria qualquer conta em que o User-A pudesse ssh, incluindo o root. Isso pressupõe que você não está usando o gerenciamento centralizado de authoried_key.

    
por 24.03.2012 / 15:10
1

Uma correção de curto prazo possível para essa situação é usar alguma ferramenta de gerenciamento de configuração ( ansible pode ser uma boa aposta aqui).

Você pode usar o módulo authorized_key ( link ) para remover um (ou mais) público-alvo específico impressão digital da chave do arquivo authorized_key de um determinado usuário.

Um exemplo está faltando para suas necessidades, mas algo assim poderia funcionar:

- name: Set authorized key took from url
  authorized_key:
    user: charlie
    state: absent
    key: https://github.com/charlie.keys

Você também pode (pelo menos ao menos) executar um comando para criar uma lista de todos os usuários em um sistema, consultando / etc / passwd.

Você também pode criar uma nova lista de permissões e remover tudo o mais, mas isso pode não ser prático na sua situação.

Os documentos ansiosos fornecem um exemplo aproximado de como isso poderia funcionar:

- name: Set authorized key, removing all the authorized key already set
  authorized_key:
    user: root
    key: '{{ item }}'
    state: present
    exclusive: True
  with_file:
    - public_keys/doe-jane

A longo prazo, você pode querer considerar ter jumphosts - eu achei que teleport seja bastante bom.

    
por 14.03.2017 / 09:58
0

No OpenSSH e no Putty, você pode regenrar a chave pública a partir da chave privada, mas não o contrário.

Use ssh-keygen -y -f nome do arquivo

Em PuttyGen, importe a chave e ela mostrará a chave pública.

    
por 24.03.2012 / 15:07
0

Se esta for uma chave de usuário (como parece ser), ela estará localizada no arquivo authorized_keys para os userids aos quais o usuário teve acesso. Você precisará procurar o subdiretório .ssh dos diretórios base. (Se você tiver auto-contido diretórios home, você só precisa procurar o diretório em um servidor, caso contrário, você precisa procurar todos os servidores que eles poderiam ter acesso.)

O problema será encontrar a primeira cópia da chave antiga. O diretório pessoal do usuário em sistemas comumente acessados será um bom lugar para começar. Uma vez que você tenha a chave, você pode fazer isso em outros sistemas e userids. A pesquisa pelo valor da chave, em vez do comentário, terá mais chances de encontrar todas as chaves.

    
por 25.03.2012 / 05:55
0

how do I recall the public key associated with this private key.

Embora a revogação de chaves SSH certamente não seja uma má ideia, a melhor solução (ou mais escalonável) é implementar o MFA (autenticador de vários fatores, conhecido como Two Factor Authentication). Isto tem o efeito de desvalorizar a chave, porque o usuário não pode logar a menos que satisfaça (1) fator adicional.

Existem algumas soluções de código aberto, como o Google Authenticator e o Oath. Em seguida, uma solução híbrida de código aberto / comercial como Duo. Com o Duo, você pode até mesmo delimitar logins e enviar notificações.

Para uma implementação de exemplo 100% funcional, confira este bastião implementado como um contêiner do Docker: link

    
por 14.03.2017 / 05:24