Soluzione 1:
Aggiungi questa riga alla tua configurazione pam responsabile degli accessi (la sua autenticazione di sistema su distribuzioni basate su redhat)
session required pam_tty_audit.so enable=*
Per scoprire cosa è stato fatto, puoi usare.
ausearch -ts <some_timestamp> -m tty -i
Questo produce un output come questo:
type=TTY msg=audit(11/30/2011 15:38:39.178:12763684) : tty pid=32377 uid=root
auid=matthew major=136 minor=2 comm=bash data=<up>,<ret>
L'unico svantaggio di questo è che può essere un po' difficile da leggere, ma è molto meglio della maggior parte delle soluzioni proposte poiché in teoria potrebbe essere utilizzato per registrare un'intera sessione, verruche n tutto.
Modifica:Oh e puoi usare aureport per generare un elenco che può essere più utile.
# aureport --tty
...
12. 11/30/2011 15:50:54 12764042 501 ? 4294967295 bash "d",<^D>
13. 11/30/2011 15:52:30 12764112 501 ? 4294967295 bash "aureport --ty",<ret>
14. 11/30/2011 15:52:31 12764114 501 ? 4294967295 bash <up>,<left>,<left>,"t",<ret>
Soluzione 2:
La migliore soluzione al tuo problema sarebbe il sistema di controllo integrato di Linux. Usa man 8 auditd
oppure controlla questa pagina per maggiori informazioni:http://linux.die.net/man/8/auditd.
Inoltre, puoi dare un'occhiata a questo tutorial:anche se è leggermente al di fuori dell'ambito della tua domanda, mostra come funziona il sistema di controllo.
Soluzione 3:
Potresti usare snoopy.
È una semplice libreria di registrazione dei comandi e non una soluzione di controllo adeguata (facilmente aggirata). Divulgazione:sono l'attuale manutentore snoopy.
Soluzione 4:
Un trucco meno noto, ma sicuramente il più fantastico è semplicemente usare le capacità di controllo integrate di sudo
. Sudo viene fornito con un sudoreplay
comando che semplifica la riproduzione delle sessioni. Trasmetterà anche vim
sessioni (come suggerito).
Ecco come usarlo in pochi semplici passaggi:
- Installa
sudosh
sul tuo sistema; questo è uno shell wrapper attorno alsudo
comando che rende un utentesudo
stessi (nonroot
) e può essere utilizzato come shell di login di sistema -
Abilita
sudo
registrazione. Modifica/etc/sudoers.d/sudosh
:Defaults log_output Defaults!/usr/bin/sudoreplay !log_output Defaults!/sbin/reboot !log_output
-
Aggiungi questo comando a
/etc/shells
per consentire gli accessi che lo utilizzano:/usr/bin/sudosh
Suggerimento :per impedire agli utenti di utilizzare altre shell per il login, rimuovi quelle altre shell da
/etc/shells
. -
Aggiorna l'utente
foobar
per usare ilsudosh
shell.chsh -s /usr/bin/sudosh foobar
Per informazioni più dettagliate, vedere:https://github.com/cloudposse/sudosh/