Como descobrir qual chave foi usada para autenticação de chave pública?

7

Vários desenvolvedores usando uma conta compartilhada em um servidor de teste, usando a autenticação de chave pública. Existe alguma maneira de descobrir qual chave foi usada para autenticação (por exemplo, o comentário das chaves)?

    
por Gyongyeee 17.12.2009 / 14:21

4 respostas

5

Você está querendo descobrir isso depois de algo que já aconteceu (forense) ou você está querendo fazer isso para que você possa registrar quem faz o quê?

Para análise forense: No meu sistema Fedora, /var/log/secure contém registros de cada autenticação de chave pública e nome de usuário, mas não diz qual chave foi usada. Você provavelmente está sem sorte aqui

Para auditoria futura: Você pode usar o arquivo authorized_keys para definir os comandos para os quais cada login está restrito e, em seguida, executar um programa que registre a autenticação (e possivelmente comandos subsequentes, usando algo como sudoscript ):

If the options phrase at the beginning of a line contains the keyword command="string", then any ssh connection that authenticates using that particular key will only run the command specified, even if the command line it was given specified another command.

Deve ser dito, no entanto, provavelmente faz mais sentido configurar várias contas e, em seguida, configurar uma área de acesso compartilhado ...

    
por 17.12.2009 / 15:36
5

...using a shared account...

Obrigado por nos dar um exemplo perfeito para apontar quando explicar por que essa é uma má ideia. ; -)

Sério, quer que você queira não pode ser feito afaik. E se por "comentário das chaves" você quer dizer o comentário que está no arquivo id_rsa após a chave, também é um não-ir. É um comentário, não é enviado para o servidor do outro lado.

Realmente. Configurar várias contas.

    
por 17.12.2009 / 15:50
4

Se você definir o sshd para registrar em um nível bastante detalhado, a impressão digital da chave usada para efetuar login será impressa. Preenche seus registros com muita rapidez.

    
por 17.12.2009 / 17:52
1

Para auditabilidade e se o seu pessoal está usando o ssh-agent, você poderia colocar isso no seu .bashrc:

SSH_KEY_NAME=$(ssh-add -L | cut -d' ' -f 3 || 'unknown')
if [[ ! $SSH_KEY_NAME ]]; then SSH_KEY_NAME="no agent"; fi
echo '/bin/date' $SSH_KEY_NAME >> ~/.login.log
    
por 22.01.2013 / 14:56