É possível fazer com que o OpenSSH registre a chave pública usada na autenticação?


27

Eu tenho um sistema de produção em que 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 em servidores de produção.

Para fins de auditoria, quero poder saber quem está conectado a que horas, e como usamos as chaves SSH para fazer login, parece lógico rastrear isso (como não há outro identificador para rastrear).

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

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

Respostas:


33

Se você aumentar 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 chave pública específica.


2
Obrigado! Eu preciso confirmar as impressões digitais-chave contra o authorized_keysarquivo, por isso fiz este pequeno script para printout as impressões digitais de chaves autorizadas:(p="$(mktemp)";cat ~/.ssh/authorized_keys|while IFS="$(printf "\n")" read key; do echo $key > $p; ssh-keygen -lf $p; done; rm -f $p)
Guss

Notei que o SSH agora registra a chave duas vezes para cada logon - alguma idéia de por que e / ou como obtê-la para logar uma vez?
Guss

Ora, esse é um nível de detalhe com o qual não estou familiarizado. Você pode pará-lo, provavelmente não sem mexer no código-fonte.
user9517 suporta GoFundMonica

2
Este tópico parece relevante. Ele encontra a chave correspondente duas vezes: uma vez para determinar se a chave seria aceitável ou não, e uma segunda vez para verificar a assinatura que o cliente fornece.
mpontillo

3

Se seu pessoal estiver 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

É uma boa idéia, infelizmente, uma das razões pelas quais desejo registrar isso é o fato de estar usando os comandos allowed_keys para os usuários que desejo registrar, e eles normalmente não recebem um shell bash.
Guss

0

Experimente brincar com o LogLevelparâmetro sshd_config. Para detalhes, consulte man sshd_config


0

3
Bem-vindo à falha do servidor! Geralmente, gostamos de respostas no site para poder se manter por conta própria - os links são ótimos, mas se esse link quebrar, a resposta deve ter informações suficientes para continuar sendo útil. Considere editar sua resposta para incluir mais detalhes. Veja o FAQ para mais informações.
SLM
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.