Come puoi registrare ogni comando digitato


24

Come puoi registrare tutti i comandi che qualcuno ha inserito nella shell?

Ti chiedo sia per proteggerti se sei connesso al server di qualcun altro e qualcosa si rompe, sia se qualcun altro è connesso al tuo server (intenzionalmente o maliziosamente).

Anche un principiante può storia di bypass con unset historyo creare una nuova shell per nascondere le proprie tracce.

Sono curioso di sapere in che modo gli amministratori senior di Linux tengono traccia dei comandi immessi / delle modifiche apportate al sistema.

Risposte:


29

Dai un'occhiata a auditd . Se aggiungi

-a exit,always -F arch=b64 -S execve
-a exit,always -F arch=b32 -S execve

ad /etc/audit/audit.rulesogni comando eseguito verrà registrato. Vedi: http://whmcr.com/2011/10/14/auditd-logging-all-commands/

Quindi inviarlo a un server syslog.


Sicuramente execvenon è l'unica scala di accesso che devi registrare. Perché no execvp? Oppure execl? ecc.
ore 2

In realtà, ho notato che nella pagina man execdice che "La exec() famiglia di funzioni sostituisce l'attuale immagine di processo con una nuova immagine di processo. Le funzioni descritte in questa pagina di manuale sono front-end per execve(2)". Quindi, anche se non sono sicuro di execveatpotermi sentire sicuro della execfamiglia.
ore 2

5

Puoi usare il comando script . Questo comando non è incluso in POSIX, ma ti sarà utile archiviare in un file tutte le sequenze di tasti, nonché i messaggi di output e di errore. È possibile in seguito visualizzare il file. Se stai facendo un lavoro importante e desideri tenere un registro di tutte le tue attività, dovresti richiamare questo comando immediatamente dopo aver effettuato l'accesso:

$ script
Script avviato, il file è dattiloscritto
$ _ Nota che questa è un'altra shell - figlia della shell di login

Il prompt ritorna e tutti i tasti premuti (incluso quello usato per il backspace) che ora inserisci qui vengono registrati nel file 'dattiloscritto'. Al termine della registrazione, è possibile terminare la sessione inserendo exit .
Nota: se si immette il nome file dello script , la sessione verrà memorizzata nel nome file del file anziché in dattiloscritto , ovvero, dattiloscritto è l'impostazione predefinita se non viene specificato alcun nome file specifico.

È ora possibile utilizzare il nome file o il dattiloscritto di gatto , a seconda del caso, per visualizzare la sessione registrata.

Se si desidera aggiungere una nuova sessione a un vecchio file utilizzare: script -a Aggiunge la nuova sessione al dattiloscritto, la stessa regola predefinita si applica anche qui

Questo è un modo in cui un amministratore di sistema può tenere traccia delle sessioni. Spero sia stato informativo e utile. Saluti!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.