É possível obter o OpenSSH para registrar a chave pública que foi usada na autenticação?

25

Eu tenho um sistema de produção no qual várias pessoas diferentes podem fazer login em uma única conta - a conta é para o aplicativo e não para a pessoa, pois não temos contas pessoais nos servidores de produção.

Para fins de auditoria, eu quero ser capaz de dizer quem está logado a que horas, e como usamos as chaves SSH para entrar, parece lógico rastrear isso (já que não há outro identificador para rastrear).

Quando o SSH autentica um usuário, ele registra o nome de usuário no log de segurança do sistema, mas não registra qual das chaves públicas autorizadas foi usada no login. É possível fazer com que o OpenSSH também informe qual chave pública foi usado, ou talvez apenas o comentário associado a essa chave?

O sistema operacional que está sendo usado é o CentOS 5.6, mas eu também gostaria de saber se é possível em outros sistemas operacionais.

    
por Guss 19.07.2011 / 11:53

4 respostas

33

Se você elevar o LogLevel para VERBOSE em / etc / sshd / sshd_config, ele registrará a impressão digital da chave pública usada para autenticar o usuário.

LogLevel VERBOSE

então você recebe mensagens como esta

Jul 19 11:23:13 centos sshd[13431]: Connection from 192.168.1.104 port 63529
Jul 19 11:23:13 centos sshd[13431]: Found matching RSA key: 54:a2:0a:cf:85:ef:89:96:3c:a8:93:c7:a1:30:c2:8b
Jul 19 11:23:13 centos sshd[13432]: Postponed publickey for user from 192.168.1.104 port 63529 ssh2
Jul 19 11:23:13 centos sshd[13431]: Found matching RSA key: 54:a2:0a:cf:85:ef:89:96:3c:a8:93:c7:a1:30:c2:8b
Jul 19 11:23:13 centos sshd[13431]: Accepted publickey for user from 192.168.1.104 port 63529 ssh2

Você pode usar

 ssh-keygen -lf /path/to/public_key_file

para obter a impressão digital de uma determinada chave pública.

    
por 19.07.2011 / 16:06
3

Se o seu pessoal está usando o ssh-agent, você pode 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 / 13:58
0

Tente brincar com o parâmetro LogLevel em sshd_config . Para detalhes, consulte man sshd_config

    
por 19.07.2011 / 12:03
0

Uma postagem no blog responde à sua pergunta:

    
por 17.06.2013 / 10:57