É possível descobrir qual chave ssh foi usada para acessar uma conta? Eu tenho uma conta em um servidor ao qual permito que várias pessoas (confiáveis!) Tenham acesso via ssh. Acharia útil saber quem fez login e quando. Eu tenho acesso root para poder ver os logs, mas não parece haver nada lá. Existe alguma opção de configuração que colocará alguma maneira de identificar a chave nos logs?
ssh
logs
authentication
Espaço em loop
fonte
fonte
Respostas:
Se você entrar no arquivo de configuração sshd (normalmente
/etc/ssh/sshd_config
) e alterar a diretiva LogLevel para VERBOSE:... você pode ver algo assim nos logs:
De
man sshd_config
:fonte
sed -ne "/sshd.$PPID.:.*matching DSA key/{s/^.* //g;p;q}" /var/log/auth.log
sed
!q
directiva, linha loja até o final do arquivo ... linha sed tornar-se:sed -ne "/sshd.$PPID.:.*matching DSA key/{s/^.* //g;h};\${x;p}" /var/log/auth.log
. Definitivamente: Eu amo sed!Um pouco semelhante à resposta de @ user37161 . Se a conta compartilhada estiver executando um shell personalizado e o shell precisar saber qual usuário existe, a execução do script "wrapper" poderá não ser suficiente, pois as informações não são passadas para o shell personalizado, exceto por métodos que podem causar problemas de execução. condições.
Em vez disso, você pode usar a
environment=
opção no arquivo allowed_keys para definir uma variável de ambiente, que o shell customizado poderá ler.Dentro do seu
.ssh/authorized_keys
arquivo, acrescente cada linha com um conjunto de variáveis de ambiente, como o seguinte:Em seguida, o shell personalizado, ou qualquer um dos vários scripts rc, pode ler a
$REMOTEUSER
variável e executar a ação apropriada.No entanto, observe que, se você estiver usando um shell padrão, o usuário logado poderá modificar o arquivo para impedir várias coisas. Além disso, há alguns riscos em permitir que os usuários definam variáveis de ambiente como
LDPRELOAD
. Veja asshd_config
documentação sobrePermitUserEnvironment
.fonte
Atualize 31/10/2016 sobre o formato do log
Alguns scripts para instalação adequada
Existe um método utilizável completo para rastrear / registrar conexões ssh por chave, com exceção do nome de usuário.
Introdução
Além da resposta de @Caleb, eu gostaria de compartilhar alguns truques aqui:
Nota: Estou trabalhando no Debian 6.0 .
Instalação do servidor
Nível de log SSHD
Primeiro, assegurando que a configuração do servidor tenha nível de log suficiente:
como root, isso definirá um loggin detalhado e ativo:
Pode ser escrito:
ou em um script sed :
O que poderia ser executado como:
Do que para ativar isso:
Syslog: tornando as impressões digitais legíveis pelo usuário
Agora tire impressões digitais no arquivo legível pelo usuário:
Tente (re) fazer login no ssh para garantir que um novo arquivo
sshdusers.log
seja criado (e contenha algo) e, em seguida,Uso
Isso imprimirá a impressão digital das sessões atuais:
Plug-in para
.bashrc
E, finalmente, há um pequeno complemento para colocar no final do seu
/etc/bash.bashrc
usuário.bashrc
:então, após o login novamente do SSH, você verá:
Nota Em algumas instalações, o arquivo de chave autorizado pode ter um nome diferente, como
$HOME/.ssh/authorized_keys2
...fonte
file
conhecer os tipos de arquivo. Mas, como para humano que navegar sistemas de arquivos, tendo extensões como.pl
,.py
,.sh
,.awk
,.sed
,.tar.gz
, ou mesmo.png.b64.gz
é útil!Suponha que os usuários "joe" e "deb" tenham acesso à conta "x". Em seguida, na conta x,
.ssh_authorized_keys
você adiciona as linhas:Também no script wrapper você pode fazer o que quiser, registrando que a chave privada de joe tem vindo a utilizar
ssh
numa determinada data e hora com o comando$ORIGINAL_COMMAND
.fonte
No fedora 20+, as tentativas e sucessos de login são salvos em /var/log/audit/audit.log. Esse log salva as tentativas de login (falhas e sucessos) e a impressão digital chave usada para a tentativa de login é salva no campo denominado fp.
Você pode comparar a impressão digital da chave com as impressões digitais autorizadas, executando linha por linha através de ssh-keygen -l
Uma explicação detalhada sobre os logins ssh e sua segurança e detecção de intrusão está aqui: http://vpathak.tumblr.com/post/121343814158/fedora-audit-log-with-love-from-russia
fonte
Você pode tentar isso:
fonte
ssh-add -L | awk 'NR==FNR { k=$2;next } /^#/{next} $2==k { print $3;exit} $3==k {print $4;exit} ' - ~/.ssh/authorized_keys
Além de @F. Resposta Hauri, eu preparo o "prompt LoggedIn" útil.
Um arquivo adicional é opcional ($ HOME / .ssh / users):
Esta parte deve ser colada para
/etc/profile
(para todos os usuários) ou para~/.bashrc
Resultado
fonte