Cada novo usuário que se conectar gera uma nova sshd
sessão com um PID específico. Você pode usar pstree
para imprimir quais comandos são herdados de qual sshd
sessão e depois fazer a verificação cruzada desse PID /var/log/auth.log
.
Exemplo (anonimizado): Entrei em um servidor remoto com 3 sessões simultâneas, com o mesmo usuário remoto. Agora eu quero descobrir de qual IP o cliente veio que executou o comando watch date
.
$ pstree -p | grep watch
| |-sshd(15243)---sshd(15342)---bash(15343)---watch(15450)
$ sudo grep 15243 /var/log/auth.log
Mar 7 15:37:29 XXXXXXXXXX sshd[15243]: Accepted publickey for XXXXXXXXXX from 12.34.56.78 port 48218 ssh2
Mar 7 15:37:29 XXXXXXXXXX sshd[15243]: pam_unix(sshd:session): session opened for user XXXXXXXXXX by (uid=0)
Mar 7 15:37:44 XXXXXXXXXX sudo: XXXXXXXXXX : TTY=pts/7 ; PWD=/home/XXXXXXXXXX ; USER=root ; COMMAND=/bin/grep 15243 /var/log/auth.log
pstree -p
mostra que o watch
comando é herdado do sshd
PID 15243. grep
ing para esse PID /var/auth/auth.log
mostra que foi o IP 12.34.56.78 que iniciou esta sessão. Portanto, este também é o usuário que iniciou watch
.
Quanto a encontrar history
especificamente esse usuário, isso não pode ser feito pelo que posso ver quando todos os usuários remotos estão usando o mesmo usuário SSH local. Além disso, ele pode ser facilmente falsificado / inativado / etc., Portanto, não é realmente confiável. Se ele estiver salvo no arquivo de histórico, você poderá procurar o cp
comando e retroceder no arquivo, mas se não estiver lá, não há muito o que fazer.
grep: /var/log/auth.log: No such file or directory
:-(/var/log/secure
./var/log/auth.log.1
, etc., existir, tente-os para ver se eles contêm as informações. Depois, reiniciersyslog
(sudo service rsyslog restart
) e veja se ele começa a preencherauth.log
, o que já deveria estar fazendo. O SSHD efetua logon/var/log/auth.log
por padrão no Ubuntu , portanto, a menos que você tenha alterado explicitamente os destinos de log via/etc/ssh/ssd_config
ou/etc/syslog.conf
(você pode verificar em qual arquivo oauth
nível é registrado aqui), ele deve estar lá. Caso contrário: algo está acontecendo :-).Você pode adicionar essas duas linhas ao / etc / profile ou / etc / bashrc para registrar todos os comandos executados pelo bash:
Isso usará o syslog para registrar todos os comandos executados junto com o usuário que fez e o endereço IP em um formato como este:
Além disso, você pode adicionar a linha abaixo à sua configuração do syslog (/etc/syslog.conf) para redirecionar as mensagens local3 para um arquivo específico.
fonte
syslog-ng
como melhoria e o arquivo de configuração é/etc/syslog-ng/syslog-ng.conf
.Você pode usar snoopy para isso.
Você precisaria configurá-lo para registrar a variável de ambiente personalizada (SSH_CLIENT) especificando IP =% {env: SSH_CLIENT} na definição do formato da mensagem de log (sinalizador ./configure ou configurável no snoopy.ini desde a versão 2.x).
Divulgação: mantenedor do Snoopy aqui.
fonte
Supondo que você esteja usando o bash,
history
mostrará apenas o SEU histórico de linha de comando. Por padrão, ele lê~/.bash_history
o histórico. Observe que isso pode ser alterado (embora altamente improvável) fazendo algo comoHISTFILE=/home/userFoo/.my_alt_history
.Supondo que você seja root na caixa, você pode verificar todos os diretórios do usuário e ler o histórico deles para ver quem está executando esse comando.
fonte
ps -aux | grep "cp file1.sh file2.sh"