Ogni nuovo utente che si connette genera un nuovo sshd
sessione con un PID specifico. Potresti usare pstree
per stampare quali comandi sono ereditati da quale sshd
sessione, quindi eseguire un controllo incrociato di questo PID in /var/log/auth.log
.
Esempio (anonimizzato):ho effettuato l'accesso a un server remoto con 3 sessioni simultanee, con lo stesso utente remoto. Ora voglio scoprire da quale IP proviene il client che ha eseguito il 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 che il watch
comando è ereditato da sshd
con PID 15243. grep
ing per questo PID in /var/auth/auth.log
mostra che è stato l'IP 12.34.56.78 ad avviare questa sessione. Pertanto questo è anche l'utente che ha avviato watch
.
Per quanto riguarda la ricerca di history
per questo utente in particolare, non può essere fatto da quello che posso vedere quando tutti gli utenti remoti utilizzano lo stesso utente SSH locale. Inoltre, può essere facilmente contraffatto/inattivato/ecc., quindi non è realmente affidabile. Se viene salvato nel file della cronologia, puoi semplicemente cercare cp
comando e guarda indietro nel file, ma se non c'è, allora non c'è molto da fare.